在前面的章节中,我们尝试了一种交易理念。但是,我们没有任何基准可以告诉我们得到的结果是否好。

在这种情况下,常见的做法是随机交易,假设我们能战胜随机过程。

我们将从一个交易年度中随机抽取一些日子来模拟交易。这将说明如何使用 NumPy 处理随机数。

这需要四个步骤,让我们看看是如何完成的。

首先,我们需要一个充满随机整数的数组:

首先, 生成随机指数。

你可以使用 NumPy 方法(randint)生成随机整数。这将与一个交易年度的随机天数相关联:

NumPy基础之模拟交易

第二步模拟交易。可以使用上一步的随机指数模拟交易。使用 NumPy 方法 ( take) 从步骤 1 的数组中提取随机收盘价:

NumPy基础之模拟交易

第三步 大量模拟的利润柱状图:

NumPy基础之模拟交易

下面是 AAPL 2000 次模拟的柱状图截图,一年内有五次买入和卖出:

你现在需要知道发生了什么?

我们使用了 ( randint ) 方法,它可以在 ( numpy.random ) 模块中找到。

该模块包含更多方便的随机发生器,如下表所示:

方法名称 方法描述
rand() 根据维度参数从 [0,1] 上的均匀分布创建一个数组。如果没有指定维度,则返回一个浮点数(参见 http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.rand.html)
randn() 从均值为 0、方差为 1 的正态分布中提取样本值。维度参数方法与 rand() 相同(参见 http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.randn.html)。
randint() 返回一个整数数组,给定一个低边界、一个可选的高边界和一个可选的输出形状(见 http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.randint.html)。