R 支付函数巴黎期权-向量是否至少有k个等于1的连续条目?

R 支付函数巴黎期权-向量是否至少有k个等于1的连续条目?,r,R,我在使用R的“fOptions”软件包时遇到问题。当我使用内置的MonteCarloSimulator及其标准创新和路径生成器时,我将支付函数更改为巴黎期权定价。 我的问题是MCSimulation对选项的定价超过了0.2 现在我的问题是:我写的代码正确吗? 它应该执行以下操作(这是函数的一部分,其他内容是正确的): 我得到了一个向量“路径”,它是由几何布朗运动的指数构成的,因此第一行将这个“路径”更改为一个包含基础向量值的向量 我将路径更改为包含1s的0-1向量,其中基础值低于屏障H 我将路径

我在使用R的“fOptions”软件包时遇到问题。当我使用内置的MonteCarloSimulator及其标准创新和路径生成器时,我将支付函数更改为巴黎期权定价。 我的问题是MCSimulation对选项的定价超过了0.2

现在我的问题是:我写的代码正确吗? 它应该执行以下操作(这是函数的一部分,其他内容是正确的):

  • 我得到了一个向量“路径”,它是由几何布朗运动的指数构成的,因此第一行将这个“路径”更改为一个包含基础向量值的向量

  • 我将路径更改为包含1s的0-1向量,其中基础值低于屏障H

  • 我将路径更改为包含信息的真-假向量,如果有k个或更多连续步骤,其中资产低于屏障H

  • 如果是这种情况,请将“支付”设置为0

    path = S*exp(cumsum(path))
    path = (path <= H) + 0
    path = (rle(path)$values[which(rle(path)$lengths >= k)] == 1)
    
    if (sum(path) > 0) {payoff = 0}
    

    其中“eps”是由sobol低差异数填充的矩阵。然后,我通过运行维纳路径得到的矩阵被逐行插入到我的支付函数中,因此我原始问题代码中的“路径”是一个向量。

    要回答标题问题,而不必费力地阅读示例代码:

    foo<-sample(c(0,1),1000,replace=TRUE)
    bar<-rle(bar)
    
    bar$values[bar$lengths >=k]
    

    foo初始的
    路径从哪里来?如果它已经是一个几何布朗运动,正如你所写的,你不应该采用指数。谢谢你的回答,我插入了编辑代码。你需要计算风险中性度量的期望值,而不是物理度量值:具体来说,它通常意味着没有漂移。此外,要产生布朗运动,需要对噪声进行积分,例如,将
    eps
    替换为
    cumsum(eps)
    。(我假设你的准随机数已经是高斯数了。)我把完整的代码贴在这里:也许你可以看一下,我想我用正确的方法计算了路径。我使用geom的解计算资产树的路径。布朗运动(),μ是我的利率,σ是波动率。谢谢你的回复。不知道你可以删除“which()”。如果我没有正确理解您的意思,很抱歉,但是如果我对最后一行求和并检查它是否大于0,我不知道结果吗?很抱歉,我的R代码和英语不是很好。@JohnDoe746是的,但要小心。如果您的输入纯为1和0,则可以对最后一行求和。如果还有其他值,那么您可能需要执行类似于
    any(bar$values[bar$length>=k]==1)
    好的,谢谢。但是从
    path=(path@johnde746 Yes-您不需要执行
    +0
    ,因为后续函数将根据需要将
    path
    中的真/假值强制为数字。
    foo<-sample(c(0,1),1000,replace=TRUE)
    bar<-rle(bar)
    
    bar$values[bar$lengths >=k]