码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 蒙特卡洛法批量计算期权希腊值


    一般计算期权的希腊值会用中心差分的办法,比如Delta就需要分别计算标的涨跌1%的估值。再加上其他希腊值,我们就需要运行多次蒙特卡洛,时间效率不高。

    由于cuda最多支持3个维度,所以我们可以利用这一特点一次性把这些值都算出来。

    我们可以定义第一个维度是价格路径,第二个维度是估值的类型。以回望期权计算Delta和Gamma为例,核函数可以写成

    1. @cuda.jit()
    2. def KernelLookBackBatch(payoff,zpath,SMat,K,H,T,r,q,sigma,steps,N):
    3. #第一个维度是路径,第二个维度是种类
    4. path_i,kind_i = cuda.grid(2)
    5. if(path_i>=payoff.shape[0] or kind_i>=payoff.shape[1]):
    6. return
    7. maxprice=0
    8. dt = T / steps
    9. S=SMat[kind_i]
    10. for i in range(0,steps):
    11. S=S*math.exp((r - q - 0.5 * sigma**2) * dt + sigma * math.sqrt(dt) * zpath[i,path_i])
    12. #Sdebug[path_i,i,kind_i]=S
    13. if maxprice < S:
    14. maxprice=S
    15. payoff[path_i,kind_i]=max(maxprice-K,0)* math.exp(-r * T)

    调用方式改为

    1. payoffs=np.zeros((QuasiN,3))
    2. threadsperblock = (512,1)
    3. blockspergrid_x = math.ceil(payoffs.shape[0] / threadsperblock[0])
    4. blockspergrid_y = math.ceil(payoffs.shape[1] / threadsperblock[1])
    5. blockspergrid = (blockspergrid_x, blockspergrid_y)
    6. #S扩展为一个向量,分别计算上涨和下跌一个dS(0.01)的价格
    7. SMat=np.asarray([S,S*(1+0.01),S*(1-0.01)])
    8. KernelLookBackBatch[blockspergrid, threadsperblock](payoffs,zpath,SMat,K,H,T,r,q,sigma,steps,QuasiN)
    9. lookback_price = np.mean(payoffs,axis=0)
    10. print("lookback_price",lookback_price[0])
    11. print(f"lookback delta {lookback_price[1]-lookback_price[2]/(S*0.01*2)}")
    12. print(f"lookback gamma {lookback_price[1]+lookback_price[2]-2*lookback_price[0]/(S*0.01)**2}")

    这样就可以一次性把所有希腊值计算出来。

    同样的,这个方法也可以用来计算多个期权的估值。

  • 相关阅读:
    Nvidia-docker运行错误- Nvidia-docker : Unknown runtime specified nvidia
    Pytorch优化器全总结(二)Adadelta、RMSprop、Adam、Adamax、AdamW、NAdam、SparseAdam
    摸鱼三天,我写了一个通用的组建树TreeUtil工具
    bitset位集学习
    9月18日作业
    Flume配置2——监控之Ganglia
    SpringBoot基础之声明式事务和切面事务和编程式事务
    性能分析优化的道与术
    计算机毕业设计 基于SpringBoot的私人西服定制系统的设计与实现 Java实战项目 附源码+文档+视频讲解
    TELEC认证标准是什么?
  • 原文地址:https://blog.csdn.net/dxlbuaa/article/details/136182059
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号