Numba原子操作和期权蒙特卡洛估值

期权的蒙特卡洛法估值的一般步骤是

1,生成大量标的价格路径,这一步是通用的,对所有的期权都是一样的

2,根据价格路径计算到期日期权的价值,这一步根据期权类型的不同

3,求所有路径下期权价值贴现的期望。这一步也是通用的

numba支持核函数中生成随机数,也支持cuda原子操作,所以在核函数中有可能实现所有步骤,用回望期权测试一下:

import numpy as np
import cupy as cp
from scipy.stats import qmc
from scipy.stats import norm
from numba import cuda
from numba.cuda.random import xoroshiro128p_uniform_float32,create_xoroshiro128p_states
import math@cuda.jit()
def KernelLookBack(mean,payoff,rng_states,S0,K,T,r,q,sigma,steps,N):n = cuda.grid(1)if(n>=N):return    dt = T / stepsmaxprice=0S=S0for i in range(0,steps):z=xoroshiro128p_uniform_float32(rng_states, n)S=S*math.exp((r - q - 0.5 * sigma**2) * dt + sigma * math.sqrt(dt) * z)if maxprice < S:maxprice=Spayoff[n]=max(maxprice-K,0)* math.exp(-r * T)cuda.atomic.add(mean,0,payoff[n]/N)S = 100 #stock price 
T = 1/2 # time to maturity
r = 0.05 # risk free 
q = 0.02 # dividend rate
sigma = 0.25 # volatility 
steps = 100 # time steps
N = 100*1000#*1000 # number of trialsthreadsperblock=512
blockspergrid=math.ceil(N/threadsperblock)
payoffs=cp.zeros(N,dtype=cp.float32)
rng_states = create_xoroshiro128p_states(threadsperblock * blockspergrid, seed=1)
mean=cp.zeros(1,dtype=cp.float32)
KernelLookBack[blockspergrid, threadsperblock](mean,payoffs,rng_states,S,K,T,r,q,sigma,steps,N)
option_price=cp.mean(payoffs)
print("LookBack Option Price",option_price,mean[0])

经测试,随着路径增多,atomic.add加出来的结果和cupy.mean有细微的误差

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/691793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

想要拿下优质客户,一定把握好这几个关键阶段!

要想成交一个有潜力的优质客户往往需要经历五个阶段。这五个阶段分别是&#xff1a;获联、筛选、入野、破局、快速成交。 1、获联 我们的第一步工作&#xff0c;就是需要主动或者被动去吸引客户&#xff0c;把客户引进来。将客户引进来的方式有很多&#xff0c;比如朋友介绍、…

Java系列:Java多线程编程经典问题详解,深入解析Java多线程生命周期、死锁、活锁与饥饿、守护线程等问题

多线程编程是Java语言中的一个高级主题&#xff0c;它在提高程序性能和响应性方面起着至关重要的作用。本文旨在帮助Java学习人员深入理解多线程的概念&#xff0c;并准备相关的技术面试。 线程与进程 在深入多线程之前&#xff0c;我们需要理解线程与进程的基本概念。进程是…

汽车控制器软件正向开发

需求常见问题: 1.系统需求没有分层,没有结构化,依赖关系不明确 2.需求中没有验证准则 3.对客户需求的追溯缺失,不完整,颗粒度不够 4.系统需求没有相应的系统架构,需求没有分解到硬件和软件 5.需求变更管控不严格,变更频繁,变更纪录描述不准确,有遗漏,客户需求多…

Python学习笔记——按钮对象样式及字符串的格式化

在Python中使用PyQt或者PySide中按钮对象&#xff0c;可以使用setStyleSheet()方法更新按钮对象的样式&#xff0c;如果需要多次或者对多个按钮更新类似的样式&#xff0c;可以先建立一个样式字符串&#xff0c;字符串中包含定义的变量&#xff0c;通过字符串的格式化format()方…

SpringBoot配置文件日志

目录 一、SpringBoot配置文件的作用 二、SpringBoot配置文件的分类 1、application.properties 2、application.yml 3、application.yaml 三、使用配置文件实例--验证码 1、使用Kaptcha插件生成验证码 2、网页需求分析 3、前端页面 4、发送请求 5、服务器作出响应 …

VUE3 中导入Visio 图形

微软的Visio是一个功能强大的图形设计工具&#xff0c;它能够绘制流程图&#xff0c;P&ID&#xff0c;UML 类图等工程设计中常用的图形。它要比其它图形设计软件要简单许多。以后我的博文中将更多地使用VISO 来绘制图形。之前我一直使用的是corelDraw。 Visio 已经在工程设…

Django中redis和日志配置

# django-redis 配置 CACHES {"default": {"BACKEND": "django_redis.cache.RedisCache","LOCATION": "redis://192.168.3.109:6379/0","OPTIONS": {"CLIENT_CLASS": "django_redis.client.Defau…

