金融数学作业——二叉树方法定价(上证50ETF期权)

上证50ETF/2019年1月4日

期权代码10001671.XSHG

# -*- Coding: UTF-8 -*-
# biotree.py
# @作者 ML
# @创建日期 2020-12-29T23:24:15.972Z+08:00
# @最后修改日期 2020-12-29T23:24:31.082Z+08:00
#

import numpy as np
# 二叉树模型对欧式看涨期权定价


def binarytree_ecall(S, K, r, sigma, t, N):
    '''S:标的资产价格;K:期权的执行价格;r:年化无风险利率(找到shibor加小数点);
    sigma:标的资产收益率的标准差;t:年化的时间长度;N:二叉树的步长'''
    deltaT = t / N
    u = np.exp(sigma * np.sqrt(deltaT))
    # 根据风险中性定价公式,求S方差,即可推导
    d = 1 / u
    P = (np.exp(r * deltaT) - d) / (u - d)
    # 风险中性测度
    prices = np.zeros(N + 1)
    # 股票价格向量用0填充
    calls = np.zeros(N + 1)
    # 期权价格向量用0填充
    for i in range(0, N + 1):
        prices[i] = S * (u**i) * (d**(N - i))
        # 一次计算第1、2……个价格dddd,uddd,udd,uud,uuu
        calls[i] = np.maximum(prices[i] - K, 0)
        # 然后计算对应的看涨期权价格
        # 这样就得到了最后一层二叉树的股票价格和期权价格
    for i in range(N, 0, -1):
        # 二叉树叶节点往内部节点遍历
        for j in range(0, i):
            calls[j] = (
                P * calls[j + 1] +
                (1 - P) * calls[j]) * np.exp(-r * deltaT)
            # 得到前一层的价格,此时已经是N个期权价格
            # 下一次i迭代将变成N-1个期权价格,总共迭代N次
            # 只剩下1个价格。
    return calls[0]


c = binarytree_ecall(
    S=2.265, K=2.05, r=0.019680, sigma=0.239174492, t=0.46, N=250)
print('50ETF欧式看涨期权的价格为', round(c, 100))
print('real open price: 0.29')

计算结果:50ETF欧式看涨期权的价格为 0.28560149260689566

  • 3
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值