首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中使用nlm函数求期权隐含波动率

在R中使用nlm函数求期权隐含波动率
EN

Stack Overflow用户
提问于 2018-10-13 08:46:18
回答 1查看 864关注 0票数 1

我有一项任务,要求我使用一系列期权的参数和市场价格来计算隐含波动率。我知道最简单的方法是在R中使用compute.implied.volatility函数,但是这个问题需要我使用nlm函数来解决。我明白,在这种情况下,我希望最小化实际价格和我计算的价格之间的距离,使距离为零。要做到这一点,我显然希望改变期权的波动率,使其将我计算的价格设置为等于市场价格。我在这个问题上遇到的麻烦是让nlm函数工作,因为我们在这门课上没有学到太多关于它的知识。

我知道我应该向nlm提供一个循环,使它能够迭代计算,直到找到产生结果的最小值。我相信我没有输入一个可以与nlm一起工作的函数,因为我目前收到了一个“nlm优化器中的无效函数值”的错误。

我已经附加了我的代码以及要使用的输入,如果我写得不正确,或者如果我需要对它进行更多的修改以获得所需的易失性的答案,请让我知道。感谢大家的帮助!

代码语言:javascript
复制
```{r}

在库中加载并清除工作区

{cat("\014")

rm(list=ls(all=TRUE))

选项(digits=6)}

库(FBasics)

库(Knitr)

图书馆(Zoo)

库(心理)

库(Lubridate)

库(统计信息)

库(引导)

库(MatrixStats)

首先设置在计算IV时使用的参数向量

S <- rep(1200,12) #时间价格=0

R <- rep(0.01,12) #当前利率

T <- rep(44/365,12) #期权到期时间

X <- c(1100,1120,1140,1160,1180,1200,1220,1240,1260,1280,1300,1320) #

每种期权的执行价

type <- c(1,1,1,1,1,0,0,0,0,0,0,0)#1= Put,0=调用变量

mktprice <- c(10.5,13.8,18.2,23.9,31.2,40,31.8,23.9,17.5,12.5,9.0,6.3)

每种期权的市场价格

sigma <- rep(0.2,12) # sigma的初始猜测

options.df <- data.frame(S,X,r,T,type,type,sigma)

1.首先指定Black-Scholes函数

函数<- BS.function.call (sigma,options.df){

d1 <- (log(S/X) + (r + sigma^2/2)T) / (sigmasqrt(T))

d2 <- d1 - sigma*sqrt(T)

st <- S pnorm(d1) - Xexp(-rT)pnorm(d2)

距离<- abs(mktprice - st)

return( distance ) #我们想设置市场价格之间的距离

并使用nlm通过更改sigma计算出价格=0

}

函数<- BS.function.put (sigma,options.df){

d1 <- (log(S/X) + (r + sigma^2/2)T) / (sigmasqrt(T))

d2 <- d1 - sigma*sqrt(T)

st <- -S P范数(-d1)+Xexp(-rT)P范数(-d2)

距离<- abs(mktprice - st)

回车(距离)

}

2.为sigma创建一个初始猜测

sigma.guess <- 0.2

3.运行优化函数

对于(i in 1:nrow(options.df)){

if(键入== 0){

代码语言:javascript
复制
result[i] <- nlm(BS.function.call, sigma.guess, options.df)

}

否则{

代码语言:javascript
复制
result[i] <- nlm(BS.function.put, sigma.guess, options.df)

}

}

代码语言:javascript
复制
EN

回答 1

Stack Overflow用户

发布于 2021-01-11 01:52:00

我知道这个帖子很老,但它还没有解决,所以我会提供一些意见。您要查找的软件包是RND,可以使用以下命令通过R控制台进行安装:

代码语言:javascript
复制
install.packages("RND")

此外,请确保在加载库部分中加载包,如下所示:

代码语言:javascript
复制
library(RND)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52788568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档