【编程】Rust语言入门第5篇 复合类型——数组、结构体、元组、枚举

数组 Rust中有定长数组、变长数组&#xff0c;与两种字符串类似&#xff0c;前者在栈上&#xff0c;记为array&#xff0c;速度快&#xff0c;后者类型为Vector&#xff0c;在堆上&#xff0c;性能较低。 声明 Rust数组的声明比C形式较简&#xff0c;与Python形似。 let arr…

grid新建主从一对多

目录 总结一、步骤前端1.第一步-编写tabs的modelBody2.第二步编辑表扩展js 后端--重写表的add和Update方法1.第一步 总结 编写tabs的modelBody后编辑表扩展js在重写后端partial的Service 一、步骤 前端 1.第一步-编写tabs的modelBody 复制下面代码该改的改 <template&…

猫头虎分享: All in AI时代来临,作为程序员我们应该做些什么?

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

Vue3自定义全局指令批量注册

指令封装代码&#xff1a; import type { App } from "vue";const content {mounted(el : any, binding : any) {console.dir(binding.value);el.remove();} };const operate {mounted(el : any, binding : any) {console.dir(binding.value);el.remove();} };cons…

centos服务器使用1PANEL安装部署Halo

接上文&#xff0c;我们购买好了服务器并登录成功后。就可以进行建站操作啦。博主这里主要是想试一下Halo的搭建。 上期文章&#xff1a; 前端仔浅浅复习一下服务器的购买与使用 Halo是类似于WordPress的CMS博客内容系统&#xff0c;不过Halo是国内开源的&#xff0c;技术和界…

冒泡排序及其优化

冒泡排序 int[] arr {1,3,2,9,4,7,2,8};//比较多少轮(n个数字比较n-1次)for(int i0,n arr.length;i<n-1;i) {//每轮比较多少次(n-1-i次)for(int j 0;j<n-1-i;j) {//两两比较if(arr[j] > arr[j1]) { //比较结果为升序排列&#xff0c;如果想要降序排列结果将 >…

shell运行原理

前言 前一段时间由于身体的缘故和一些琐事&#xff0c;好久没有更新Linux的博文了。从本篇博文开始会接着以前的内容一直持续更新&#xff01; 本期类容介绍 为什么存在shell外壳&#xff1f; 什么是shell外壳&#xff1f; shell外壳是如何工作的&#xff1f; 一、为什么存在…

【办公类-16-07-03】“2023下学期 周计划-户外游戏 每班1周五天相同场地,6周一次循环、有场地、贴墙版”(python 排班表系列)

作品展示——有场地说明 背景需求&#xff1a; 前期做了一份“贴周计划”用的班主任版的户外游戏安排表&#xff08;中X班19周&#xff0c;没有场地&#xff09; 【办公类-16-07-02】“2023下学期 周计划-户外游戏 每班1周五天相同场地&#xff0c;6周一次循环”&#xff08;…

认识TypeScript 中的接口和类

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 接口 类 江城开朗的豌豆 在 TypeScript 中&…

企业办公终端文件数据\资料防泄密管理系统——天锐绿盾 | 防泄密软件——自动智能透明加密保护核心数据资料,防止外泄

其“数据防泄密系统”是一套从源头上保障数据安全和使用安全的加密软件系统&#xff0c;已全面覆盖Linux、Mac、Windows系统&#xff0c;可进行各类型文档加密、音视频加密、源码加密、Cad图纸加密、多种类型设计稿源文件加密。 PC端&#xff1a;https://isite.baidu.com/site/…

移动通信相关知识学习笔记

一、移动通信架构简图 移动无线的接入网是专指各种基站设备。核心网就是各种交换机。 二、无线信号基本原理 无线网络中&#xff0c;使用AP设备和天线来实现有线和无线信号互相转换。如上图所示&#xff0c;有线网络侧的数据从AP设备的有线接口进入AP后&#xff0c;经AP处理为…

Maxwell - 增量数据同步工具

前言 今天来学习一个新的大数据小工具 Maxwell &#xff0c;它和 Sqoop 很像。Sqoop主要用于在 Hadoop &#xff08;比如 HDFS、Hive、HBase 等&#xff09;和关系型数据库之间进行数据的批量导入和导出&#xff0c;而 Maxwell 则主要用于监控数据库的变化&#xff08;通过监控…

Docker基本使用【数据卷的挂载及常用命令】

镜像和容器&#xff1a;当我们利用docker安装应用时&#xff0c;Docker会自动搜索并下载应用的镜像&#xff08;image&#xff09;&#xff0c;镜像不仅包含应用本身还包含应用所需要的环境、配置、系统函数库。Docker会在运行镜像时创建一个隔离的环境&#xff0c;称为容器&am…