python期权定价代码_python<span data-e="6Zqc56KN"></span>式期权定价公式_Python_脚本语言_IT 经验_爱安网 LoveAn.com...

本文分享了一段使用Python编写的期权定价脚本,涵盖了不同类型的期权(如Down-and-in、Up-and-in等)。脚本中包含了获取股票数据、计算波动率、期望回报率等关键步骤,并基于这些数据进行期权价格的计算。
摘要由CSDN通过智能技术生成

早期写的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)

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
期权定价模型与其捕捉标的现货价格过程动态的能力有关。 它的错误指定将导致定价和对冲错误。 参数定价公式取决于标的资产动态的特定形。 出于易处理性的原因,做出了一些与市场回报的多重分形性质不一致的假设。 另一方面,神经网络等非参数模型使用市场数据来估计驱动现货价格的隐随机过程及其与或有债权的关系。 在为多维或有债权,甚至是具有复杂模型的普通期权定价时,必须依赖于偏微分方程等数值方法、傅里叶方法等数值积分方法或蒙特卡罗模拟。 此外,在根据市场价格校准金融模型时,必须生成大量模型价格以拟合模型参数。 因此,人们需要快速且准确的高效计算方法。 具有多个隐藏层的神经网络是具有表示任何平滑多维函数能力的通用插值器。 因此,监督学习关注的是解决函数估计问题。 网络被分解为两个独立的阶段,一个是离线优化模型的训练阶段,另一个是模型在线逼近解决方案的测试阶段。 因此,这些方法可以以快速而稳健的方用于金融领域,用于为奇异期权定价以及根据内插/外推波动率表面来校准期权价格。 鉴于执行某些信用风险分析,它们还可用于风险管理以在投资组合级别拟合期权价格。 我们回顾了一些使用神经网络为市场和模型价格定价的现有方法,提出了校准,并介绍了奇异的期权定价。 我们讨论这些方法的可行性,突出问题,并提出替代解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值