crt.fun 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #import std
  2. #import nat
  3. #import flo
  4. #import lat
  5. #library+
  6. crr ::
  7. s %eZ ~s||100.!
  8. v %eZ ~v||0.2!
  9. t %eZ ~t||1.!
  10. n %n ~n||4!
  11. r %eZ ~r||0.05!
  12. dt %e ||~dt ~t&& div^/~t float+ predecessor+ ~n
  13. up %e ||~up ~v&& exp+ times^/~v sqrt+ ~dt
  14. dn %eZ ~v&& exp+ negative+ times^/~v sqrt+ ~dt
  15. p %eZ -&~r,~dn,div^(minus^\~dn exp+ times+ ~/r dt,minus+ ~/up dn)&-
  16. q %eZ -&~p,fleq\1.+ ~p,minus/1.+ ~p&-
  17. l %eG
  18. ~n&& ~q&& ~l|| grid^(
  19. ~&lihBZPFrSPStx+ num*+ ^lrNCNCH\~s ^H/rep+~n :^\~&+ ~&h;+ :^^(
  20. ~&h;+ //times+ ~dn,
  21. ^lrNCT/~&+ ~&z;+ //times+ ~up),
  22. ^DlS(
  23. fleq\;eps++ abs*++ minus*++ div;+ \/-*+ <.~up,~dn>,
  24. ~&t+ iota+ ~n))
  25. amer = # price of an american option on lattice c with payoff f
  26. ("c","f"). ~&H\~l"c" lfold max^|/"f" ||ninf! ~&i&& -+
  27. \/div exp times/~r"c" ~dt "c",
  28. iprod/<~q "c",~p "c">+-
  29. euro = # price of a european option on lattice c with payoff f
  30. ("c","f"). ~&H\~l"c" lfold ||-+"f",~&l+- ~&r; ~&i&& -+
  31. \/div exp times/~r"c" ~dt "c",
  32. iprod/<~q "c",~p "c">+-