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

时间:2013-08-27 11:27:40

标签: r

我在使用R的“fOptions”包时遇到问题。虽然我使用内置的MonteCarloSimulator及其标准创新和路径生成器,但我将支付功能更改为巴黎选项的价格。 我的问题是MCSimulation将选项的价格提高了0.2。

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

  1. 我得到一个矢量“path”,它是从几何布朗运动的指数构造的,所以第一行将这个“路径”改为包含底层值的矢量。

    < / LI>
  2. 我将路径更改为包含1s的0-1向量,其中基础值低于障碍H.

  3. 如果资产低于障碍H的k个或多个连续步骤,我将路径更改为包含信息的真假向量。

  4. 如果是这种情况,请将支付设置为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}
    
  5. 对于小k = 0,1,2 ......,代码似乎是错误的,因为期权价格低估了敲门的可能性。

    提前感谢您的帮助!

    编辑:路径通过

    生成
    wienerPath = function(eps) {
    path = (b-sigma*sigma/2)*delta.t + sigma*sqrt(delta.t)*eps
    path
    }
    

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

1 个答案:

答案 0 :(得分:0)

通过示例代码回答标题问题:

foo<-sample(c(0,1),1000,replace=TRUE)
bar<-rle(bar)

bar$values[bar$lengths >=k]

如果你从最后一行得到任何“1”,你就赢了。