ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-01-03 13:31:53  阅读:345  来源: 互联网

标签:deltaT calls 50ETF 二叉树 np 价格 期权 上证


上证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

标签:deltaT,calls,50ETF,二叉树,np,价格,期权,上证
来源: https://blog.csdn.net/weixin_51499396/article/details/112133854

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有