#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)

障碍期权定价 python_python障碍式期权定价公式相关推荐

  1. python障碍式期权定价公式

    python障碍式期权定价公式 早期写的障碍式期权的定价脚本 #coding:utf-8 ''' 障碍期权 q=x/s H = h/x H 障碍价格 [1] Down-and-in call cdi ...

  2. 一阶常微分方程的数值解法(二阶显式、隐式 Adams 公式及 Milne 方法)

    一阶常微分方程的数值解法 这里我们介绍二阶显式.隐式 Adams 公式及 Milne 方法求解方程. 题目: 对初值问题 u ′ = u − t 2 , 0 ≤ t ≤ 1 , u ( 0 ) = 0 ...

  3. easypoi模板导出设置单元格格式为公式

    封装设置单元格格式为公式的方法/**** 公式处理* @param workbook* @param s* @param rowIndex 数据起始行* @param cellStartIndex * ...

  4. 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 ...

  5. 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 ...

  6. 障碍期权定价 python_Python王牌加速库2:深度学习下的障碍期权定价

    作者:Yi Dong 编译:1+1=6 1.前言 上一期推文中,我们使用了Numba和CuPy来运行蒙特卡罗模拟来确定亚式障碍期权的价格.Python王牌加速库:奇异期权定价的利器​mp.weixin ...

  7. 蒙特卡罗亚式期权定价matlab,[转载]亚式期权定价-——蒙特卡罗方法介绍(二)...

    亚式期权是典型的路径依赖性期权,期权的支付有两种:固定亚式期权与浮动亚式期权,指的是到期时支付分别为: (1) max(股价路径的某种平均-K,0) ,K为某一固定敲定价格 (2)max(股价路径的某 ...

  8. 障碍 期权_障碍塔挑战赛已经开始!

    障碍 期权 Three weeks ago we announced the release of the Obstacle Tower Environment, a new benchmark fo ...

  9. 【方法】关于递推式的公式求法

    这题来自NOIP2017提高初赛题 设函数 f n = ( f n − 1 + f n − 2 ) / 2 f_n=(f_{n-1}+f_{n-2})/2 fn​=(fn−1​+fn−2​)/2 f ...

  10. 基于词表和N-gram算法的新词识别实验

    摘  要  目前未登录词问题仍然很大程度上影响着自动标引和信息检索的效率.本文提出了一种选择期刊论文的题名和摘要作为训练语料,利用N-gram算法切分和停用词典等过滤筛选非专名的新词识别方法.该方法主 ...

最新文章

  1. SC-A-LOAM:在A-LOAM中加入回环检测
  2. WINCE平台下C#应用程序中使用看门狗
  3. 开灯问题 简单模拟法
  4. .net MySql
  5. sublime 安装常用插件
  6. leetcode1046. 最后一块石头的重量(堆)
  7. 微服务架构下的身份认证
  8. 你认识的老罗又回来了!罗永浩:我的创造力才刚刚开始猥琐发育
  9. video 全屏显示
  10. js获取验证码倒计时60s(超简单)
  11. Android支付实践(三)之银联支付功能(客户端+服务端)
  12. JAVA中日期格式格式化
  13. mysql身份证号性别_mysql中身份证号判断男女人数
  14. 字节序: big-endian vs little-endian
  15. 利用朴素贝叶斯算法解决“公园凉鞋问题”
  16. SSD-caffe踩keng
  17. jvm-10 垃圾回收3-垃圾回收器
  18. File的了解与使用
  19. 用计算机上初中英语课的方法,初中英语课讲课流程
  20. donet datatable的代码输入

热门文章

  1. win8计算机触摸板怎么设置,win8.1笔记本电脑怎么关闭键盘触摸板
  2. python自定义拼音输入法_用Python从0开始实现一个中文拼音输入法的思路详解
  3. 【课程作业】学术英语写作:文献阅读报告1
  4. 微信计算机配置高速缓冲器,电脑中设置固态硬盘SSD为高速缓存器的方法
  5. pcm5102a解码芯片音质评测_音乐更重要,iQOO Pro配备独立解码芯片,Hi-Fi音质更懂你...
  6. 使用强化学习评估训练数据,准确量化训练样本
  7. 坐标3度带与6度带的知识(转载)
  8. win10 不小心卸载产品密钥
  9. numpy的使用(一)(reshape()有待研究)
  10. 在苹果Mac中如何修改图片格式?