楼主: casey_c
1022 1

[程序分享] 基于 Python 的金融分析库:DX(二) [推广有奖]

  • 0关注
  • 10粉丝

博士生

92%

还不是VIP/贵宾

-

威望
0
论坛币
96 个
通用积分
2.1003
学术水平
2 点
热心指数
15 点
信用等级
2 点
经验
11502 点
帖子
278
精华
0
在线时间
94 小时
注册时间
2016-11-22
最后登录
2022-5-2

楼主
casey_c 发表于 2018-1-8 13:37:01 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币



以下内容转自 数析学院,只节选了部分,有需要的同学可以直接查看原文


第一部分介绍 DX 估值库,分险中立折现以及市场环境的 Python 类;
第二部分介绍几何布朗运动、跳跃扩散、平方根扩散等随机过程分险因素模拟; 第三部分介绍根据单一潜在分险因素估算单一欧式或美式行权方法的期权和衍生品估值;
第四部分介绍期权和衍生品投资组合的估值。



三、衍生品估值


2.美式行权
  1. from dx_simulation import *
复制代码
  1. me_gbm.add_constant('initial_value', 36.)
  2. me_gbm.add_constant('volatility', 0.2)
  3. me_gbm.add_constant('final_date', dt.datetime(2016, 12, 31))
  4. me_gbm.add_constant('currency', 'EUR')
  5. me_gbm.add_constant('frequency', 'W')
  6.   # 频率为每周
  7. me_gbm.add_constant('paths', 50000)
复制代码
  1. csr = constant_short_rate('csr', 0.06)
复制代码
  1. me_gbm.add_curve('discount_curve', csr)
复制代码
  1. gbm = geometric_brownian_motion('gbm', me_gbm)
复制代码
  1. payoff_func = 'np.maximum(strike - instrument_values, 0)'
复制代码
  1. me_am_put = market_environment('me_am_put', dt.datetime(2015, 1, 1))
复制代码
  1. me_am_put.add_constant('maturity', dt.datetime(2015, 12, 31))
  2. me_am_put.add_constant('strike', 40.)
  3. me_am_put.add_constant('currency', 'EUR')
复制代码
  1. from valuation_mcs_american import valuation_mcs_american
复制代码
  1. am_put = valuation_mcs_american('am_put', underlying=gbm,
  2.                     mar_env=me_am_put, payoff_func=payoff_func)
复制代码
  1. %time am_put.present_value(fixed_seed=True, bf=5)
复制代码
CPU times: user 559 ms, sys: 22 ms, total: 581 msWall time: 580 ms4.470627
  1. %%time
  2. ls_table = []
  3. for initial_value in (36., 38., 40., 42., 44.):
  4.     for volatility in (0.2, 0.4):
  5.         for maturity in (dt.datetime(2015, 12, 31),
  6.                          dt.datetime(2016, 12, 31)):
  7.             am_put.update(initial_value=initial_value,
  8.                           volatility=volatility,
  9.                           maturity=maturity)
  10.             ls_table.append([initial_value,
  11.                              volatility,
  12.                              maturity,
  13.                              am_put.present_value(bf=5)])
复制代码
CPU times: user 14.4 s, sys: 259 ms, total: 14.7 sWall time: 14.7 s
  1. print "S0  | Vola | T | Value"
  2. print 22 * "-"
  3. for r in ls_table:
  4.     print "%d  | %3.1f  | %d | %5.3f" % \
  5.           (r[0], r[1], r[2].year - 2014, r[3])
复制代码
S0  | Vola | T | Value----------------------36  | 0.2  | 1 | 4.44436  | 0.2  | 2 | 4.76936  | 0.4  | 1 | 7.00036  | 0.4  | 2 | 8.37838  | 0.2  | 1 | 3.21038  | 0.2  | 2 | 3.64538  | 0.4  | 1 | 6.06638  | 0.4  | 2 | 7.53540  | 0.2  | 1 | 2.26740  | 0.2  | 2 | 2.77840  | 0.4  | 1 | 5.20340  | 0.4  | 2 | 6.75342  | 0.2  | 1 | 1.55442  | 0.2  | 2 | 2.09942  | 0.4  | 1 | 4.45942  | 0.4  | 2 | 6.04644  | 0.2  | 1 | 1.05644  | 0.2  | 2 | 1.61844  | 0.4  | 1 | 3.84644  | 0.4  | 2 | 5.494
  1. am_put.update(initial_value=36.)
  2. am_put.delta()
复制代码
-0.4631
  1. am_put.vega()
复制代码
18.4939
以上内容转自 数析学院,如需完整内容可以直接查看原文
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


沙发
casey_c 发表于 2018-1-9 10:38:56

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-13 17:13