AI量化策略开发进阶

可视化
bigstudio
标签: #<Tag:0x00007f5be8a6e2d0> #<Tag:0x00007f5be8a6e050>

(iQuant) #1

本文主要介绍在AI可视化模板策略上的一些尝试,加入一些更为复杂的逻辑,最终提高策略开发能力达到进阶水平。

不知道大家是否有这样的疑惑,在按照平台给出的模板开发了策略以后,不知道从哪些角度提升策略效果,只知道增删一些因子不断调试。本文以一个实际的策略案例,希望大家能够掌握以下几点:

  • 修改训练集、测试集时间
  • 通过表达式引擎构建衍生因子
  • 修改数据标注
  • 通过某因子过滤数据集
  • 自定义模块
  • 加入固定百分比止损

我们依次对每点进行阐释:

  1. 修改训练集、测试集时间
     
    金融市场不同时期具有不同的市场风格,比如15年之前,中小创涨得不错,17年以来白马股表现喜人。因此我们可以通过修改开始结束日期来确定不同的训练集和测试集。如图1所示。
    image
    $$图1:修改日期获取不同的数据集$$

  2. 通过表达式引擎构建衍生因子
     
    构建衍生因子属于特征工程内容,平台的表达式引擎能够快速支持大量复杂的衍生因子。当我们评估一个人身体状况时,如果给了身高、体重数据,其实并不难很好地进行判断,但是如果我们构建一个新的特征——身高体重比(身高除以比重),此时对身体状况的判断可能有所帮助,而且这个特征对模型的贡献得分应该大于身高和体重。此外,数据也需要进行一些处理,比如销售净利率特征(fs_net_profit_margin_0),该特征能够表示公司的盈利能力,但是不同的行业周期、不同的季度变动是很大的,因此一家公司盈利能力怎么样可能还需考虑其所在的行业,因此销售净利率/所在行业平均销售盈利率这一衍生特征可能更好。更多表达式引擎的运用可以参考:bigexpr

fs_net_profit_margin_0/group_mean(industry_sw_level1_0, fs_net_profit_margin_0)

$$经行业调整过的销售净利特征率$$

  1. 修改数据标注
     
    数据标注非常重要,重要性并不亚于特征抽取,也称构建因子。如果抽取特征大多为价量特征,那么最好是通过短期的收益率来标注股票。如果抽取的特征是财务报表中的数据,比如市盈率、净资产收益率、资产负债率,因为这类因子更新很慢,一个季度才会有所调整,因此需用长期的数据,例如未来90天收益率对股票进行标注。因此数据标注和特征抽取紧密相连,具有逻辑的一致性。这里我们的标注是未来90天收益率。
    shift(close, -90) / shift(open, -1)
  1. 通过某因子过滤数据集
     
    平台目前提供了一个数据过滤模块,以便快速对数据集进行过滤。当我们需要根据某个特征来过滤时,首先应该在 输入特征列表 这个模块输入该特征。这里我们以过滤掉上市不足120个自然日的股票举例。
    image
    $$图2:过滤数据集$$

  2. 自定义模块
     
    虽然在画布的左侧有不少数据和模块可供选择(平台已封装好,可直接使用),但是机器学习和量化研究会面临各种各样的需求,因此不能单单靠封装好了的模块,在此我们可以使用 自定义模块。以去除数据集里面创业板的股票举例说明。


    因为创业板的股票以3开头,所以将股票代码以3开头的股票去掉即可,关于自定义模块如何使用可以参考:BigStudio使用文档介绍(五)
    $$图3:自定义模块$$

  3. 加入固定百分比止损
     
    虽然我们的模板策略是AI量化选股策略,但是我们依然可以将其与人工逻辑信号相结合,比如加入止盈止损、修改资金分配、加入大盘择时等等,这些都是在 Trade(交易/回测)模块里的主函数(handle_data)里实现。这里我们简单加一个固定百分比止损的例子。具体方法是将止损的代码加入Trade(交易/回测)模块主函数。如图4:


    $$图4:百分比止损$$

策略回测结果见图5:


$$图5:策略回测曲线$$

代码如下,欢迎克隆!

https://i.bigquant.com/user/iquant/lab/share/%E6%94%B6%E8%97%8F%EF%BC%88%E7%A4%BE%E5%8C%BA%EF%BC%89%2F2017-12-08%2F%E5%8F%AF%E8%A7%86%E5%8C%96%E7%AD%96%E7%95%A5_%E8%BF%9B%E9%98%B6.ipynb

社区干货与精选整理(持续更新中...)