CLRM: Exercises


3. Log returns. You are given a dataframe, data, which contains three columns: date, sp500, and microsoft. The sp500 column contains levels for the S&P 500 index and the microsoft column contains observations on Microsoft's stock price. All data is given at a monthly frequency.

Use the log() and diff() functions to compute the log returns for sp500 and microsoft. You can compute the log returns as follows:

$$log\_return = 100*(log(price_{t}) - log(price_{t-1}))$$

date <- c("Jan-02","Feb-02","Mar-02","Apr-02","May-02","Jun-02","Jul-02","Aug-02","Sep-02","Oct-02", "Nov-02","Dec-02","Jan-03","Feb-03","Mar-03","Apr-03","May-03","Jun-03","Jul-03","Aug-03","Sep-03", "Oct-03","Nov-03","Dec-03","Jan-04","Feb-04","Mar-04","Apr-04","May-04","Jun-04","Jul-04","Aug-04", "Sep-04","Oct-04","Nov-04","Dec-04","Jan-05","Feb-05","Mar-05","Apr-05","May-05","Jun-05","Jul-05", "Aug-05","Sep-05","Oct-05","Nov-05","Dec-05","Jan-06","Feb-06","Mar-06","Apr-06","May-06","Jun-06", "Jul-06","Aug-06","Sep-06","Oct-06","Nov-06","Dec-06","Jan-07","Feb-07","Mar-07","Apr-07","May-07", "Jun-07","Jul-07","Aug-07","Sep-07","Oct-07","Nov-07","Dec-07","Jan-08","Feb-08","Mar-08","Apr-08", "May-08","Jun-08","Jul-08","Aug-08","Sep-08","Oct-08","Nov-08","Dec-08","Jan-09","Feb-09","Mar-09", "Apr-09","May-09","Jun-09","Jul-09","Aug-09","Sep-09","Oct-09","Nov-09","Dec-09","Jan-10","Feb-10", "Mar-10","Apr-10","May-10","Jun-10","Jul-10","Aug-10","Sep-10","Oct-10","Nov-10","Dec-10","Jan-11", "Feb-11","Mar-11","Apr-11","May-11","Jun-11","Jul-11","Aug-11","Sep-11","Oct-11","Nov-11","Dec-11", "Jan-12","Feb-12","Mar-12","Apr-12","May-12","Jun-12","Jul-12","Aug-12","Sep-12","Oct-12","Nov-12", "Dec-12","Jan-13","Feb-13","Mar-13","Apr-13","May-13","Jun-13","Jul-13","Aug-13","Sep-13","Oct-13", "Nov-13","Dec-13","Jan-14","Feb-14","Mar-14","Apr-14","May-14","Jun-14","Jul-14","Aug-14","Sep-14", "Oct-14","Nov-14","Dec-14","Jan-15","Feb-15","Mar-15","Apr-15","May-15","Jun-15","Jul-15","Aug-15", "Sep-15","Oct-15","Nov-15","Dec-15","Jan-16","Feb-16","Mar-16","Apr-16","May-16","Jun-16","Jul-16", "Aug-16","Sep-16","Oct-16","Nov-16","Dec-16","Jan-17","Feb-17","Mar-17","Apr-17","May-17","Jun-17", "Jul-17","Aug-17","Sep-17","Oct-17","Nov-17","Dec-17","Jan-18","Feb-18") sp500 <- c(1130.199951,1106.72998,1147.390015,1076.920044,1067.140015,989.820007, 911.619995,916.070007,815.280029,885.76001,936.309998,879.820007,855.700012, 841.150024,848.179993,916.919983,963.590027,974.5,990.309998,1008.01001,995.969971, 1050.709961,1058.199951,1111.920044,1131.130005,1144.939941,1126.209961,1107.300049, 1120.680054,1140.839966,1101.719971,1104.23999,1114.579956,1130.199951,1173.780029, 1211.920044,1181.27002,1203.599976,1180.589966,1156.849976,1191.5,1191.329956, 1234.180054,1220.329956,1228.810059,1207.01001,1249.47998,1248.290039,1280.079956, 1280.660034,1302.880005,1310.609985,1270.050049,1270.060059,1278.530029,1303.800049, 1335.819946,1377.76001,1400.630005,1418.030029,1437.900024,1406.800049,1420.829956, 1482.369995,1530.619995,1504.660034,1455.180054,1473.959961,1527.290039,1545.790039, 1479.630005,1467.969971,1378.599976,1330.449951,1326.410034,1385.969971,1399.619995, 1276.689941,1269.420044,1287.829956,1164.170044,968.669983,888.609985,902.98999, 823.090027,729.570007,793.590027,872.73999,923.26001,920.820007,990.219971,1019.52002, 1054.910034,1036.180054,1098.890015,1116.560059,1073.890015,1105.359985,1171.22998, 1188.579956,1087.300049,1031.099976,1107.530029,1049.719971,1143.48999,1185.709961, 1186.599976,1257.619995,1289.140015,1328.640015,1329.47998,1365.209961,1345.199951, 1320.640015,1292.589966,1219.119995,1131.209961,1251,1246.910034,1258.859985,1312.449951, 1365.900024,1408.469971,1397.859985,1309.869995,1362.329956,1379.319946,1406.540039, 1440.900024,1412.199951,1416.339966,1426.189941,1498.109985,1514.680054,1569.180054, 1597.550049,1631.709961,1609.780029,1689.420044,1635.949951,1682.410034,1758.699951, 1806.550049,1845.859985,1782.680054,1857.680054,1873.959961,1884.390015,1923.869995, 1962.290039,1929.800049,2004.069946,1971.439941,2018.209961,2065.780029,2058.899902, 1996.670044,2105.22998,2067.629883,2087.379883,2108.639893,2067,2104.48999,1970.089966, 1919.650024,2080.76001,2082.929932,2038.199951,1936.939941,1937.089966,2056.620117, 2067.169922,2093.939941,2099.340088,2173.149902,2171.330078,2164.330078,2128.679932, 2200.169922,2251.570068,2285.590088,2380.129883,2362.340088,2388.5,2415.649902, 2431.389893,2477.100098,2474.419922,2521.199951,2583.209961,2645.100098,2683.72998, 2816.449951,2715.219971) microsoft <- c(31.855,29.17,30.155001,26.129999,25.455,27.35,23.99,24.540001,21.870001,26.735001, 28.84,25.85,23.73,23.700001,24.209999,25.57,24.610001,25.639999,26.41,26.52,27.799999, 26.139999,25.709999,27.370001,27.65,26.530001,24.93,26.129999,26.23,28.559999, 28.49,27.299999,27.65,27.969999,26.809999,26.719999,26.280001,25.16,24.17,25.299999, 25.799999,24.84,25.610001,27.379999,25.73,25.700001,27.68,26.15,28.15,26.870001, 27.209999,24.15,22.65,23.299999,24.059999,25.700001,27.35,28.709999,29.360001,29.860001, 30.860001,28.17,27.870001,29.940001,30.690001,29.469999,28.99,28.73,29.459999, 36.810001,33.599998,35.599998,32.599998,27.200001,28.379999,28.52,28.32,27.51,25.719999, 27.290001,26.690001,22.33,20.219999,19.440001,17.1,16.15,18.370001,20.26,20.889999, 23.77,23.52,24.65,25.719999,27.73,29.41,30.48,28.18,28.67,29.290001,30.540001, 25.799999,23.01,25.809999,23.469999,24.49,26.67,25.26,27.91,27.73,26.58,25.389999, 25.92,25.01,26,27.4,26.6,24.889999,26.629999,25.58,25.959999,29.530001,31.74,32.259998, 32.02,29.190001,30.59,29.469999,30.82,29.76,28.540001,26.620001,26.709999,27.450001, 27.799999,28.610001,33.099998,34.900002,34.540001,31.84,33.400002,33.279999,35.41,38.130001, 37.41,37.84,38.310001,40.990002,40.400002,40.939999,41.700001,43.16,45.43,46.360001, 46.950001,47.810001,46.450001,40.400002,43.849998,40.66,48.639999,46.860001,44.150002, 46.700001,43.52,44.259998,52.639999,54.349998,55.48,55.09,50.880001,55.23,49.869999, 53,51.169998,56.68,57.459999,57.599998,59.919998,60.259998,62.139999,64.650002,63.98, 65.860001,68.459999,69.839996,68.93,72.699997,74.769997,74.489998,83.18,84.169998, 85.540001,95.010002,93.769997) data = data.frame(date, sp500, microsoft) # Define a variable for the log of the sp500 index. data$log_sp500 <- log(___) # Define a variable for the log of microsoft's stock price. data$log_microsoft <- ___ # Compute the change in log_sp500 and multiply it by 100. log_ret_sp500 <- 100*diff(___) # Compute the change in log_microsoft and multiply it by 100. log_ret_microsoft <- ___ # Define a variable for the log of the sp500 index. log_sp500 <- log(data$sp500) # Define a variable for the log of microsoft's stock price. log_microsoft <- log(data$microsoft) # Compute the change in log_sp500 and multiply it by 100. log_ret_sp500 <- 100*diff(log_sp500) # Compute the change in log_microsoft and multiply it by 100. log_ret_microsoft <- 100*diff(log_microsoft) test_error() test_object("log_sp500", incorrect_msg="Did you enter the correct arguments to `log()`?") test_object("log_microsoft", incorrect_msg="Did you enter the correct arguments to `log()`?") test_object("log_ret_sp500", incorrect_msg="Did you enter the correct arguments to `diff()`?") test_object("log_ret_microsoft", incorrect_msg="Did you enter the correct arguments to `diff()`?") success_msg("Well done! What would happen if you computed diff() first and log() second?")
Use the diff() function to compute the first difference of a variable.

Previous Exercise Next Exercise