dragongate technologies
数理ファイナンス
-
Scalaの最小二乗モンテカルロ法(Least Squares Monte
Carlo Method)
Longstaff & Schwartz 最小二乗モンテカルロ法(Least Squares Monte
Carlo Method)で計算するバミューダン・アメリカンオプション価格のScalaインプリメンテーション:
ソースコード:
lsm.scalaバージョン: 1.0 (released 2012/12/16)
ライセンス: Public Domain
使用方法:
$ scalac
lsm.scala
$ scala com.dragongate_technologies.lsmOptionValue.lsm
論文16ページにあるシミュレーションを実施した結果:
[ numPaths:
100000 numSteps: 50 dT: 0.020 expiry: 1 stock: 36.000
strike: 40.000 rate: 0.060 volatility: 0.200 ]
4.4719 ( 0.0093 ) [ 55.180sec ]
[ numPaths: 100000 numSteps: 100 dT: 0.020 expiry: 2 stock:
36.000 strike: 40.000 rate: 0.060 volatility: 0.200 ]
4.8259 ( 0.0112 ) [ 172.982sec ]
[ numPaths: 100000 numSteps: 50 dT: 0.020 expiry: 1 stock:
36.000 strike: 40.000 rate: 0.060 volatility: 0.400 ]
7.0959 ( 0.0189 ) [ 49.377sec ]
[ numPaths: 100000 numSteps: 100 dT: 0.020 expiry: 2 stock:
36.000 strike: 40.000 rate: 0.060 volatility: 0.400 ]
8.4998 ( 0.0225 ) [ 162.875sec ]
[ numPaths: 100000 numSteps: 50 dT: 0.020 expiry: 1 stock:
38.000 strike: 40.000 rate: 0.060 volatility: 0.200 ]
3.2391 ( 0.0094 ) [ 45.435sec ]
[ numPaths: 100000 numSteps: 100 dT: 0.020 expiry: 2 stock:
38.000 strike: 40.000 rate: 0.060 volatility: 0.200 ]
3.7472 ( 0.0110 ) [ 151.139sec ]
[ numPaths: 100000 numSteps: 50 dT: 0.020 expiry: 1 stock:
38.000 strike: 40.000 rate: 0.060 volatility: 0.400 ]
6.1343 ( 0.0184 ) [ 46.980sec ]
[ numPaths: 100000 numSteps: 100 dT: 0.020 expiry: 2 stock:
38.000 strike: 40.000 rate: 0.060 volatility: 0.400 ]
7.6628 ( 0.0223 ) [ 159.930sec ]
[ numPaths: 100000 numSteps: 50 dT: 0.020 expiry: 1 stock:
40.000 strike: 40.000 rate: 0.060 volatility: 0.200 ]
2.3101 ( 0.0087 ) [ 35.958sec ]
[ numPaths: 100000 numSteps: 100 dT: 0.020 expiry: 2 stock:
40.000 strike: 40.000 rate: 0.060 volatility: 0.200 ]
2.8840 ( 0.0105 ) [ 117.261sec ]
[ numPaths: 100000 numSteps: 50 dT: 0.020 expiry: 1 stock:
40.000 strike: 40.000 rate: 0.060 volatility: 0.400 ]
5.3088 ( 0.0180 ) [ 39.849sec ]
[ numPaths: 100000 numSteps: 100 dT: 0.020 expiry: 2 stock:
40.000 strike: 40.000 rate: 0.060 volatility: 0.400 ]
6.9022 ( 0.0219 ) [ 139.743sec ]
[ numPaths: 100000 numSteps: 50 dT: 0.020 expiry: 1 stock:
42.000 strike: 40.000 rate: 0.060 volatility: 0.200 ]
1.6129 ( 0.0076 ) [ 24.244sec ]
[ numPaths: 100000 numSteps: 100 dT: 0.020 expiry: 2 stock:
42.000 strike: 40.000 rate: 0.060 volatility: 0.200 ]
2.2150 ( 0.0098 ) [ 84.928sec ]
[ numPaths: 100000 numSteps: 50 dT: 0.020 expiry: 1 stock:
42.000 strike: 40.000 rate: 0.060 volatility: 0.400 ]
4.5871 ( 0.0172 ) [ 33.281sec ]
[ numPaths: 100000 numSteps: 100 dT: 0.020 expiry: 2 stock:
42.000 strike: 40.000 rate: 0.060 volatility: 0.400 ]
6.2509 ( 0.0215 ) [ 118.815sec ]
[ numPaths: 100000 numSteps: 50 dT: 0.020 expiry: 1 stock:
44.000 strike: 40.000 rate: 0.060 volatility: 0.200 ]
1.1102 ( 0.0066 ) [ 16.453sec ]
[ numPaths: 100000 numSteps: 100 dT: 0.020 expiry: 2 stock:
44.000 strike: 40.000 rate: 0.060 volatility: 0.200 ]
1.6885 ( 0.0087 ) [ 61.531sec ]
[ numPaths: 100000 numSteps: 50 dT: 0.020 expiry: 1 stock:
44.000 strike: 40.000 rate: 0.060 volatility: 0.400 ]
3.9304 ( 0.0163 ) [ 28.154sec ]
[ numPaths: 100000 numSteps: 100 dT: 0.020 expiry: 2 stock:
44.000 strike: 40.000 rate: 0.060 volatility: 0.400 ]
5.6492 ( 0.0207 ) [ 105.007sec ]
Copyright © dragongate technologies