2016-05-28 11 views
0

私は現在、Rでログリターンをシミュレートしようとしており、簡単な投資のために予想されるP & Lを計算しようとしています。私のコードは動作していますが、期待される利益が等しくない理由私が理解するのに問題を抱えている:私の例では5350に等しいRでのログリターンシミュレーションが期待した結果にならない

(exp(annual_mean * (holding_period/253)) * investment) - investment 

。ただし、以下のシミュレーションを実行すると、常に周りの5580の利益に結果:私は期待利益からのこのような大きな偏差を期待していないシミュレーションの高い数を考慮すると

investment <- 1000000 
holding_period <- 45 
annual_mean <- 0.03 
annual_sd <- 0.05 
simulations <- 1000000 

    # Create Matrix for log-returns 
    Paths <- matrix(data = NA, nrow = holding_period, ncol = simulations); 

    # feed matrix with log-returns 
    for (k in 1:simulations) 
    { 
    Returns <- rnorm(holding_period, mean = annual_mean/253, 
    sd = annual_sd/sqrt(253)); 
    Paths[, k] <- investment * exp(cumsum(Returns)); 
    } 

    # calculate EPnL 
    EPnL <- mean(Paths[holding_period, ] - investment); 
    print(EPnL) 

。私はまた、より多くのシミュレーションを試みましたが、結果は同じです。

私は、シミュレーションの数が多いほど実際の値が期待値に近くなることを示しています。

皆さん、私の質問を理解していただきたいと思います。私はこれが財務関連のトピックであることは知っていますが、私の側からはコードに誤解があります。

ありがとうございます!

答えて

1

...正しい結果が得られているようです。私は、通常の配当収益に初期投資を乗じて継続的に複合することによって、通常の配当収益を変えているという事実を完全に無視しました。 乗算は正規分布を返すが、指数関数はランダム変数を変換して、log-normal分布にする。したがって、平均はexp(μ+σ^ 2/2)に等しく、μとσ^ 2は関連する正規分布の平均と標準偏差に等しい。

2

私はこの問題がcumsumの使用にあると信じています。あなたは、利率が複合/化合物ではなく加算されるようにリターンを扱っています。あなたは少しコードを変更し、代わりにcumprodを使用している場合、私が最終的にこの問題への答えを見つけた

# feed matrix with log-returns 
for (k in 1:simulations) 
{ 
Returns <- rnorm(holding_period, mean = annual_mean/253, sd = annual_sd/sqrt(253)) 
Returns <- 1 + Returns 
Paths[, k] <- investment * cumprod(Returns) 
} 

# calculate EPnL 
EPnL <- mean(Paths[holding_period, ] - investment) 
print(EPnL) 
+0

Danありがとうございました!私もそのことを考えていました。そして、私はこれを絶対に調和させていると考えています。しかし、多分あなたが知っている、私がcumsumで得ている価値をどのように予測することができますか?私が実際にやっていることは、株価のシミュレーションではなく、投資は初期値であることに気が付いたからです... – Philipp

+0

私は恐れていることに苦しんでいます...答えを見つけたら教えてください! –

関連する問題