R语言中进行期权定价的Heston模型
时间:2022-07-22
本文章向大家介绍R语言中进行期权定价的Heston模型,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
原文链接:http://tecdat.cn/?p=12111
在本文中,我将向您展示如何模拟股票价格的Heston随机波动率模型。
Heston模型是针对具有随机波动性的期权,并于1993年申请了债券的货币期权。对于固定的无风险利率
,其描述为:
通过使用这种模型,可以得出欧洲看涨期权的价格 。
这是函数的描述。
callHestoncf(S, X, tau, r, v0, vT, rho, k, sigma){# S = Spot, X = Strike, tau = time to maturity# r = risk-free rate, q = dividend yield# v0 = initial variance, vT = long run variance (theta)# rho = correlation, k = speed of mean reversion (kappa)# sigma = volatility of volatility}
现在,进行蒙特卡洛定价。我们将为3个欧洲看涨期权定价
,具有3种不同的执行价格。我们在15年中使用100000个模拟,每个月进行一次。以下是对仿真有用的参数:
#Initial stock priceS0 <- 100# Number of simulations (feel free to reduce this)n <- 100000# Sampling frequencyfreq <- "monthly"# volatility mean-reversion speedkappa <- 0.003# volatility of volatilityvolvol <- 0.009# Correlation between stoch. vol and spot pricesrho <- -0.5# Initial varianceV0 <- 0.04# long-term variancetheta <- 0.04#Initial short rater0 <- 0.015# Options maturitieshorizon <- 15# Options' exercise pricesstrikes <- c(140, 100, 60)
为了使用模拟Heston模型,我们首先需要定义如何进行模拟。
此函数提供一个包含2个成分的列表,每个成分包含模拟的随机高斯增量。
# Stochastic volatility simulationsim.vol <- simdiff(n = n, horizon = horizon,frequency = freq, model = "CIR", x0 = V0,theta1 = kappa*theta, theta2 = kappa,theta3 = volvol, eps = shocks[[1]])# Stock prices simulationsim.price <- simdiff(n = n, horizon = horizon,frequency = freq, model = "GBM", x0 = S0,theta1 = r0, theta2 = sqrt(sim.vol),eps = shocks[[2]])
现在,我们可以使用3种不同的
计算期权价格。
# Stock price at maturity (15 years)print(results)strikes mcprices lower95 upper95 pricesAnalytic1 140 25.59181 25.18569 25.99793 25.961742 100 37.78455 37.32418 38.24493 38.178513 60 56.53187 56.02380 57.03995 56.91809
从这些结果中,我们看到这三个选项的蒙特卡洛价格与使用函数(直接使用公式来计算价格)计算出的价格相当接近。95%的置信区间包含理论价格。
下面是期权价格,作为模拟次数的函数。计算出的理论价格用蓝色绘制,蒙特卡洛平均价格用红色绘制,阴影区域表示均值(蒙特卡洛价格)周围的95%置信区间。
- Codeforces Round #434 (Div. 2, based on Technocup 2018 Elimination Round 1)&&Codeforces 861C Did yo
- Codeforces Round #434 (Div. 2, based on Technocup 2018 Elimination Round 1)&&Codeforces 861B Which
- 信用卡安全问题:被用户忽视的识别码
- Python3快速排序
- Python3插入排序
- Python3冒泡排序
- Python Selenium设计模式-POM
- 【Python学习笔记之一】Python关键字及其总结
- 前后端分离了,然后呢?
- 【Python学习笔记之二】浅谈Python的yield用法
- LINUX中常用操作命令
- Java异常抛出及try,catch应用实例
- GitHub实战系列~2.把本地项目提交到github中 2015-12-10
- 前20名Python机器学习开源项目
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 负载均衡集群介绍,LVS介绍,LVS的调度算法,LVS的NAT模式搭建
- 03 实战 Ansible-Playbook之初始化服务器
- Dubbo与Zookeeper,SpringMVC整合和使用
- Docker安全之用户资源隔离
- kubernetes(六) 基于kubeadm构建高可用k8s集群
- docker存储驱动知识归纳总结
- 未来已来——如何在VR游戏中实现3D语音
- kubernetes(五)之Dockerfile
- kubernetes(四)之Docker存储卷
- 使用卷积神经网络构建图像分类模型检测肺炎
- 如何提升docker容器安全性
- CICD(三)Ansible常用模块以及案例
- 深入SVM:支持向量机核的作用是什么
- kubernetes(三)之Docker网络详解
- kubernetes(二)之Docker容器及镜像