2016-05-03 10 views
1

ランダムなリターンをシミュレートする簡単な方法は何ですか?私はnumpy.randomを知っています。しかし、それは資産リターンをモデル化する方法に私を導くものではありません。numpyでランダムなリターンをシミュレートする方法

私が試してみた:

import numpy as np 

r = np.random.rand(100) 
をしかし、これは正確に感じることはありません。どのように他の人がこれをやっているのですか?

答えて

5

Iは、2つのアプローチのいずれかをお勧めしたい:


One:
はリターンは、通常、平均0.1%に等しいstadard偏差約1%で分布していると仮定する。これは、次のようになります。私たちの両方が同じシードを使用している場合、我々は同じ結果が表示されるはずですように

import numpy as np 

np.random.seed(314) 
r = np.random.randn(100)/100 + 0.001 

seed(314)は、特定の時点での乱数ジェネレータを設定します。

randnは正規分布から引き出します。

pandasもお勧めします。

df.add(1).cumprod().plot() 

enter image description here


Two:
二:それはあなたが、このような累積リターンをプロットすることができR

import pandas as pd 

df = pd.DataFrame(r) 

に似DataFrameオブジェクトを実装したライブラリです方法はtですo戻り値はログが正規分布していると仮定します。つまり、ログ(r)は正常です。このシナリオでは、正規分布乱数を引いて、その値を指数としてeの値として使用します。それは次のようになります。

r = np.exp(np.random.randn(100)/100 + 0.001) - 1 

あなたはそれをプロットした場合、それは次のようになります。

pd.DataFrame(r).add(1).cumprod().plot() 

enter image description here

+2

包括的な答え。トレードされたオプション評価のためにこれを行った仕事の多くは、人々がそれをしてきたことを探す価値があります。株価がボラティリティに応じてバイナリ方式で上下する可能性はあるものの、リスクフリーのリターン率に沿った傾向があると仮定すると、この二項分布はログの法線に近づく傾向にあるので、 – paddyg

+1

使用する特別な理由r = np.random.normal(0.001,0.01、size = 100)ではなく 'r = np.random.randn(100)/ 100 + 0.001'となるでしょうか?私は通常、後者を好んでいます。なぜなら、何が平均であり、何がstddevであるかが非常にはっきりしているからです。 –

関連する問題