如何用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()
有什么快速模拟随机的方法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()