RE: Basic programming
- To: mathgroup at smc.vnet.net
- Subject: [mg93583] RE: [mg93576] Basic programming
- From: "David Park" <djmpark at comcast.net>
- Date: Sun, 16 Nov 2008 07:03:30 -0500 (EST)
- References: <18026241.1226748141587.JavaMail.root@m02>
First we extract some financial data and get the minimum and maximum values: djidata = Part[#, 2] & /@ FinancialData["^DJI", {"Jun. 26, 2008", "Nov. 14, 2008"}]; {Min[djidata], Max[djidata]} {8175.77,11782.4} Next we calculate the 10 day trailing standard deviation: dji10daystd = StandardDeviation /@ Partition[djidata, 10, 1]; {Min[dji10daystd], Max[dji10daystd]} {95.562,878.838} Finally we calculate the cumulative standard deviation: djicumstd = Table[StandardDeviation[Take[djidata, {1, i}]], {i, 2, 100}]; {Min[djicumstd], Max[djicumstd]} {49.5963,1134.97} Then I use the Presentations package to plot these all in one plot with a special scale for the standard deviation curves on the right. Needs["Presentations`Master`"] Draw2D[ {ListDraw[djidata], Red, ListDraw[Rescale[#, {0, 1200}, {8000, 12000}] & /@ dji10daystd, DataRange -> {9, 100}, Joined -> True], ListDraw[Rescale[#, {0, 1200}, {8000, 12000}] & /@ djicumstd, DataRange -> {2, 100}, Joined -> True], Black, Text["10 Day", {82, 9500}, {-1, 0}], Text["Cumulative", {86, 11000}, {-1, 0}]}, AspectRatio -> .4, Frame -> True, FrameTicks -> {{Automatic, CustomTicks[ Rescale[#, {0, 1200}, {8000, 12000}] &, {0, 1200, 200, 5}, CTNumberFunction -> (Style[#, Red] &)]}, {Automatic, Automatic}}, FrameLabel -> {{"DJI", "STD"}, {"Days following Jun 26, 2008", None}}, PlotLabel -> Style["DJI and Trailing Standard Deivation", 20], BaseStyle -> {FontSize -> 12}, ImageSize -> 600] Peter Lindsay at the Mathematical Institute in the University of St Andrews [ www.mcs.st-and.ac.uk ] has kindly undertaken to maintain an archive that provides downloadable notebooks and PDF files for various Presentations solutions that have appeared on MathGroup. http://blackbook.mcs.st-and.ac.uk/~Peter/djmpark/html/ David Park djmpark at comcast.net http://home.comcast.net/~djmpark From: BionikBlue [mailto:frankflip at hotmail.com] Hey I'm a beginner in mathematica and I'm trying to code a little something but can't seem to be able to make it work... I know its pretty basic and that's exactly my problem since the mathematica help is a bit overkill for what I need. I have daily stock prices for a stock on a 100 day period, I want to compute the standard deviation for a rolling 10 days period for the whole list of data. So basically, I would like to do something like this : stdev(1;;10) then stdev(2;;11) until stdev(91;;100) and get the results in a list Id also like to get it another way, by starting with only one observation and building my standard deviation calculation until I have my whole rolling period built up, for example : stdev(1) stdev(1,2) stdev(1,2,3) until stdev(1;;10) then same as before, roll the period until the end of dataset and produce a list of the results. Thanks for the help, if what I wrote is not clear enough let me know, Ill try to explain it in more details!