本文含 7926 字,52 图表截屏
建议阅读 40 分钟
在公众号对话框回复 QTP1 下载 notebook
0
引言
本系列将 Quantopian 官网上的四节 Tutorials 好好梳理一下。
本帖讲解第一节 Basic Quantopian Lessons,旨在说明如何使用 Quantopian 的研究环境和回测环境。目录如下:
简介
数据探索
流水线
策略分析
交易算法
数据流水线
组合优化
回测分析
1
简介
交易算法(trading algorithm)是用计算机来定义一组买卖资产规则的程序。大多的交易算法都是基于历史数据和数学/统计模型来做决策的。
在 Quantopian 研究环境中有完整的美股数据可供我们使用。在 Quantopian 主页,记注点击下图的 Research --> Notebooks 就可以创建一个 Jupyter Notebook 环境来运行 Python 代码
让我们看一个简单的例子,获取苹果(AAPL)股票的日终价,并计算出其 20 天和 50 天的移动平均值(Moving Average, MA)。代码和解释如下:
画图如下,注意,MA50 比 MA20 短,MA20 比 AAPL 短, 原因很简单,求 N 天移动均值的第一个点需要 AAPL 中前 N 个数据。
打印出 MA50, MA20 和 AAPL 的形状。
aapl_close.shape, aapl_sma20.shape, aapl_sma50.shape
((756,), (756,), (756,))
三者包含一样多的数据?不合理,再看看三者含有的实际元素是什么样的。
df.head(5).append(df.tail(5))
原来 MA20 和 MA50 前 19 个和前 49 个都是 NaN,NaN 值在图中是提下不出来的,这就解释了上图三条线长短不一的原因。
总结一下:
要点
用 quantopian.research 里面的 symbols 来获取资产代号。
用 quantopian.research 里面的 prices 来获取收盘价,需要设置代号、起始日和终止日,输出是一个数据帧。
数据帧可以直接用 df.plot() 的格式作图,和 matplotlib 里面的 plot(df) 效果类似。2
数据探索
金融数据主要可分为四类,见下表总结。
在 Quantopian 中,我们可以获取从 2002 年开始每一个交易日的 8000+ 美股的价格和收益率,以数据帧的形式返回。
下面代码获取了苹果股票从 2018-10-31 到 2019-10-31 之间的收益率,代码和解释如下:
返回结果 aapl_returns 是一个系列(Series)即只有一个列标签的数据帧,行标签是日期+时间。
除了最基本的价格和收益率数据之外,Quantopian 里还可以提供公司基本面(corporate fundamentals)、股票情绪(stock sentiment)和宏观经济指标(macroecnomic indicator)等数据。在 Quantipian 里有 50+ 个这方面的数据集,列表如下:
我们用 PyschSignal Trader Mood(上图倒数第二个)来说明如何获取股票情绪数据。PyschSignal 是一个提供交易员情绪数据的公司,它主要用自然语言处理(NLP)来分析社交媒体(主要是 Twitter 和 StockTwits)上的消息,并从中为每个证券打分。从 2016 年起,这些数据就已经是 Point-In-Time (PIT) 了。
关于 PyschSignal 详情可参考以下链接:
https://www.quantopian.com/docs/data-reference/psychsignal
在下例中,我们只获取消息量(message volume)和情绪得分(sentiment score)这两类数据。为了能使获取过程更有效,Quantopian 提供了流水线 API,要使用它需要三件套: