Assume zero contribution at the beginning. We have the following
parameters
C = Constant
R = 6
Y = 30
C = 1000
For example, what’s the total amount in your retirement account at
the end of month 1? It’s just \(C\)
.
What’s the total amount in your retirement account at the end of
month 2?
C * (1 + R/12/100) + C
Now write a function to return the total amount in your retirement
account at the end of year \(Y\)
T = Y * 12
total = 0
for(i in 1:T)
total = total * (1 + R/12/100) + C
total
To Do
- Write a function that can take \(R, Y,
C\) as input and output total investment amount
- Fix \(Y\) and \(C\), vary \(R\) from 1% to 10% with an increase of
0.5%, i.e., you’ll try \(R\) being 1%,
1.5%, 2%, …, and go on. Try those \(R\)
values and each will return you a total. Produce a plot of total vs
\(R\)
Rvalues = seq(1, 10, by = 0.5)
Rvalues
length(Rvalues)
Your code would look like this
# Continue with the definition of Rvalues above
m = length(Rvalues)
totals = rep(0, m)
for (t in 1:m){
R = Rvalues[m]
totals[m] = # your function
}
plot(Rvalues, totals) # check ggplot package
C = Contribution Rate
Now, we consider a case where the monthly contribution amount varies
from year to year since it’s specified as a percentage of one’s monthly
salary.
Your code would look like this
# m0 = initial salary
# c.rate = contribution rate
# a.rate = salary increase rate
# R = annual investment return rate
# Y = service year
total = 0
for(i in 1:Y){
# current.m = salary in year t
# current.C = contribution amount in year t
for(j in 1:12){
# calculate total for each month
}
}
total
[1] 0
LS0tCnRpdGxlOiAiQ2FsY3V0ZSBSZXR1cm4iCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCkFzc3VtZSB6ZXJvIGNvbnRyaWJ1dGlvbiBhdCB0aGUgYmVnaW5uaW5nLiBXZSBoYXZlIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycwoKLSAgIEFubnVhbCByZXR1cm4gcmF0ZSAkUiQgKGluIHBlcmNlbnRhZ2UpCgotICAgWWVhcnMgJFkkCgotICAgTW9udGhseSBjb250cmlidXRpb24gJEMkIChhbHdheXMgY29udHJpYnV0ZSBhdCB0aGUgZW5kIG9mIGEgbW9udGgpCgojIyBDID0gQ29uc3RhbnQKCmBgYHtyfQpSID0gNgpZID0gMzAKQyA9IDEwMDAKYGBgCgpGb3IgZXhhbXBsZSwgd2hhdCdzIHRoZSB0b3RhbCBhbW91bnQgaW4geW91ciByZXRpcmVtZW50IGFjY291bnQgYXQgdGhlIGVuZCBvZiBtb250aCAxPyBJdCdzIGp1c3QgJEMkIC4KCldoYXQncyB0aGUgdG90YWwgYW1vdW50IGluIHlvdXIgcmV0aXJlbWVudCBhY2NvdW50IGF0IHRoZSBlbmQgb2YgbW9udGggMj8KCmBgYHtyfQpDICogKDEgKyBSLzEyLzEwMCkgKyBDCmBgYAoKTm93IHdyaXRlIGEgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSB0b3RhbCBhbW91bnQgaW4geW91ciByZXRpcmVtZW50IGFjY291bnQgYXQgdGhlIGVuZCBvZiB5ZWFyICRZJAoKYGBge3J9ClQgPSBZICogMTIKdG90YWwgPSAwCgpmb3IoaSBpbiAxOlQpCiAgdG90YWwgPSB0b3RhbCAqICgxICsgUi8xMi8xMDApICsgQwoKdG90YWwKYGBgCgoqKlRvIERvKioKCi0gICBXcml0ZSBhIGZ1bmN0aW9uIHRoYXQgY2FuIHRha2UgJFIsIFksIEMkIGFzIGlucHV0IGFuZCBvdXRwdXQgdG90YWwgaW52ZXN0bWVudCBhbW91bnQKLSAgIEZpeCAkWSQgYW5kICRDJCwgdmFyeSAkUiQgZnJvbSAxJSB0byAxMCUgd2l0aCBhbiBpbmNyZWFzZSBvZiAwLjUlLCBpLmUuLCB5b3UnbGwgdHJ5ICRSJCBiZWluZyAxJSwgMS41JSwgMiUsIC4uLiwgYW5kIGdvIG9uLiBUcnkgdGhvc2UgJFIkIHZhbHVlcyBhbmQgZWFjaCB3aWxsIHJldHVybiB5b3UgYSB0b3RhbC4gUHJvZHVjZSBhIHBsb3Qgb2YgdG90YWwgdnMgJFIkCgpgYGB7cn0KUnZhbHVlcyA9IHNlcSgxLCAxMCwgYnkgPSAwLjUpIApSdmFsdWVzCmxlbmd0aChSdmFsdWVzKQpgYGAKCllvdXIgY29kZSB3b3VsZCBsb29rIGxpa2UgdGhpcwoKYGBge3IsIGV2YWwgPSBGQUxTRX0KCiMgQ29udGludWUgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiBSdmFsdWVzIGFib3ZlCgptID0gbGVuZ3RoKFJ2YWx1ZXMpCnRvdGFscyA9IHJlcCgwLCBtKQpmb3IgKHQgaW4gMTptKXsKICBSID0gUnZhbHVlc1ttXQogIAogIHRvdGFsc1ttXSA9ICMgeW91ciBmdW5jdGlvbgp9CgpwbG90KFJ2YWx1ZXMsIHRvdGFscykgIyBjaGVjayBnZ3Bsb3QgcGFja2FnZQoKYGBgCgoKIyMgQyA9IENvbnRyaWJ1dGlvbiBSYXRlCgpOb3csIHdlIGNvbnNpZGVyIGEgY2FzZSB3aGVyZSB0aGUgbW9udGhseSBjb250cmlidXRpb24gYW1vdW50IHZhcmllcyBmcm9tIHllYXIgdG8geWVhciBzaW5jZSBpdCdzIHNwZWNpZmllZCBhcyBhIHBlcmNlbnRhZ2Ugb2Ygb25lJ3MgbW9udGhseSBzYWxhcnkuIAoKWW91ciBjb2RlIHdvdWxkIGxvb2sgbGlrZSB0aGlzCgpgYGB7ciBldmF1bGUgPSBGQUxTRX0KIyBtMCA9IGluaXRpYWwgc2FsYXJ5CiMgYy5yYXRlID0gY29udHJpYnV0aW9uIHJhdGUKIyBhLnJhdGUgPSBzYWxhcnkgaW5jcmVhc2UgcmF0ZQoKIyBSID0gYW5udWFsIGludmVzdG1lbnQgcmV0dXJuIHJhdGUgCiMgWSA9IHNlcnZpY2UgeWVhcgoKdG90YWwgID0gMApmb3IoaSBpbiAxOlkpewogIAojICBjdXJyZW50Lm0gPSBzYWxhcnkgaW4geWVhciB0CiMgIGN1cnJlbnQuQyA9IGNvbnRyaWJ1dGlvbiBhbW91bnQgaW4geWVhciB0CiAgCiAgZm9yKGogaW4gMToxMil7CiMgY2FsY3VsYXRlIHRvdGFsIGZvciBlYWNoIG1vbnRoCiAgfQp9CgoKYGBgCgo=