stst_a REM stst1.bas REM Peter Lohmander 20081101 OPEN "ststut.dat" FOR OUTPUT AS #1 DIM f(30, 30), s(30), qopt(30, 30) k = 4 a = 600 b = 300 r = .07 h = 10 tmax = 20 imax = 15 p0 = 400 p1 = 0 d = EXP(-r / 52) ttabmax = 30 itabmax = 30 FOR i = 0 TO k s(i) = k - i NEXT i FOR i = k + 1 TO itabmax s(i) = 0 NEXT i FOR t = 0 TO ttabmax FOR i = 0 TO itabmax f(t, i) = 0 qopt(t, i) = 0 NEXT i NEXT t FOR i = 0 TO k f(tmax, i) = a * s(i) qopt(tmax, i) = 0 NEXT i FOR i = k + 1 TO itabmax f(tmax, i) = -b * (i - k) NEXT i FOR t = tmax - 1 TO 0 STEP -1 FOR i = 0 TO imax fopt = 99999 qopt(t, i) = 0 qmax = imax - i - 4 IF (qmax < 0) THEN qmax = 0 FOR q = 0 TO qmax fev = a * s(i) + (p0 + p1 * q) * q fev = fev + h * (i + s(i) - k + q) fev = fev + d * (.1 * f(t + 1, (i + s(i) - k + q + 0))) fev = fev + d * (.2 * f(t + 1, (i + s(i) - k + q + 1))) fev = fev + d * (.4 * f(t + 1, (i + s(i) - k + q + 2))) fev = fev + d * (.2 * f(t + 1, (i + s(i) - k + q + 3))) fev = fev + d * (.1 * f(t + 1, (i + s(i) - k + q + 4))) IF (fev < fopt) THEN qopt(t, i) = q IF (fev < fopt) THEN f(t, i) = fev IF (fev < fopt) THEN fopt = fev NEXT q NEXT i NEXT t REM -------------------------------------------------------------------- CLS PRINT #1, "Optimal stock investment table" PRINT #1, "******************************" PRINT #1, "i = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15" PRINT #1, "" FOR t = 0 TO tmax PRINT #1, "t = "; PRINT #1, USING "##"; t; PRINT #1, " "; FOR i = 0 TO imax PRINT #1, USING "#######"; qopt(t, i); NEXT i PRINT #1, "" NEXT t REM -------------------------------------------------------------------- PRINT #1, "" PRINT #1, "" PRINT #1, "Optimal present value table" PRINT #1, "******************************" PRINT #1, "i = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15" PRINT #1, "" FOR t = 0 TO tmax PRINT #1, "t = "; PRINT #1, USING "##"; t; PRINT #1, " "; FOR i = 0 TO imax PRINT #1, USING "#######"; f(t, i) / 1; NEXT i PRINT #1, "" NEXT t CLOSE ststut.dat END Optimal stock investment table ****************************** i = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 t = 0 4 4 4 4 4 3 2 1 0 0 0 0 0 0 0 0 t = 1 4 4 4 4 4 3 2 1 0 0 0 0 0 0 0 0 t = 2 4 4 4 4 4 3 2 1 0 0 0 0 0 0 0 0 t = 3 4 4 4 4 4 3 2 1 0 0 0 0 0 0 0 0 t = 4 4 4 4 4 4 3 2 1 0 0 0 0 0 0 0 0 t = 5 4 4 4 4 4 3 2 1 0 0 0 0 0 0 0 0 t = 6 4 4 4 4 4 3 2 1 0 0 0 0 0 0 0 0 t = 7 4 4 4 4 4 3 2 1 0 0 0 0 0 0 0 0 t = 8 4 4 4 4 4 3 2 1 0 0 0 0 0 0 0 0 t = 9 4 4 4 4 4 3 2 1 0 0 0 0 0 0 0 0 t = 10 4 4 4 4 4 3 2 1 0 0 0 0 0 0 0 0 t = 11 4 4 4 4 4 3 2 1 0 0 0 0 0 0 0 0 t = 12 4 4 4 4 4 3 2 1 0 0 0 0 0 0 0 0 t = 13 4 4 4 4 4 3 2 1 0 0 0 0 0 0 0 0 t = 14 4 4 4 4 4 3 2 1 0 0 0 0 0 0 0 0 t = 15 4 4 4 4 4 3 2 1 0 0 0 0 0 0 0 0 t = 16 4 4 4 4 4 3 2 1 0 0 0 0 0 0 0 0 t = 17 4 4 4 4 4 3 2 1 0 0 0 0 0 0 0 0 t = 18 3 3 3 3 3 2 1 0 0 0 0 0 0 0 0 0 t = 19 2 2 2 2 2 1 0 0 0 0 0 0 0 0 0 0 t = 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Optimal present value table ****************************** i = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 t = 0 19116 18516 17916 17316 16716 16316 15916 15516 15116 14728 14342 13962 13587 13218 12854 12495 t = 1 18296 17696 17096 16496 15896 15496 15096 14696 14296 13908 13522 13142 12768 12398 12034 11675 t = 2 17476 16876 16276 15676 15076 14676 14276 13876 13476 13087 12702 12322 11947 11577 11213 10854 t = 3 16654 16054 15454 14854 14254 13854 13454 13054 12654 12265 11880 11500 11125 10755 10391 10032 t = 4 15831 15231 14631 14031 13431 13031 12631 12231 11831 11442 11057 10677 10302 9932 9568 9209 t = 5 15006 14406 13806 13206 12606 12206 11806 11406 11006 10618 10233 9853 9478 9108 8744 8385 t = 6 14181 13581 12981 12381 11781 11381 10981 10581 10181 9793 9407 9027 8652 8283 7919 7560 t = 7 13355 12755 12155 11555 10955 10555 10155 9755 9355 8967 8581 8201 7826 7457 7092 6734 t = 8 12527 11927 11327 10727 10127 9727 9327 8927 8527 8139 7753 7374 6999 6629 6265 5906 t = 9 11699 11099 10499 9899 9299 8899 8499 8099 7699 7311 6925 6545 6170 5801 5436 5078 t = 10 10869 10269 9669 9069 8469 8069 7669 7269 6869 6481 6095 5715 5340 4971 4607 4248 t = 11 10038 9438 8838 8238 7638 7238 6838 6438 6038 5650 5264 4885 4510 4140 3776 3417 t = 12 9207 8607 8007 7407 6807 6407 6007 5607 5207 4818 4433 4053 3678 3308 2945 2587 t = 13 8373 7773 7173 6573 5973 5573 5173 4773 4373 3985 3599 3220 2845 2476 2113 1758 t = 14 7539 6939 6339 5739 5139 4739 4339 3939 3539 3151 2765 2386 2012 1645 1287 942 t = 15 6704 6104 5504 4904 4304 3904 3504 3104 2704 2316 1930 1552 1182 824 482 161 t = 16 5868 5268 4668 4068 3468 3068 2668 2268 1868 1480 1096 724 369 37 -270 -556 t = 17 5030 4430 3830 3230 2630 2230 1830 1430 1030 646 274 -70 -385 -676 -953 -1224 t = 18 4191 3591 2991 2391 1791 1391 991 591 194 -160 -480 -775 -1057 -1336 -1615 -1894 t = 19 3340 2740 2140 1540 940 540 140 -240 -559 -849 -1138 -1428 -1718 -2007 -2297 -2586 t = 20 2400 1800 1200 600 0 -300 -600 -900 -1200 -1500 -1800 -2100 -2400 -2700 -3000 -3300