虽然现在各种量化教程和自助平台铺天盖地,但是对于新人来说入门最重要的事情就是挖掘特征。
对于传统的学习路径第一步是学习Python或者某一门编程语言,虽说Python入门容易上手快,但是要在实际应用中对股票数据进行分析,并挖掘有用特征还是一件比较麻烦的事情。以一个简单的分析为例,使用从Kaggle下载的日本股市数据(实验使用train_files目录下的stock_prices.csv,或者直接下载优快云附件):
- 计算买入后持有1天,2天的收益
- 计算3个指标:5日,10日均价,以及日最高价除以最低价的5日最大值。
- 分析上述3个指标以及组合后与收益的关系,寻找潜在可用的特征组合。
- 对指标进行挡位划分后对特征做进一步的分析。
直接使用编程语言当然可以解决问题,但是存在以下几个挑战:
- 原始数据包含多个交易日多个股票的数据,需要进行拆分。
- 针对单个股票数据,计算特征需要自行设计算法管理时间窗口。
- 数据挡位划分,特征排列组合需要大量代码实现。
- 代码正确性验证困难,维护理解成本高。
相比与Python之类的编程语言,SQL最大的特点是声明式的,你只需要告诉系统你想做什么,具体怎么做系统在后台帮你默默完成。上面我们提到的几个挑战,借助于SQL的OLAP函数我们可以轻松完成。
本教程使用Jupyter Lab编写,大家可以直接安装Anaconda全家桶,也可以安装较小的mini conda,在文章的末尾有相关安装参考教程链接。安装后执行"pip install asqlcell"安装jupyter lab的一个sql插件,本文的Python/SQL混合编程依赖该插件实现。在教程中我们也会顺带穿插讲解一下用到的OLAP函数。
点这里下载测试数据。
首先引入我们需要的包
import asqlcell