Basic Math & Time Value of Money: Exercises


4. Cumulative simple returns. In the previous exercise, you computed the simple returns at a monthly frequency for the S&P500 index. We stored this as a vector named sp500_simple_returns, which has been defined for you in this exercise.

You now want to compute cumulative simple returns, starting at period 1 and extending to each period, t, in the same. Recall that you can compute them between periods 0 and t using the following expression:

\[cumulative\_return_{1t} = (1+R_{1})(1+R_{2}) \cdot \cdot \cdot (1+R_{t}) - 1\]

In R, the cumprod() function can be used to compute the cumulative product for every observation in the sample.


sp500_simple_returns <- c(0.0028467,0.0070683,0.0504281,0.0110606,0.0359878,0.0180858,0.0207628,-0.0149993,0.0494621, -0.031298,0.0297495,0.0445958,0.0280495,0.0235628,-0.0355829,0.043117,0.0069322,0.0062008,0.0210303, 0.0190583,-0.0150799,0.0376553,-0.0155139,0.0232015,0.0245336,-0.0041885,-0.0310408,0.0548925,-0.0173961, 0.0085208,0.0104914,-0.0210118,0.019742,-0.0625808,-0.0264428,0.0829831,0.000505,-0.0175302,-0.0507353, -0.0041284,0.0659911,0.0026994,0.0153295,0.0009061,0.0356098,-0.0012192,-0.0012345,-0.0194256,0.0341744, 0.0182008,0.0178843,0.0371983,-0.0003892,0.0090912,0.0115762,0.0048138,0.0193488,0.0005465,0.0193029, 0.0221882,0.0280826,0.0098316,0.0561787,-0.0389474,-0.0268845,0.0027188,0.0216084,0.0048424,0.0360216, 0.0302632,0.0042943,-0.0694034,0.0178594,-0.091777,0.0786844,0.0297289,0.0179243,0.0393134,-0.0657777, 0.0689302,0.0131282,-0.0180917,0.0171812,0.0204317,0.0340471,0.0285898,-0.0016281,-0.0841105,-0.1251193, 0.1268441,0.0452818,0.0183884,0.0551013,0.0700647,-0.039228,-0.0276658,0.1075457,0.0371214,-0.0111366, 0.0260915,0.0424386,0.0524253,0.0054865,0.022214,0.0227481,0.0289903,-0.0475691,0.0691439,-0.0083337, 0.0436129,-0.0525851,-0.0313605,0.0357732,-0.0879567,0.0000532,-0.08392,0.0911163,-0.0424401) # Add 1 to each simple return. sp500_simple_returns <- sp500_simple_returns + 1 # Compute the cumulative product for each observation in sp500_simple_returns. sp500_product <- ___(___) # Subtract 1 from the cumulative products. sp500_cumulative_return <- ___ - ___ # Plot the cumulative return. ___ # Add 1 to each simple return. sp500_simple_returns <- sp500_simple_returns + 1 # Compute the cumulative product for each observation in sp500_simple_returns. sp500_product <- cumprod(sp500_simple_returns) # Subtract 1 from the cumulative products. sp500_cumulative_return <- sp500_product - 1 # Plot the cumulative return. plot(sp500_cumulative_return) test_error() test_object("sp500_product", incorrect_msg="Did you use apply the `cumprod()` function?") test_object("sp500_cumulative_return", incorrect_msg="Remember to subtract one from the cumulative product.") test_function("plot", incorrect_msg="Did you use the `plot()` function?") success_msg("Excellent work.")
Recall that you can compute the cumulative product using the cumprod() function.

Previous Exercise Next Exercise