ÐÏࡱá>þÿ  þÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ! Strike exchange rate, i.e., right to exchange $1 for one foreign unit at this rate; XSTRK =.58; ! Yearly interest rate in $ country; IRD = .0581; ! Yearly interest rate in foreign country; IRF = .0881; ! Years to maturity for the option; MATRT = .098630137; !( = 36/365); ! Yearly variance in exchange rate; SIG = .13; ENDDATA !--------------------------------------------------; SETS: !Generate state matrix for the DP. STATE( S, T) may be entered from STATE(S, T-1) if FX rate went down, or from STATE( S - 1, T - 1) if FX rate went up; STATE( PERIOD, PERIOD)| &1 #LE# &2: FXRATE, ! There is an FX rate, and...; VAL; ! a value of the option; ENDSETS ! Compute number of periods; LASTP = @SIZE( PERIOD); ! Initialize the FXRATE table; FXRATE( 1, 1) = XCURR; ! Compute some constants; ! To avoid warning messages when IRDIFM < 0; @FREE( IRDIFM); IRDIFM = ( IRD - IRF) * MATRT/( LASTP - 1); SIGMSR = SIG * (( MATRT/( LASTP - 1))^.5); DISF = @EXP( - IRD * MATRT/( LASTP - 1)); ! The up factor; UPF = @EXP( IRDIFM + SIGMSR); ! The down factor; DNF = @EXP( IRDIFM - SIGMSR); ! Probability of an up move( assumes SIG > 0); PUP = (@EXP( IRDIFM)- DNF)/( UPF - DNF); PDN = 1 - PUP; ! First the states where it goes down every period; @FOR( PERIOD( T) | T #GT# 1: FXRATE( 1, T) = FXRATE( 1, T - 1) * DNF); ! Now compute for all other states S, period T; @FOR( STATE( S, T)| T #GT# 1 #AND# S #GT# 1: FXRATE( S, T) = FXRATE( S - 1, T - 1) * UPF); ! Do the dynamic programming; ! Set values in the final period; @FOR( PERIOD( S): VAL( S, LASTP) = @SMAX( FXRATE( S, LASTP) - XSTRK, 0)); ! and for the earlier periods; @FOR( STATE( S, T) | T #LT# LASTP: VAL( S, T) = @SMAX( FXRATE( S, T) - XSTRK, DISF * ( PUP * VAL( S + 1, T + 1) + PDN * VAL( S, T + 1)))); ! Finally, the value of the option now; VALUE = VAL( 1, 1); END MODEL: SETS: ! Binomial option pricing model on foreign exchange: What is the value in $ of an option to buy one unit of a foreign currency at specified/strike exchange rate? The binomial model assumes the exchange rate can either go up from one period to the next by a fixed factor, or down by another fixed factor; ! No. of discrete periods to use, including time now ( 6 means 5 future periods); PERIOD /1..6/:; ENDSETS DATA: ! Current exchange rate, $ per foreign unit; XCURR = .5893;þÿÿÿýÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot Entryÿÿÿÿÿÿÿÿò CONTENTSÿÿÿÿÿÿÿÿÿÿÿÿò ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  !"#$%&'þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot Entryÿÿÿÿÿÿÿÿ*0_šîÏ»òÀð^€ÞÂgfþÄ ContentsÿÿÿÿÿÿÿÿÿÿÿÿÔ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿýÿÿÿþÿÿÿ þÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  !"#$%&'()*+,-./01234567þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿf3 ! First the states where it goes down every period;\cf2 \par \cf1 @FOR\cf2 ( PERIOD( T) | T #GT# 1: \par FXRATE( 1, T) = FXRATE( 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 FXRATE( S, T) = FXRATE( S - 1, T - 1) * UPF); \par \cf3 ! Do the dynamic programming;\cf2 \par \cf3 ! Set values in the final period;\cf2 \par \cf1 @FOR\cf2 ( PERIOD( S): \par VAL( S, LASTP) = \par \cf1 @SMAX\cf2 ( FXRATE( S, LASTP) - XSTRK, 0)); \par \cf3 ! and for the earlier periods;\cf2 \par \cf1 @FOR\cf2 ( STATE( S, T) | T #LT# LASTP: \par VAL( S, T) = \cf1 @SMAX\cf2 ( FXRATE( S, T) - XSTRK, \par DISF * ( PUP * VAL( S + 1, T + 1) + \par PDN * 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 on foreign exchange: \par What is the value in $ of an option to buy one unit of a foreign currency at specified/strike exchange rate? The binomial model assumes the exchange rate can either go up from one period to the next by a fixed factor, or down by another fixed factor;\cf2 \par \cf3 ! No. of discrete periods to use, including time now ( 6 means 5 future periods);\cf2 \par PERIOD /1..6/:; \par \cf1 ENDSETS\cf2 \par \cf1 DATA\cf2 : \par \cf3 ! Current exchange rate, $ per foreign unit;\cf2 \par XCURR = .5893; \par \cf3 ! Strike exchange rate, i.e., right to exchange $1 for one foreign unit at this rate;\cf2 \par XSTRK =.58; \par \cf3 ! Yearly interest rate in $ country;\cf2 \par IRD = .0581; \par \cf3 ! Yearly interest rate in foreign country;\cf2 \par IRF = .0881; \par \cf3 ! Years to maturity for the option;\cf2 \par MATRT = .098630137; \cf3 !( = 36/365);\cf2 \par \cf3 ! Yearly variance in exchange rate;\cf2 \par SIG = .13; \par \cf1 ENDDATA\cf2 \par \cf3 !--------------------------------------------------;\cf2 \par \cf1 SETS\cf2 : \par \cf3 !Generate state matrix for the DP. STATE( S, T) may \par be entered from STATE(S, T-1) if FX rate went down, \par or from STATE( S - 1, T - 1) if FX rate went up;\cf2 \par STATE( PERIOD, PERIOD)| &1 #LE# &2: \par FXRATE, \cf3 ! There is an FX rate, 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 ! Initialize the FXRATE table;\cf2 \par FXRATE( 1, 1) = XCURR; \par \cf3 ! Compute some constants;\cf2 \par \cf3 ! To avoid warning messages when IRDIFM < 0;\cf2 \par \cf1 @FREE\cf2 ( IRDIFM); \par IRDIFM = ( IRD - IRF) * MATRT/( LASTP - 1); \par SIGMSR = SIG * (( MATRT/( LASTP - 1))^.5); \par DISF = \cf1 @EXP\cf2 ( - IRD * MATRT/( LASTP - 1)); \par \cf3 ! The up factor;\cf2 \par UPF = \cf1 @EXP\cf2 ( IRDIFM + SIGMSR); \par \cf3 ! The down factor;\cf2 \par DNF = \cf1 @EXP\cf2 ( IRDIFM - SIGMSR); \par \cf3 ! Probability of an up move( assumes SIG > 0);\cf2 \par PUP = (\cf1 @EXP\cf2 ( IRDIFM)- DNF)/( UPF - DNF); \par PDN = 1 - PUP; \par \c