• 医药医疗网站解决方案

    医药医疗网站解决方案

  • 旅游网站解决方案

    旅游网站解决方案

  • 微信小程序定制开发解决方案

    微信小程序定制开发解决方案

  • 更多+
  • python障碍式期权定价公式-创新互联

    早期写的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障碍式期权定价公式-创新互联
    文章转载:http://xwwzsj.com/article/dgdjce.html

    其他资讯

    售后响应及时

    7×24小时客服热线

    数据备份

    更安全、更高效、更稳定

    价格公道精准

    项目经理精准报价不弄虚作假

    合作无风险

    重合同讲信誉,无效全额退款