home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / MBUG / MBUG058.ARC / STOCK.BAS < prev    next >
BASIC Source File  |  1979-12-31  |  8KB  |  234 lines

  1. 100 REM STOCK MARKET SIMULATION     -STOCK-
  2. 101 REM REVISED 8/18/70 (D. PESSEL, L. BRAUN, C. LOSIK)
  3. 102 REM IMP VRBLS: A-MRKT TRND SLP; B5-BRKRGE FEE; C-TTL CSH ASSTS;
  4. 103 REM C5-TTL CSH ASSTS (TEMP); C(I)-CHNG IN STK VAL; D-TTL ASSTS;
  5. 104 REM E1,E2-LRG CHNG MISC; I-STCK #; I1,I2-STCKS W LRG CHNG;
  6. 105 REM N1,N2-LRG CHNG DAY CNTS; P5-TTL DAYS PRCHSS; P(I)-PRTFL CNTNTS;
  7. 106 REM Q9-NEW CYCL?; S4-SGN OF A; S5-TTL DYS SLS; S(I)-VALUE/SHR;
  8. 107 REM T-TTL STCK ASSTS; T5-TTL VAL OF TRNSCTNS;
  9. 108 REM W3-LRG CHNG; X1-SMLL CHNG(<$1); Z4,Z5,Z6-NYSE AVE.; Z(I)-TRNSCTN.
  10. 109  PRINT TAB(20);"THE STOCK MARKET"
  11. 110  DIM S(5),P(5),Z(5),C(5)
  12. 112 REM SLOPE OF MARKET TREND:A  (SAME FOR ALL STOCKS)
  13. 113  RANDOMIZE
  14. 114  LET A=INT((RND(X)/10)*100+.5)/100
  15. 115  LET T5=0
  16. 116  LET X9=0
  17. 117  LET N1=0
  18. 118  LET N2=0
  19. 119  LET E1=0
  20. 120  LET E2=0
  21. 121 REM INTRODUCTION
  22. 122  PRINT "DO YOU WANT THE INSTRUCTIONS (YES-TYPE 1, NO-TYPE 0)";
  23. 123  INPUT Z9
  24. 124  PRINT
  25. 125  PRINT
  26. 126  IF Z9<1 THEN 200
  27. 130  PRINT "THIS PROGRAM PLAYS THE STOCK MARKET.  YOU WILL BE GIVEN"
  28. 132  PRINT "$10,000 AND MAY BUY OR SELL STOCKS.  THE STOCK PRICES WILL"
  29. 134  PRINT "BE GENERATED RANDOMLY AND THEREFORE THIS MODEL DOES NOT"
  30. 135  PRINT "REPRESENT EXACTLY WHAT HAPPENS ON THE EXCHANGE.  A TABLE"
  31. 136  PRINT "OF AVAILABLE STOCKS, THEIR PRICES, AND THE NUMBER OF SHARES"
  32. 137  PRINT "IN YOUR PORTFOLIO WILL BE PRINTED.  FOLLOWING THIS, THE"
  33. 138  PRINT "INITIALS OF EACH STOCK WILL BE PRINTED WITH A QUESTION"
  34. 139  PRINT "MARK.  HERE YOU INDICATE A TRANSACTION.  TO BUY A STOCK"
  35. 140  PRINT "TYPE +NNN, TO SELL A STOCK TYPE -NNN, WHERE NNN IS THE"
  36. 141  PRINT "NUMBER OF SHARES.  A BROKERAGE FEE OF 1% WILL BE CHARGED"
  37. 142  PRINT "ON ALL TRANSACTIONS.  NOTE THAT IF A STOCK'S VALUE DROPS"
  38. 143  PRINT "TO ZERO IT MAY REBOUND TO A POSITIVE VALUE AGAIN.  YOU"
  39. 144  PRINT "HAVE $10,000 TO INVEST.  USE INTEGERS FOR ALL YOUR INPUTS."
  40. 145  PRINT "(NOTE:  TO GET A 'FEEL' FOR THE MARKET RUN FOR AT LEAST"
  41. 146  PRINT "10 DAYS)"
  42. 147  PRINT "-----GOOD LUCK!-----"
  43. 200 REM GENERATION OF STOCK TABLE; INPUT REQUESTS
  44. 210 REM INITIAL STOCK VALUES
  45. 220  LET S(1)=100
  46. 230  LET S(2)=85
  47. 240  LET S(3)=150
  48. 250  LET S(4)=140
  49. 260  LET S(5)=110
  50. 265 REM INITIAL T8 - # DAYS FOR FIRST TREND SLOPE (A)
  51. 266  LET T8=INT(4.99*RND(X)+1)
  52. 267 REM RANDOMIZE SIGN OF FIRST TREND SLOPE (A)
  53. 268  IF RND(X)>.5 THEN 270
  54. 269  LET A=-A
  55. 270 REM RANDOMIZE INITIAL VALUES
  56. 280  GOSUB 830
  57. 285 REM INITIAL PORTFOLIO CONTENTS
  58. 290  FOR I=1 TO 5
  59. 300  LET P(I)=0
  60. 305  LET Z(I)=0
  61. 310  NEXT I
  62. 320  PRINT
  63. 330  PRINT
  64. 333 REM INITIALIZE CASH ASSETS:C
  65. 335  LET C=10000
  66. 338 REM PRINT INITIAL PORTFOLIO
  67. 340  PRINT "STOCK"," ","INITIALS","PRICE/SHARE"
  68. 350  PRINT "INT. BALLISTIC MISSILES","  IBM",S(1)
  69. 352  PRINT "RED CROSS OF AMERICA","  RCA",S(2)
  70. 354  PRINT "LICHTENSTEIN, BUMRAP & JOKE","  LBJ",S(3)
  71. 356  PRINT "AMERICAN BANKRUPT CO.","  ABC",S(4)
  72. 358  PRINT "CENSURED BOOKS STORE","  CBS",S(5)
  73. 360  PRINT
  74. 361 REM NYSE AVERAGE:Z5; TEMP. VALUE:Z4; NET CHANGE:Z6
  75. 363  LET Z4=Z5
  76. 364  LET Z5=0
  77. 365  LET T=0
  78. 370  FOR I=1 TO 5
  79. 375  LET Z5=Z5+S(I)
  80. 380  LET T=T+S(I)*P(I)
  81. 390  NEXT I
  82. 391  LET Z5=INT(100*(Z5/5)+.5)/100
  83. 392  LET Z6=INT((Z5-Z4)*100+.5)/100
  84. 393 REM TOTAL ASSETS:D
  85. 394  LET D=T+C
  86. 395  IF X9>0 THEN 398
  87. 396  PRINT "NEW YORK STOCK EXCHANGE AVERAGE: "Z5
  88. 397  GOTO 399
  89. 398  PRINT "NEW YORK STOCK EXCHANGE AVERAGE: "Z5"   NET CHANGE: "Z6
  90. 399  PRINT
  91. 400  LET T=INT(100*T+.5)/100
  92. 401  PRINT "TOTAL STOCK ASSETS ARE   $";T
  93. 403  LET C=INT(100*C+.5)/100
  94. 405  PRINT "TOTAL CASH ASSETS ARE    $";C
  95. 407  LET D=INT(100*D+.5)/100
  96. 408  PRINT "TOTAL ASSETS ARE         $";D
  97. 410  PRINT
  98. 411  IF X9=0 THEN 416
  99. 412  PRINT "DO YOU WISH TO CONTINUE (YES-TYPE 1, NO-TYPE 0)";
  100. 413  INPUT Q9
  101. 414  IF Q9<1 THEN 998
  102. 416 REM INPUT TRANSACTIONS
  103. 420  PRINT "WHAT IS YOUR TRANSACTION IN"
  104. 430  PRINT "IBM";
  105. 440  INPUT Z(1)
  106. 450  PRINT "RCA";
  107. 460  INPUT Z(2)
  108. 470  PRINT "LBJ";
  109. 480  INPUT Z(3)
  110. 490  PRINT "ABC";
  111. 500  INPUT Z(4)
  112. 510  PRINT "CBS";
  113. 520  INPUT Z(5)
  114. 525  PRINT
  115. 530 REM TOTAL DAY'S PURCHASES IN $:P5
  116. 540  LET P5=0
  117. 550 REM TOTAL DAY'S SALES IN $:S5
  118. 560  LET S5=0
  119. 570  FOR I=1 TO 5
  120. 575  LET Z(I)=INT(Z(I)+.5)
  121. 580  IF Z(I)<=0 THEN 610
  122. 590  LET P5=P5+Z(I)*S(I)
  123. 600  GOTO 620
  124. 610  LET S5=S5-Z(I)*S(I)
  125. 612  IF -Z(I)<=P(I) THEN 620
  126. 614  PRINT "YOU HAVE OVERSOLD A STOCK; TRY AGAIN."
  127. 616  GOTO 420
  128. 620  NEXT I
  129. 622 REM TOTAL VALUE OF TRANSACTIONS:T5
  130. 625  LET T5=P5+S5
  131. 630 REM BROKERAGE FEE:B5
  132. 640  LET B5=INT(.01*T5*100+.5)/100
  133. 650 REM CASH ASSETS=OLD CASH ASSETS-TOTAL PURCHASES
  134. 652 REM -BROKERAGE FEES+TOTAL SALES:C5
  135. 654  LET C5=C-P5-B5+S5
  136. 656  IF C5>=0 THEN 674
  137. 658 PRINT "YOU HAVE USED $";-C5"MORE THAN YOU HAVE."
  138. 660 GOTO 420
  139. 674  LET C=C5
  140. 675 REM CALCULATE NEW PORTFOLIO
  141. 680  FOR I=1 TO 5
  142. 690  LET P(I)=P(I)+Z(I)
  143. 700  NEXT I
  144. 710 REM CALCULATE NEW STOCK VALUES
  145. 720  GOSUB 830
  146. 750 REM PRINT PORTFOLIO
  147. 751 REM BELL RINGING-DIFFERENT ON MANY COMPUTERS
  148. 752  FOR I=1 TO 20
  149. 753  PRINT CHR$(135);
  150. 754  NEXT I
  151. 755  PRINT
  152. 756  PRINT "**********  END OF DAY'S TRADING"
  153. 757  PRINT
  154. 758  PRINT
  155. 759  IF X9<1 THEN 769
  156. 769  PRINT "STOCK","PRICE/SHARE","HOLDINGS","VALUE","NET PRICE CHANGE"
  157. 770  PRINT "IBM", S(1), P(1), S(1)*P(1), C(1)
  158. 771  PRINT "RCA", S(2), P(2), S(2)*P(2), C(2)
  159. 772  PRINT "LBJ", S(3), P(3), S(3)*P(3), C(3)
  160. 773  PRINT "ABC", S(4), P(4), S(4)*P(4), C(4)
  161. 774  PRINT "CBS", S(5), P(5), S(5)*P(5), C(5)
  162. 775  LET X9=1
  163. 780  PRINT
  164. 790  PRINT
  165. 810  GOTO 360
  166. 829 REM NEW STOCK VALUES - SUBROUTINE
  167. 830 REM RANDOMLY PRODUCE NEW STOCK VALUES BASED ON PREVIOUS
  168. 831 REM DAY'S VALUES
  169. 832 REM N1,N2 ARE RANDOM NUMBERS OF DAYS WHICH RESPECTIVELY
  170. 833 REM DETERMINE WHEN STOCK I1 WILL INCREASE 10 PTS. AND STOCK
  171. 834 REM I2 WILL DECREASE 10 PTS.
  172. 840 REM IF N1 DAYS HAVE PASSED, PICK AN I1, SET E1, DETERMINE NEW N1
  173. 841  IF N1>0 THEN 850
  174. 845  LET I1=INT(4.99*RND(X)+1)
  175. 846  LET N1=INT(4.99*RND(X)+1)
  176. 847  LET E1=1
  177. 850 REM IF N2 DAYS HAVE PASSED, PICK AN I2, SET E2, DETERMINE NEW N2
  178. 851  IF N2>0 THEN 860
  179. 855  LET I2=INT(4.99*RND(X)+1)
  180. 856  LET N2=INT(4.99*RND(X)+1)
  181. 857  LET E2=1
  182. 860 REM DEDUCT ONE DAY FROM N1 AND N2
  183. 861  LET N1=N1-1
  184. 862  LET N2=N2-1
  185. 890 REM LOOP THROUGH ALL STOCKS
  186. 900  FOR I=1 TO 5
  187. 910  LET X1=RND(X)
  188. 915  IF X1>.25 THEN 920
  189. 916  LET X1=.25
  190. 917  GOTO 935
  191. 920  IF X1>.5 THEN 925
  192. 921  LET X1=.5
  193. 922  GOTO 935
  194. 925  IF X1>.75 THEN 930
  195. 926  LET X1=.75
  196. 927  GOTO 935
  197. 930  LET X1=0
  198. 931 REM BIG CHANGE CONSTANT:W3  (SET TO ZERO INITIALLY)
  199. 935  LET W3=0
  200. 936  IF E1<1 THEN 945
  201. 937  IF INT(I1+.5)<>INT(I+.5) THEN 945
  202. 938 REM ADD 10 PTS. TO THIS STOCK;  RESET E1
  203. 939  LET W3=10
  204. 943  LET E1=0
  205. 945  IF E2<1 THEN 955
  206. 947  IF INT(I2+.5)<>INT(I+.5) THEN 955
  207. 948 REM SUBTRACT 10 PTS. FROM THIS STOCK;  RESET E2
  208. 949  LET W3=W3-10
  209. 953  LET E2=0
  210. 954 REM C(I) IS CHANGE IN STOCK VALUE
  211. 955  LET C(I)=INT(A*S(I))+X1+INT(3-6*RND(X)+.5)+W3
  212. 956  LET C(I)=INT(100*C(I)+.5)/100
  213. 957  LET S(I)=S(I)+C(I)
  214. 960  IF S(I)>0 THEN 967
  215. 964  LET C(I)=0
  216. 965  LET S(I)=0
  217. 966  GOTO 970
  218. 967  LET S(I)=INT(100*S(I)+.5)/100
  219. 970  NEXT I
  220. 972 REM AFTER T8 DAYS RANDOMLY CHANGE TREND SIGN AND SLOPE
  221. 973  LET T8=T8-1
  222. 974  IF T8<1 THEN 985
  223. 980  RETURN
  224. 985 REM RANDOMLY CHANGE TREND SIGN AND SLOPE (A), AND DURATION
  225. 986 REM OF TREND (T8)
  226. 990  LET T8=INT(4.99*RND(X)+1)
  227. 992  LET A=INT((RND(X)/10)*100+.5)/100
  228. 993  LET S4=RND(X)
  229. 994  IF S4<=.5 THEN 997
  230. 995  LET A=-A
  231. 997  RETURN
  232. 998  PRINT "HOPE YOU HAD FUN!!"
  233. 999  END
  234.