1  REM ****  HP BASIC PROGRAM LIBRARY  ******************************
2  REM
3  REM       GRISKA: RISK ANALYSIS IN CAPITAL INVESTMENT
4  REM
5  REM       36543 REV A
6  REM
7  REM ****  CONTRIBUTED PROGRAM  ***********************************
8  REM **************************************************
9  REM *  STANFORD GRADUATE SCHOOL OF BUSINES           *
10  REM *  PROGRAM:  GRISKA                              *
11  REM *  PURPOSE: ANALYSIS OF RISK IN CAPITAL INVSTMNT*
12  REM *  SOURCE: BASED ON A PROGRAM OF UNKNOWN ORIGIN  *
13  REM *  REVISED BY W.F. SHARPE, MAY 1971              *
14  REM **************************************************
15  DIM A[9],C[9],D[9,2],B[9,3],Z[100],P[100],Q[100],A$[10]
16  LET S2=0
18  MAT Z=ZER
20  MAT A=ZER
21  MAT C=ZER
22  MAT Q=ZER
23  MAT P=ZER
29  REM -----------------------------------
31  PRINT 
32  PRINT "RISK ANALYSIS PROGRAM"
33  PRINT 
35  PRINT "HOW MANY ITERATIONS (TRIALS) DO YOU WANT";
36  INPUT L0
37  PRINT 
50  PRINT "DO YOU WANT PRICE, SALES AND OPERATING COSTS "
51  PRINT "TO BE INTERDEPENDENT";
52  INPUT A$
54  L2=0
56  IF A$[1,1]="N" THEN 60
57  L2=1
60  PRINT 
70  Z1=-15
71  Z2=30
72  Z4=5
73  PRINT "DO YOU WANT TO SELECT THE OUTPUT FORMAT";
74  INPUT A$
75  IF A$[1,1]="N" THEN 85
78  PRINT "RATE OF RETURN RANGE --"
79  PRINT "  FROM (%)";
80  INPUT Z1
81  PRINT "    TO (%)";
82  INPUT Z2
83  PRINT "  INTERVAL WIDTH (%)";
84  INPUT Z4
85  Z1=Z1/100
86  Z2=Z2/100
87  Z4=Z4/100
88  Z3=INT(((Z2-Z1)/Z4)+.999)
89  PRINT 
100  PRINT "FOR EACH FACTOR, ENTER THREE ESTIMATES --"
101  PRINT "   LOW, MOST LIKELY, HIGH"
102  PRINT 
103  GOTO 202
109  REM ----------------------------------
110  REM -- SUBROUTINE TO PRINT FACTOR NAME
120  GOTO I OF 125,130,135,140,145,150,155,160,165
125  PRINT "INVESTMENT (IN DOLLARS)";
126  GOTO 200
130  PRINT "MARKET SIZE (IN UNITS)";
131  GOTO 200
135  PRINT "SELLING PRICE (IN DOLLARS)";
136  GOTO 200
140  PRINT "MARKET GROWTH RATE (% PER YEAR)";
141  GOTO 200
145  PRINT "SHARE OF MARKET (%)";
146  GOTO 200
150  PRINT "RESIDUAL VALUE OF INVESTMENT (IN DOLLARS)";
151  GOTO 200
155  PRINT "OPERATING COSTS (IN DOLLARS PER UNIT)";
156  GOTO 200
160  PRINT "FIXED COSTS (IN DOLLARS PER YEAR)";
161  GOTO 200
165  PRINT "USEFUL LIFE (IN YEARS)";
200  RETURN 
201  REM ----------------------------------
202  FOR I=1 TO 9
203  GOSUB 110
206  INPUT B[I,1],B[I,2],B[I,3]
208  IF (I#4) AND (I#5) THEN 214
209  B[I,1]=B[I,1]/100
210  B[I,2]=B[I,2]/100
211  B[I,3]=B[I,3]/100
214  LET D[I,1]=(B[I,3]-B[I,1])/2.56
216  LET D[I,2]=(B[I,1]+B[I,2]+B[I,3])/3
218  NEXT I
219  PRINT 
231  REM ----------------------------------
232  REM *** STMTS 234-810 DO CALCULATIONS FOR EACH ITERATION
234  FOR K=1 TO L0
235  PRINT "-";
237  REM -- CALCULATE A PSEUDO-NORMAL DEVIATE
238  FOR I=1 TO 9
239  LET X=0
240  FOR O=1 TO 6
242  LET X=RND(1)+X
244  NEXT O
246  LET X=X-3
247  IF L2=0 THEN 258
248  IF I <> 3 THEN 251
249  LET Y=-X
250  GOTO 258
251  IF I <> 5 THEN 254
252  LET X=Y
253  GOTO 258
254  IF I <> 7 THEN 258
255  LET X=-Y
258  LET C[I]=D[I,2]+D[I,1]*X
259  IF C[I]>0 THEN 261
260  C[I]=0
261  NEXT I
263  REM -----------------------------------
270  REM -- CHANGE C(9) TO 100 IF IT IS GREATER
271  IF C[9]<100 THEN 280
272  C[9]=100
280  REM  - CONTINUE
597  REM ------------------------------------
598  REM *** STMTS 600-662 CALCULATE CASH FLOW FOR EACH ITERATION
599  REM
600  FOR I=1 TO C[9]
610  LET C[2]=C[2]*(1+C[4])
620  LET Q1=C[2]*C[5]
630  LET S1=Q1*C[3]
640  LET P[I]=S1-Q1*C[7]-C[8]
642  LET Q[I]=Q[I]+P[I]
650  NEXT I
660  LET P[C[9]]=P[C[9]]+C[6]
662  LET Q[C[9]]=Q[C[9]]+C[6]
670  GOSUB 1200
677  REM ------------------------------------
678  REM *** STMTS 680-770 CALCULATE DISTRIBUTION ON ROR
679  REM
680  FOR I=1 TO (Z3+1)
682  IF R<Z1+((I-1)*Z4) THEN 690
684  NEXT I
686  I=Z3+2
690  Z[I]=Z[I]+1
800  LET S2=S2+R
805  FOR I=1 TO 9
807  LET A[I]=A[I]+C[I]
809  NEXT I
810  NEXT K
811  I8=999
817  REM ------------------------------------
818  REM *** STMTS 820-920 PRINT THE RESULTS
819  PRINT 
820  LET Z=S2/L0
821  PRINT "AVERAGE CASH FLOWS"
822  PRINT "------------------"
823  LET S9=0
824  LET A8=A[1]/L0
825  FOR I=1 TO B[9,3]
827  LET Q[I]=Q[I]/L0
828  LET S9=S9+Q[I]
830  IF S9>A8 THEN 838
832  LET I8=I
838  PRINT  USING 839;I,Q[I]
839  IMAGE "   YEAR ",DD,10D.DD
840  NEXT I
842  PRINT 
843  PRINT "AVERAGE TOTAL INVESTMENT = ";A[1]/L0
847  PRINT 
848  PRINT "EXPECTED PAYBACK PERIOD:";I8-1;"TO";I8;"YEARS"
849  PRINT 
850  PRINT "EXPECTED RATE OF RETURN (%): ";100*Z
852  PRINT 
853  PRINT "RATE OF RETURN (%)"
854  PRINT "FROM      TO";TAB(25);"PROB.";TAB(35);
855  PRINT "PROB. R IS GREATER"
856  PRINT "-----  -------";TAB(25);"------";TAB(35);
857  PRINT "-----------------"
858  Z1=100*Z1
859  Z4=100*Z4
860  PRINT "BELOW";TAB(10);Z1;TAB(25);Z[1]/L0;TAB(40);1-Z[1]/L0
861  Z9=Z[1]/L0
870  FOR I=2 TO (Z3+1)
871  PRINT Z1+((I-2)*Z4);TAB(10);Z1+((I-1)*Z4);TAB(25);
872  Z9=Z9+(Z[I]/L0)
873  PRINT  USING 874;Z[I]/L0,TAB(40),1-Z9
874  IMAGE D.DDD,D.DDD
875  NEXT I
880  PRINT "ABOVE";TAB(10);Z1+(Z3*Z4);TAB(25);Z[Z3+2]/L0;
881  Z9=Z9+Z[Z3+2]/L0
882  PRINT  USING 883;TAB(40),1-Z9
883  IMAGE D.DDD
884  PRINT 
909  PRINT 
910  PRINT "            FACTOR";TAB(42);"AVERAGE VALUE"
912  PRINT "-----------------------------";TAB(42);"-------------"
920  FOR I=1 TO 9
922  IF I=2 THEN 950
924  GOSUB 110
930  IF (I#4) AND (I#5) THEN 940
932  A[I]=100*A[I]
940  PRINT TAB(40);
942  PRINT  USING 944;A[I]/L0
944  IMAGE 10D.DD
950  NEXT I
1199  STOP 
1200  REM -----------------------------------
1201  REM *** STMTS 1205-1400 CALCULATE THE INTERNAL RATE OF
1202  REM *** RETURN FOR EACH ITERATION
1203  REM
1205  LET B8=0
1209  REM -- METHOD USES TRIAL-AND-ERROR TO 3-PLACE ACCURACY
1210  FOR H=1 TO 3
1220  LET Q8=.1^H
1230  LET B8=B8+Q8
1240  LET E=0
1250  FOR F1=1 TO C[9]
1260  LET E=(P[F1]*(1/((1+B8)^(F1))))+E
1270  NEXT F1
1280  IF E>C[1] THEN 1230
1290  LET B8=B8-Q8
1300  NEXT H
1310  IF B8=0 THEN 1330
1320  GOTO 1350
1330  LET B8=-.8
1340  GOTO 1210
1350  LET R=B8
1360  RETURN 
1999  END 
