ÐÏࡱá>þÿ  þÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ40; ! Yearly interest rate; IRATE = .163; ! Weekly variance in log of price; WVAR = .005216191 ; ENDDATASETS: !Generate our state matrix for the DP.STATE(S,T) may be entered from STATE(S,T-1)if the stock lost value, or it may be entered from STATE(S-1,T-1) if stock gained; STATE( PERIOD, PERIOD)| &1 #LE# &2: PRICE, ! There is a stock price, and ; VAL; ! a value of the option; ENDSETS ! Compute number of periods; LASTP = @SIZE( PERIOD); ! Get the weekly interest rate; ( 1 + WRATE) ^ 52 = ( 1 + IRATE); ! The weekly discount factor; DISF = 1/( 1 + WRATE); ! Use the fact that if LOG( P) is normal with mean LOGM and variance WVAR, then P has mean EXP( LOGM + WVAR/2), solving for LOGM...; LOGM = @LOG( 1 + WRATE) - WVAR/ 2; ! Get the log of the up factor; LUPF = ( LOGM * LOGM + WVAR) ^ .5; ! The actual up move factor; UPF = @EXP( LUPF); ! and the down move factor; DNF = 1/ UPF; ! Probability of an up move; PUP = .5 * ( 1 + LOGM/ LUPF); ! Initialize the price table; PRICE( 1, 1) = PNOW; ! First the states where it goes down every period; @FOR( PERIOD( T) | T #GT# 1: PRICE( 1, T) = PRICE( 1, T - 1) * DNF); ! Now compute for all other states S, period T; @FOR( STATE( S, T)| T #GT# 1 #AND# S #GT# 1: PRICE( S, T) = PRICE( S - 1, T - 1) * UPF); ! Set values in the final period; @FOR( PERIOD( S): VAL( S, LASTP)= @SMAX( PRICE( S, LASTP) - STRIKE,0) ); ! Do the dynamic programming; @FOR( STATE( S, T) | T #LT# LASTP: VAL( S, T) = @SMAX( PRICE( S, T) - STRIKE, DISF * ( PUP * VAL( S + 1, T + 1) + ( 1 - PUP) * VAL( S, T + 1)))); ! Finally, the value of the option now; VALUE = VAL( 1, 1); END MODEL: SETS: ! Binomial option pricing model: We assume that a stock can either go up in value from one period to the next with probability PUP, or down with probability (1 - PUP). Under this assumption, a stock's return will be binomially distributed. We can then build a dynamic programming recursion to determine the option's value; ! No. of periods, e.g., weeks; PERIOD /1..20/:; ENDSETS DATA: ! Current price of the stock; PNOW = 40.75; ! Exercise price at option expiration; STRIKE = þÿÿÿýÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot EntryÿÿÿÿÿÿÿÿóCONTENTSÿÿÿÿÿÿÿÿÿÿÿÿóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  !"#þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot Entryÿÿÿÿÿÿÿÿ*0_šîÏ»òÀð^Ð!ühfþÄ € ContentsÿÿÿÿÿÿÿÿÿÿÿÿX ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿýÿÿÿþÿÿÿ þÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  !"#$%&'()*+,-./01þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPRICE( S - 1, T - 1) * UPF); \par \cf3 ! Set values in the final period;\cf2 \par \cf1 @FOR\cf2 ( PERIOD( S): \par VAL( S, LASTP)= \cf1 @SMAX\cf2 ( PRICE( S, LASTP) - STRIKE,0) \par ); \par \cf3 ! Do the dynamic programming;\cf2 \par \cf1 @FOR\cf2 ( STATE( S, T) | T #LT# LASTP: \par VAL( S, T) = \cf1 @SMAX\cf2 ( PRICE( S, T) - STRIKE, \par DISF * ( PUP * VAL( S + 1, T + 1) + \par ( 1 - PUP) * VAL( S, T + 1)))); \par \cf3 ! Finally, the value of the option now;\cf2 \par VALUE = VAL( 1, 1); \par \cf1 END\cf2 \par \par } ì‹{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Courier New;}} {\colortbl ;\red0\green0\blue255;\red0\green0\blue0;\red0\green175\blue0;} \viewkind4\uc1\pard\cf1\f0\fs20 MODEL\cf2 : \par \cf1 SETS\cf2 : \par \cf3 ! Binomial option pricing model: We assume that a stock can either go up in value from one period to the next with probability PUP, or down with probability (1 - PUP). Under this assumption, a stock's return will be binomially distributed. We can then build a dynamic programming recursion to determine the option's value;\cf2 \par \cf3 ! No. of periods, e.g., weeks;\cf2 \par PERIOD /1..20/:; \par \cf1 ENDSETS\cf2 \par \cf1 DATA\cf2 : \par \cf3 ! Current price of the stock;\cf2 \par PNOW = 40.75; \par \cf3 ! Exercise price at option expiration;\cf2 \par STRIKE = 40; \par \cf3 ! Yearly interest rate;\cf2 \par IRATE = .163; \par \cf3 ! Weekly variance in log of price;\cf2 \par WVAR = .005216191 ; \par ENDDATASETS: \par \cf3 !Generate our state matrix for the DP.STATE(S,T) may be entered from STATE(S,T-1)if the stock lost value, or it may be entered from STATE(S-1,T-1) if stock gained;\cf2 \par STATE( PERIOD, PERIOD)| &1 #LE# &2: \par PRICE, \cf3 ! There is a stock price, and ;\cf2 \par VAL; \cf3 ! a value of the option;\cf2 \par \cf1 ENDSETS\cf2 \par \cf3 ! Compute number of periods;\cf2 \par LASTP = \cf1 @SIZE\cf2 ( PERIOD); \par \cf3 ! Get the weekly interest rate;\cf2 \par ( 1 + WRATE) ^ 52 = ( 1 + IRATE); \par \cf3 ! The weekly discount factor;\cf2 \par DISF = 1/( 1 + WRATE); \par \cf3 ! Use the fact that if LOG( P) is normal with mean LOGM and variance WVAR, then P has mean EXP( LOGM + WVAR/2), solving for LOGM...;\cf2 \par LOGM = \cf1 @LOG\cf2 ( 1 + WRATE) - WVAR/ 2; \par \cf3 ! Get the log of the up factor;\cf2 \par LUPF = ( LOGM * LOGM + WVAR) ^ .5; \par \cf3 ! The actual up move factor;\cf2 \par UPF = \cf1 @EXP\cf2 ( LUPF); \par \cf3 ! and the down move factor;\cf2 \par DNF = 1/ UPF; \par \cf3 ! Probability of an up move;\cf2 \par PUP = .5 * ( 1 + LOGM/ LUPF); \par \cf3 ! Initialize the price table;\cf2 \par PRICE( 1, 1) = PNOW; \par \cf3 ! First the states where it goes down every period;\cf2 \par \cf1 @FOR\cf2 ( PERIOD( T) | T #GT# 1: \par PRICE( 1, T) = PRICE( 1, T - 1) * DNF); \par \cf3 ! Now compute for all other states S, period T;\cf2 \par \cf1 @FOR\cf2 ( STATE( S, T)| T #GT# 1 #AND# S #GT# 1: \par PRICE( S, T) =