# The following are pieces of code leading up to a simulation
# mimicking TIAA-CREF's Equity Index fund.
# Data is available from
# http://www.tiaa-cref.org/performance/retirement/#crefvariableannuities
# Using EXCEL, we found that the mean daily percent change was
# 0.0354144% with a standard deviation of 0.010852361. We also found
# that the average annualized return since inception is about 8%.
# The following piece of code generates a sample of size 1
# from a normal random variable. X represents the random
# variable - it's not a number, it's more like a function.
# Y is an array of numbers sampled from X. Below, it is an array
# of length 1 and we are pulling out the first (and only) entry
with(Statistics):
X := RandomVariable(Normal(0.000354144, 0.010852361)):
Y := Sample(X, 1)[1];
# We want to simulate 3753 days worth of returns. The initial
# price was $25.1713. We don't really need to keep track of
# the daily price inbetween inception and yesterday so we won't
# store anything until yesterday's price is reached via simulation.
# Then we histogram the results.
with(Statistics):
X := RandomVariable(Normal(0.000354144, 0.010852361)):
Ending_Value := Array(1..1000):
for j from 1 to 1000 by 1 do
P := 25.1713;
for i from 1 to 3753 by 1 do
Y := Sample(X, 1)[1];
P := P*(1 + Y);
end do:
Ending_Value[j] := P;
end do:
# Then we histogram the results.
with(stats[statplots]):
histogram(convert(Ending_Value, list));
# And store the results to a file. The results above took a little over
# half and hour to create
# REMEMBER: If you use code like this, you will have to change the path
# to reflect your folders rather than mine.
writedata("C://Users//Elizabeth Housworth//Desktop//StockMarketOutput.txt", convert(Ending_Value, list));
fclose("C://Users//Elizabeth Housworth//Desktop//StockMarketOutput.txt");
# we can also compute the average annualized returns and
# histogram them and write them to a file
Average_Returns := Array(1..1000):
for j from 1 to 1000 by 1 do
Average_Return[j] := ((Ending_Value[j]/25.1713)^(1/14.5) - 1);
end do:
with(stats[statplots]):
histogram(convert(Average_Return, list));
writedata("C://Users//Elizabeth Housworth//Desktop//StockMarketOutput2.txt", convert(Average_Return, list));
fclose("C://Users//Elizabeth Housworth//Desktop//StockMarketOutput2.txt");