早期写的python障碍式期权的定价脚本,供大家参考,具体内容如下
10年积累的网站建设、成都网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先制作网站后付款的网站建设流程,更有洞口免费网站建设让你可以放心的选择与我们合作。#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)
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网站标题:python障碍式期权定价公式-创新互联
标题链接:https://www.cdcxhl.com/article24/dgdjce.html
成都网站建设公司_创新互联,为您提供小程序开发、标签优化、网站设计、企业建站、商城网站、关键词优化
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联