如何用numpy模拟随机returns

How to simulate random returns with numpy

有什么快速模拟随机的方法returns。我知道 numpy.random。但是,这并没有指导我如何建模资产 returns。

我试过:

import numpy as np

r = np.random.rand(100)

但这感觉不准确。其他人是如何处理的?

我建议采用以下两种方法之一:


One:
假设 returns 服从均值为 0.1% 且标准差约为 1% 的正态分布。这看起来像:

import numpy as np

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

seed(314) 将随机数生成器设置在特定点,这样如果我们都使用相同的种子,我们应该会看到相同的结果。

randn 从正态分布中提取。

我还建议使用 pandas。它是一个实现类似于 R

DataFrame 对象的库
import pandas as pd

df = pd.DataFrame(r)

然后您可以像这样绘制累积 returns:

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


Two:
第二种方法是假设 returns 是对数正态分布的。这意味着 log(r) 是正常的。在这种情况下,我们提取正态分布的随机数,然后使用这些值作为 e 的指数。看起来像这样:

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

如果你绘制它,它看起来像这样:

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