模拟随机时间点做交易,上一篇中,我们尝试了一种交易策略。但是因为没有测试基准,我们很难对这种交易策略的效果进行评价。这种情况下,通常会假设我们能“击败”随机过程,把在随机时间点做交易作为测试基准。我们将要模拟的是,从一年所有的交易日中,随机抽取若干日进行交易。这将展示NumPy中随机数的使用。
准备工作
如有必要,请先安装Matplotlib。
具体步骤
首先,我们需要一个由随机整数构成的数组。
- 生成随机索引。
使用NumPy的randint
函数,生成随机整数。从全年交易日中随机选取若干日时,将要用到这个函数。
- 模拟交易过程。
模拟交易过程,需要用到上一步骤获得的随机索引。使用NumPy的take
函数,从收盘价数组中随机选取若干元素。
- 绘制利润直方图。
进行很多次模拟后,绘制利润直方图。
假设使用AAPL股票的交易数据,一年买卖五次,进行2000次模拟后,得到如下的直方图。
本攻略的完整代码如下。
小结
我们用到了numpy.random模块中的randint
函数。numpy.random模块中还包含了更多方便易用的随机数生成器,这些函数的功能描述如下。
函数 | 功能描述 |
---|---|
rand |
根据维度参数生成指定形状的数组。数组元素是一个随机数,符合[0,1]区间上的均匀分布。如果没有指定维度参数,则返回一个浮点数 |
randn |
数组元素是来自一个均值为0、方差为1的正态分布的采样值。维度参数的作用同rand |
randint |
给定一个下边界、一个可选的上边界和一个可选的输出形状,返回一个整数数组 |