PROC IMPVOL SET NODOECHO * PROGRAM TO COMPUTE BLACK-SCHOLES IMPLIED VOLATILITY * INPUTS: [S] STOCK PRICE * [K] STRIKE PRICE * [R] INTEREST RATE, EXAMPLE .12 * [TAU] TIME TO MATURITY IN YEARS, EXAMPLE .25 * [C] CALL PRICE GENR STARTS_=ABS(LOG([S]/[K])+[R]*[TAU])*(2/[TAU]) GENR SIG_=SQRT(STARTS_) ?DO #=1,20 GENR D1_=(LOG([S]/[K])+([R]+SIG_*SIG_/2)*[TAU])/(SIG_*SQRT([TAU])) GENR FN_=EXP(-D1_*D1_/2)/SQRT(2*3.14159) GENR FPRIME_=[S]*SQRT([TAU])*FN_ GENR D2_=D1_-SIG_*SQRT([TAU]) GENR C_=[S]*NCDF(D1_)-[K]*EXP(-[R]*[TAU])*NCDF(D2_) GENR SIG_=SIG_-(C_-[C])/FPRIME_ ?ENDIF(ABS(C_-[C]).LT.0.00001) ENDO PRINT SIG_ C_ FPRIME_ PROCEND