如何用numpy模拟随机回报

Bri*_*ian 1 random numpy quantitative-finance dataframe

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

我试过了:

import numpy as np

r = np.random.rand(100)
Run Code Online (Sandbox Code Playgroud)

但这并不准确.其他人如何处理此事?

piR*_*red 5

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


One:
假设回报通常分布,平均值等于0.1%,标准偏差约为1%.这看起来像:

import numpy as np

np.random.seed(314)
r = np.random.randn(100) / 100 + 0.001
Run Code Online (Sandbox Code Playgroud)

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

randn 从正态分布中拉出来.

我也建议使用pandas.它是一个实现DataFrame类似于的对象的库R

import pandas as pd

df = pd.DataFrame(r)
Run Code Online (Sandbox Code Playgroud)

然后,您可以绘制累积回报,如下所示:

df.add(1).cumprod().plot()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Two:
第二种方法是假设返回是正常分布的日志.这意味着log(r)是正常的.在这种情况下,我们拉出正态分布的随机数,然后使用这些值作为指数e.它看起来像这样:

r = np.exp(np.random.randn(100) / 100 + 0.001) - 1
Run Code Online (Sandbox Code Playgroud)

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

pd.DataFrame(r).add(1).cumprod().plot()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 全面的答案.为交易期权估值做了很多工作,所以也许值得搜索人们对此做的事情.如果您假设股票可能会以二元方式上涨或下跌,具体取决于其波动性,但趋势与无风险收益率一致,那么随着时间段的减少,这个二项式分布趋势会朝向对数正态 (2认同)