Re: How to group data then apply functions to the grouped data?
- To: mathgroup at smc.vnet.net
- Subject: [mg119529] Re: How to group data then apply functions to the grouped data?
- From: DrMajorBob <btreat1 at austin.rr.com>
- Date: Wed, 8 Jun 2011 07:13:09 -0400 (EDT)
> ... find the annualized return for each year, then average > (if you think that's wrong, let me know!). Yes, that is wrong. (*TSX Composite Index*) data = FinancialData["^GSPTSE", {{2001, 3, 31}, {2011, 3, 31}}]; (Divide @@ data[[{-1, 1}, -1]])^(1/10) - 1 0.0632776 6.3% annualized return for the period. If there were in- and out-flows in the period, it would be more complicated. For all I know, the index may ignore dividends paid, etc., making the data useless for this purpose, no matter how you calculate it. Bobby On Tue, 07 Jun 2011 05:46:02 -0500, Tyler <hayes.tyler at gmail.com> wrote: > Hi Everyone: > > Below is a snippet of code to calculate the annualized returns for a > ten year set of data. Ultimately, I want to find the "ten-year > annualized returns." I know, cryptic. But, as I understand it, it is > to find the average annualized return over the last ten years. In > other words, find the annualized return for each year, then average > (if you think that's wrong, let me know!). So in my mind the challenge > before me is to work on the data in one-year chunks (one year defined > as March 31 to March 31) much the same way a SQL query would group the > data. So, the big question, how would any of you suggest I group > efficiently? > > Any suggestions are greatly appreciated. > > Cheers, > > t. > > > (* TSX Composite Index *) > data = FinancialData["^GSPTSE", {{2001, 3, 31}, {2011, 3, 31}}]; > px = data[[;; , 2]]; > dates = data[[;; , 1]]; > period = 252; (* number of trading days *) > (* Arithmetic Returns *) > aret = Differences[px]/Rest[px]; > (* Log Returns *) > lnret = Differences[Log[px]]; > (* Find Annualized Arithmetic Returns - must be a better way to code > this *) > annualizeAret = ( Product[(1 + aret[[i]]), {i, > Length[aret]}])^(period/Length[aret]) - 1 > (* Find Annualized Logarithmic Returns *) > annualizeLNret = Mean[lnret]*(period) > -- DrMajorBob at yahoo.com