【发布时间】:2016-08-28 05:47:45
【问题描述】:
什么是模拟随机回报的快速方法。我知道numpy.random。但是,这并不能指导我如何为资产回报建模。
我试过了:
import numpy as np
r = np.random.rand(100)
但这感觉不准确。其他人如何处理这件事?
【问题讨论】:
标签: numpy random dataframe quantitative-finance
什么是模拟随机回报的快速方法。我知道numpy.random。但是,这并不能指导我如何为资产回报建模。
我试过了:
import numpy as np
r = np.random.rand(100)
但这感觉不准确。其他人如何处理这件事?
【问题讨论】:
标签: numpy random dataframe quantitative-finance
我建议以下两种方法之一:
One:
假设收益呈正态分布,均值等于 0.1%,标准差约为 1%。这看起来像:
import numpy as np
np.random.seed(314)
r = np.random.randn(100) / 100 + 0.001
seed(314) 在特定点设置随机数生成器,这样如果我们都使用相同的种子,我们应该会看到相同的结果。
randn 从正态分布中提取。
我还建议使用pandas。这是一个实现DataFrame 对象的库,类似于R
import pandas as pd
df = pd.DataFrame(r)
然后您可以像这样绘制累积收益:
df.add(1).cumprod().plot()
Two:
第二种方法是假设收益是对数正态分布的。这意味着 log(r) 是正常的。在这种情况下,我们提取正态分布的随机数,然后将这些值用作 e 的指数。它看起来像这样:
r = np.exp(np.random.randn(100) / 100 + 0.001) - 1
如果你绘制它,它看起来像这样:
pd.DataFrame(r).add(1).cumprod().plot()
【讨论】:
r = np.random.randn(100) / 100 + 0.001 代替r = np.random.normal(0.001, 0.01, size=100) 有什么特殊原因吗?我通常更喜欢后者,因为它非常清楚均值和标准差是什么。