当前位置: > 财经>正文

python学习之路:期权定价与python实现 期货套期保值简单例子计算公式是什么

2023-08-23 08:32:24 互联网 未知 财经

python学习之路:期权定价与python实现

一、目前国际上主流的期权定价模型主要有: BSM定价模型BAW定价模型CRR定价模型二叉树模型 二、模型适用,需要说明的是:

1、可以直接用BS模型计算欧式期权的理论价格。

2、BS模型对欧式期权定价有较好的支持,但美式期权由于可以随时执行,影响模型对时间和价格的参数设置,因此对美式期权定价存在困难。

3、BAW定价模型,对美式期权价格进行了近似解析方法求解。该模型,多用于美式期权定价。

4、CRR模型也可以对美式期权进行定价。

5、二叉树模型对美式期权和欧式期权定价都具有较好的支持,但是为了达到一定的精度,必须有大量的模拟运算,对系统要求较高。

三、欧式期权定价的python实现 #期权定价与希腊字母import numpy as npfrom math import sqrt, logfrom scipy import stats# 欧式期权BSM定价公式#欧式期权的看涨期权价格及各种希腊值""" Parameters: ========== S0: float 标的物初始价格水平 K: float 行权价格 T: float 到期日 r: float 固定无风险短期利率 sigma: float 波动因子 =========="""def d(S0, K, T, r, sigma): S0 = float(S0) d1 = (np.log(S0 /K) + (r + 0.5 * sigma**2) * T )/(sigma * np.sqrt(T)) d2 = (np.log(S0 /K) + (r - 0.5 * sigma**2) * T )/(sigma * np.sqrt(T)) return (d1,d2)def N(d): value = stats.norm.cdf(d, 0, 1) return value#看涨期权价格def bsm_call_value(S0, K, T, r, sigma): S0 = float(S0) d1 = d(S0, K, T, r, sigma)[0] d2 = d(S0, K, T, r, sigma)[1] value = S0 * N(d1) - K * np.exp(-r * T) * N(d2) return valuedef bsm_call_value_div(S0, K, T, r, sigma, div):S0 = float(S0)S0 = S0 - div * np.exp(-r * T) d1 = d(S0, K, T, r, sigma)[0] d2 = d(S0, K, T, r, sigma)[1] value = S0 * N(d1) - K * np.exp(-r * T) * N(d2) return value #看跌期权价格def bsm_put_value(S0, K, T, r, sigma): S0 = float(S0) d1 = d(S0, K, T, r, sigma)[0] d2 = d(S0, K, T, r, sigma)[1] value = bsm_call_value(S0, K, T, r, sigma) - S0 + K * np.exp(-r * T) return value def bsm_delta (S0, K, T, r, sigma, n): """ delta 计算 认购期权的n为1 认沽期权的n为-1 """ d1 = d(S0, K, T, r, sigma)[0] delta = n * N(n * d1) return deltadef bsm_gamma(S0, K, T, r, sigma): """ gamma 计算 """ S0 = float(S0) d1 = d(S0, K, T, r, sigma)[0] gamma = N(d1)/(S0*sigma*np.sqrt(T)) return gammadef bsm_vega(S0, K, T, r, sigma): """ vega 计算 """ S0 = float(S0) d1 = d(S0, K, T, r, sigma)[0] vega = S0 * N(d1) * np.sqrt(T) return vegadef bsm_theta(S0, K, T, r, sigma): """ theta 计算 """ d1 = d(S0, K, T, r, sigma)[0] d2 = d(S0, K, T, r, sigma)[1] theta = -(St * dN(d1) * sigma / (2 * np.sqrt(T)) + r * K * np.exp(-r * T) * N(d2)) return thetadef bsm_rho(S0, K, T, r, sigma): """ rho 计算 """ d1 = d(S0, K, T, r, sigma)[0] d2 = d(S0, K, T, r, sigma)[1] rho = K * T * np.exp(-r * T ) * N(d2) return rho 四、美式期权的python实现

1、熟悉那几个希腊字母。 2、用Python 写一下,欧式期权、美式期权和二元期权数据模型验证的结果。 3、欧式期权的定价 (1)BS模型公式计算。比较简单,直接用Python 编程,按照公式计算即可实现。 (2)蒙特卡洛模拟计算:Python 版本和Python 向量化版本 最后,还可以进一步计算各种希腊字母。 4、国内市场,豆粕、白糖、玉米、棉花、橡胶的商品期权都是美式期权。

未完待续…

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。