The mistake is the assumption that:

  (x^r)+(y^r) is the same as (x+y)^r

i.e.

   */365 $ +/0.6 0.4 * 3 2 ^ %365
2.55099

   */365 $ (+/0.6 0.4 * 3 2) ^ %365
2.6


Devon McCormick wrote:
> Here's a real-life example I encountered recently.  I've simplified the
> annual return
> numbers to 200% for stocks and 100% for bonds (*3 2, respectively) to make
> the
> math more easily checkable.
> 
> I start with a series of daily returns for a stock and bond index:
> 
>   */stkret=. 365$3^%365    NB. Daily stock returns - triple over the year
> 3
>   */bndret=. 365$2^%365    NB. Daily bond returns - double over the year
> 2
> 
> I want to use the daily returns of a 60/40 stock/bond benchmark based on
> these
> index returns to calculate an annual return:
> 
> NB. 60/40 stock/bond benchmark - naive calculation:
>   */bmkret1=. (0.60*stkret)+0.40*bndret
> 2.5509869
> NB. is demonstrably wrong:
>   0.6 0.4 +/ . * 3 2
> 2.6
> 
> NB. Alternate version (using cumulative returns) gives correct answer:
>   {:bmkretcum=. (0.60**/\stkret)+0.40**/\bndret
> 2.6
> 
> So, I've introduced a noticeable loss of precision simply by multiplying
> each series by a number less than one before accumulating the returns.
> This error is easy to make but harder to catch when using real return
> numbers
> if we don't have some independent calculation of the final result.

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to