雪球产品定价-蒙特卡罗模拟法

一、雪球基本概念介绍

        目前备受关注的雪球产品是一类典型的自动赎回结构化产品 ,当标的资产价格在特定日期超过某约定的水平时,产品触发自动赎回,因为雪球产品通常能提供较高的票息,所以近年来得到了广大投资者的青睐,市场规模不断扩张。

        标的资产:可以是股票、指数、债券等等。比如沪深300、中证500、某具体股票等等;

        期限:标的资产未来价格变动的监测时间段;

        期初价格:标的资产在期初日的价格(模拟的起点);

        敲入观察日:一般是期限内的每一天;

        敲出观察日:一般是期限内的特定日期,譬如每月15号;

        敲入事件:在敲入观察日,标的资产价格小于敲入价格;

        敲出事件:在敲出观察日,标的资产价格大于敲入价格;

二、蒙特卡洛模拟法实现雪球产品定价步骤

        第一步、几何布朗运动模拟标的资产的价格路径
        第二步、根据产品合约的条款,对每一条路径计算期权的价值并贴现到初始时刻
        第三步、在初始时刻,计算所有路径期权价值贴现的平均值作为最终定价

三、Python代码实现

def Snowball_Price(S0, r, T, m, n, price_in, price_out, C, N, sigma):
    '''
    :param S0: 标的初始价格
    :param r: 无风险利率
    :param T: 产品期限(年化) =m/365
    :param m: 观察日
    :param n: 迭代次数
    :param price_in: 敲入价格
    :param price_out: 敲出价格
    :param C: 敲出票息
    :param N: 名义本金规模
    :param sigma: 标的波动率
    :return: 期权价值,期权价值矩阵,标的价格变动路径矩阵,计数1,2,3
    '''

    dt = T / m
    S = np.zeros(m + 1) # 用来存放标的价格变动路径
    V = np.zeros(n) # 用来存放不同路径期权价值
    S[0] = S0
    q = 0.00 # 股息率,标的为指数是为0
    lst = {90,120,150,180,210,240,270,300,330,360}  # 用来存放敲出观察日日期
    S_Paths = np.zeros((n, m + 1))  # 模拟价格矩阵
    counta = 0  # 用来记录敲出次数
    countb = 0  # 用来记录敲入但未敲出次数
    countc = 0  # 用来记录未敲入且未敲出次数

    for i in range(n):
        # flag_in/flag_out用来记录是否发生敲入、敲出
        flag_in = 0
        flag_out = 0
        t = 0 # t用来记录出现敲出的时间
        for j in range(0, m):
            S[j + 1] = S[j] * np.exp((r - q - 0.5 * sigma ** 2) * dt + sigma * np.sqrt(dt) * np.random.randn())
            if S[j + 1] > price_out:
                if j + 1 in lst:
                    t = j + 1
                    flag_out = 1
                    break
            elif S[j + 1] < price_in:
                flag_in = 1

        S_Paths[i] = S

        # 敲出
        if flag_out == 1:
        估值方法1 
        counta += 1

        # 未敲出但敲入
        elif flag_out == 0 and flag_in == 1:
        估值方法2
        countb += 1

        # 未敲出也未敲入
        elif flag_out == 0 and flag_in == 0:
        估值方法3
        countc += 1


    option_value = sum(V) / n
    return option_value, V, S_Paths, counta, countb, countc

案例:

标的资产:中证500指数

观察期限:360天,从第三个月开始每月观察敲出+每日观察敲入

名义本金:100万

敲出水平:期初价格*103%

敲入水平:期初价格*80%

敲出票息:25%

无风险利率:假设为3%

标的波动率:假设为24.55%

输出结果为:

雪球产品定价-蒙特卡罗模拟法_第1张图片

 雪球产品定价-蒙特卡罗模拟法_第2张图片

蒙特卡罗模拟实现雪球产品定价_资源下载icon-default.png?t=M4ADhttps://download.csdn.net/download/weixin_67475908/85661368

你可能感兴趣的:(python)