Archive: 2025年9月21日

python障碍式期权定价公式

python障碍式期权定价公式

更新时间:2019年07月19日 09:44:11   作者:王大锤95

这篇文章主要为大家详细介绍了python障碍式期权定价公式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

早期写的python障碍式期权的定价脚本,供大家参考,具体内容如下

#coding:utf-8
'''
障碍期权
q=x/s
H = h/x H 障碍价格
[1] Down-and-in call cdi
[2] Up-and-in call cui
[3] Down-and-in put pdi
[4] Up-and-in put pui
[5] Down-and-out call cdo
[6] Up-and-out call cuo
[7] Down-and-out put pdo
[8] Up-and-out put puo
'''
from math import log,sqrt,exp,ceil
from scipy import stats
import datetime
import tushare as ts
import pandas as pd
import numpy as np
import random
import time as timess
import os
def get_codes(path='D:\code\20180313.xlsx'):     #从代码表格从获取代码
 codes = pd.read_excel(path)
 codes = codes.iloc[:,1]    
 return codes
def get_datas(code,N=1,path='D:\data\'):        #获取数据N=1当天数据
 datas = pd.read_csv(path+eval(code)+'.csv',encoding='gbk',skiprows=2,header=None,skipfooter=N,engine='python').dropna() #读取CSV文件 名称为股票代码 解gbk skiprows跳过前两行文字 第一行不做为表头
 date_c = datas.iloc[:,[0,4,5]]     #只用第0 列代码数据和第4列收盘价数据
 date_c.index = datas[0]
 return date_c
def get_sigma(close,std_th):
 x_i = np.log(close/close.shift(1)).dropna()
 sigma = x_i.rolling(window=std_th).std().dropna()*sqrt(244)
 return sigma
def get_mu(sigma,r):
 mu = (r-pow(sigma,2)/2)/pow(sigma,2)
 return mu
def get_lambda(mu,r,sigma):
 lam = sqrt(mu*mu+2*r/pow(sigma,2))
 return lam
def x_y(sigma,T,mu,H,lam,q=1):
 x1 = log(1/q)/(sigma*sqrt(T))+(1+mu)*sigma*sqrt(T)
 x2 = log(1/(q*H))/(sigma*sqrt(T))+(1+mu)*sigma*sqrt(T)
 y1 = log(H*H/q)/(sigma*sqrt(T))+(1+mu)*sigma*sqrt(T)
 y2 = log(q*H)/(sigma*sqrt(T))+(1+mu)*sigma*sqrt(T)
 z = log(q*H)/(sigma*sqrt(T))+lam*sigma*sqrt(T)
 return x1,x2,y1,y2,z
def get_standardBarrier(eta,phi,mu,sigma,r,T,H,lam,x1,x2,y1,y2,z,q=1):
 f1 = phi*1*stats.norm.cdf(phi*x1,0.0,1.0)-phi*q*exp(-r*T)*stats.norm.cdf(phi*x1-phi*sigma*sqrt(T),0.0,1.0)
 f2 = phi*1*stats.norm.cdf(phi*x2,0.0,1.0)-phi*q*exp(-r*T)*stats.norm.cdf(phi*x2-phi*sigma*sqrt(T),0.0,1.0)
 f3 = phi*1*pow(H*q,2*(mu+1))*stats.norm.cdf(eta*y1,0.0,1.0)-phi*q*exp(-r*T)*pow(H*q,2*mu)*stats.norm.cdf(eta*y1-eta*sigma*sqrt(T),0.0,1.0)
 f4 = phi*1*pow(H*q,2*(mu+1))*stats.norm.cdf(eta*y2,0.0,1.0)-phi*q*exp(-r*T)*pow(H*q,2*mu)*stats.norm.cdf(eta*y2-eta*sigma*sqrt(T),0.0,1.0)
 f5 = (H-1)*exp(-r*T)*(stats.norm.cdf(eta*x2-eta*sigma*sqrt(T),0.0,1.0)-pow(H*q,2*mu)*stats.norm.cdf(eta*y2-eta*sigma*sqrt(T),0.0,1.0))
 f6 = (H-1)*(pow(H*q,(mu+lam))*stats.norm.cdf(eta*z,0.0,1.0)+pow(H*q,(mu-lam))*stats.norm.cdf(eta*z-2*eta*lam*sigma*sqrt(T),0.0,1.0))
 return f1,f2,f3,f4,f5,f6
def main(param,t,r=0.065):
 typeflag = ['cdi','cdo','cui','cuo','pdi','pdo','pui','puo']
 r = log(1+r)
 T = t/365
 codes = get_codes()
 H = 1.2
 for i in range(len(codes)):
 sdbs = []
 for j in typeflag:
 code = codes.iloc[i]
 datas = get_datas(code)
 close = datas[4]
 sigma = get_sigma(close,40)[-1]
 mu = get_mu(sigma,r)
 lam = get_lambda(mu,r,sigma)
 x1,x2,y1,y2,z = x_y(sigma,T,mu,H,lam)
 eta = param[j]['eta']
 phi = param[j]['phi']
 f1,f2,f3,f4,f5,f6 = get_standardBarrier(eta,phi,mu,sigma,r,T,H,lam,x1,x2,y1,y2,z)
 if j=='cdi':
 sdb = f1-f2+f4+f5
 if j=='cui':
 sdb = f2-f3+f4+f5
 if j=='pdi':
 sdb = f1+f5
 if j=='pui':
 sdb = f3+f5
 if j=='cdo':
 sdb = f2+f6-f4
 if j=='cuo':
 sdb = f1-f2+f3-f4+f6
 if j=='pdo':
 sdb = f6
 if j=='puo':
 sdb = f1-f3+f6
 sdbs.append(sdb)
 print(T,r,sigma,H,sdbs)
if __name__ == '__main__':
 param = {'cdi':{'eta':1,'phi':1},'cdo':{'eta':1,'phi':1},'cui':{'eta':-1,'phi':1},'cuo':{'eta':-1,'phi':1},
 'pdi':{'eta':1,'phi':-1},'pdo':{'eta':1,'phi':-1},'pui':{'eta':-1,'phi':-1},'puo':{'eta':-1,'phi':-1}}
 t = 30
 main(param,t)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

深交所投教 | 期权入市手册(三十二):期权风险指标及应用

1. 什么是Vega?

Vega衡量了标的波动率变化对期权价格的影响,即波动率变化一个单位,期权价格产生的变化。认购和认沽期权的Vega均为正值。

Vega的相关公式为:

新期权价格=原期权价格+Vega波动率变化

同上例:有一张深证100ETF认购期权合约,行权价为3.25元,期权价格为0.2282元,Vega为1.119,此时深证100ETF波动率为17%。

在其他条件不变的情况下,如果深证100ETF的波动率变为18%,即增加了1%,则期权理论价格=0.2282+1.119(0.18-0.17)=0.2394元。

2. 什么是Theta?

Theta衡量了到期时间变化对期权价格的影响,即到期时间过去一个单位,期权价格产生的变化。一般情况下,期权的Theta为负值,特殊情况下有可能为正值。

Theta的相关公式为:

新期权价格=原期权价格+Theta时间流逝

同上例:有一张深证100ETF认购期权合约,期权价格为0.2282元,到期时间3个月,Theta为-0.396,此时深证100ETF价格为3.26元。

在其他条件不变的情况下,如果该合约到期时间流逝了一天(年化后,1天=1/365年=0.0027年),则期权理论价格=0.2282-0.3960.0027=0.2271元。

3. 什么是Rho?

Rho衡量了利率变化对期权价格的影响,即利率变化一个单位,期权价格产生的变化。认购期权的Rho是正值,认沽期权的Rho是负值。

Rho的相关公式为:

新期权价格=原期权价格+Rho利率变化

同上例:有一张深证100ETF认购期权合约,期权价格为0.2282元,Rho为0.094,目前无风险利率为2.5%。

在其他条件不变的情况下,如果无风险利率变为3.5%,即增加了1%,则期权理论价格=0.2282+0.0941%=0.2291元。

免责声明:

本文仅为投资者教育之目的而发布,不构成投资建议。投资者据此操作,风险自担。深圳证券交易所力求本文所涉信息准确可靠,但并不对其准确性、完整性和及时性做出任何保证,对因使用本文引发的损失不承担责任。

东方财富证券提示您

股市有风险,投资需谨慎

现货叫什么意思现货的定义是什么?现货的交易模式有哪些?

现货的含义与定义

现货,从字面上理解,是指当前存在并能够立即进行交易和交付的商品或资产。在金融领域,现货交易是一种常见的交易方式。

现货原油平台正规_现货交易模式_现货实物交割

现货是实实在在可以交易的货物,商品期货交易过程中具有物理属性、可以进行实际交割的产品,如黄金、白银、原油等。与期货等金融衍生品不同,现货交易不存在未来交割的约定,交易达成后即刻完成所有权的转移和实物的交付。

现货的交易模式

现货交易模式多种多样,以下为您详细介绍几种常见的模式:

1. 传统现货交易模式:买卖双方直接面对面进行交易,一手交钱一手交货。这种模式常见于农产品、金属等大宗商品市场。

2. 电子现货交易模式:通过电子交易平台进行交易。参与者在平台上发布买卖信息,系统自动匹配成交。这种模式具有交易便捷、成本低、效率高等优点。

3. 连续现货交易模式:在交易时间内,买卖双方可以随时申报买卖,交易系统按照价格优先、时间优先的原则自动成交。

下面通过一个表格来更清晰地对比这几种交易模式:

交易模式特点适用场景

传统现货交易

面对面交易,即时交付

小规模、本地化交易

电子现货交易

便捷、成本低、效率高

大规模、跨地区交易

连续现货交易

随时申报买卖,自动成交

对交易及时性要求高的场景

需要注意的是,现货交易虽然具有即时性和实物交割的特点,但也存在一定的风险。例如,市场价格波动、交易对手信用风险等。投资者在参与现货交易时,应当充分了解市场规则和相关风险,制定合理的投资策略,以保障自身的利益。

总之,现货交易作为金融市场的重要组成部分,为投资者提供了多样化的选择和机会。但在参与其中时,务必谨慎决策,做好风险管理