0 前言
这篇文章是与上一篇《传统选股方法的基础流程》是遥相呼应的,二者也并非对立的关系,相反地,在量化选股流程中我们可以看到各种形形色色的因子,它既包括基本面因子也有着技术因子,因此我们不能割裂地去看待二者的联系。
这篇文章的内容很大部分来自于各位大佬在知乎的回答,更多的细节可以移至我的知乎号动态:https://www.zhihu.com/people/superman01-33。
主目录 | 子目录 |
---|---|
1 一个简单的例子 | |
1.1 可改进的地方 | |
1.2 应避免的地方 | |
2 多因子模型 | |
2.1 有效市场假说、金融行为理论 | |
2.2 CAPM资本资产定价模型 | |
2.3 Fama-French三因子模型 | |
2.4 Barra风险模型 | |
2.5 哈里马科维茨风险模型 | |
3 因子的介绍 | |
3.1 产生方式 | |
3.2 几种分类 | |
3.3 形式解读 | |
3.4 因子有效性检验 | |
4 策略的分类 | |
5 回测的评估 | |
5.1 回测框架 | |
5.2 评估指标 | |
5.3 交易成本 | |
6 模拟交易、实盘交易 |
1 一个简单的例子
下图截取自华泰证券的《人工智能选股之广义线性模型》研报,https://mp.weixin.qq.com/s/jm1RyK28xd1eadt2oc_Htg 。
1.1 可改进的地方
文章 | 链接 | 结论 |
---|---|---|
《人工智能选股之数据标注方法实证》 | https://mp.weixin.qq.com/s/TYWE0jyzNs83IxJyzkn2yw | 使用夏普比率作为标签、使用信息比率作为标签以及使用 Calmar 比率作为标签的方法,回测表现整体符合预期。 |
《人工智能选股之特征选择》 | https://mp.weixin.qq.com/s/p4VutHWsqKMk_65YPCWouw | 随着入选特征数的增加,模型预测效果先上升后下降。 |
《再论时序交叉验证对抗过拟合》 | https://mp.weixin.qq.com/s/2axJ13V-M1gBJHjczb-uRw | 分组时序交叉验证确保验证集于时序上严格在训练集后,能提升模型表现。 |
《人工智能选股之损失函数的改进》 | https://mp.weixin.qq.com/s/22rJ0xRGhGlIlSR3U0feLA | 加权损失函数更加适合样本不均衡的分类问题;广义损失函数能降低机器学习模型的换手率。 |
《偶然中的必然:重采样技术检验过拟合》 | https://mp.weixin.qq.com/s/9st6bqi3Z7cDAa49cA-4Mw | 重采样提供刻画随机性的思路,使研究者能基于指标分布进行决策。 |
《必然中的偶然:机器学习中的随机数》 | https://mp.weixin.qq.com/s/tFmTn-q_nOVDRU6B8hNbHw | 当随机数种子变化时,逻辑回归的结果几乎保持不变;全连接神经网络的结果可能发生较大变化;XGBoost 和 随机森林对随机数的敏感程度介于上述两者之间。 |
1.2 应避免的地方
这一块其实和正常的策略开发没有多大联系,但觉得很有意思,所以还是放在这里,它是关于数据泄露导致模型评估出现偏差的例子,主要分成标识类泄露、数据分布类泄露和直接给出的泄露三种。
想要阅读更多详细的内容,可以移至这篇文章:https://zhuanlan.zhihu.com/p/283730120 。
2 多因子模型
2.1 有效市场假说、金融行为理论
主题 | 描述 |
---|---|
弱式有效市场假说 | 资产价格的所有历史交易信息已经被人们充分消化了,此时针对股票价格的技术分析是失效的。 |
半强式有效市场假说 | 关于公司发展前景的所有信息也已经充分反映到了股票价格上了,此刻基本面分析也开始失效。 |
强式有效市场假说 | 甚至内幕信息也全都体现在资产现有的价格当中了,这时候做任何研究都是徒劳的。 |
金融行为理论 | 完全理性的经济人是不可能存在的,那么只要能够精准洞察人们的不理性行为,就可以找到赚钱的机会。所以,市场是可以战胜的。 |
2.2 CAPM资本资产定价模型:时间序列回归(当期收益率vs当期因子)
决策函数:
其中
代表股票 的收益率;
代表市场组合的收益率,在实践中可以用大盘收益率代替;
代表无风险收益率,实践中可以用国债收益率代替;
代表随机因素。
2.3 Fama-French三因子模型:时间序列回归(当期收益率vs当期因子)
决策函数:
其中
代表股票 的收益率;
代表市场组合的收益率,在实践中可以用大盘收益率代替;
代表无风险收益率,实践中可以用国债收益率代替;
代表随机因素;
(small minus big) 代表规模风险溢价(size premium);
(high minus low)代表价值风险溢价(value premium);
截距 代表定价错误(pricing error),如果模型正确这项应与 0 无显著差异。
2.4 Barra风险模型:横截面回归(当期收益率vs滞后一期因子)
决策函数:
其中
代表股票 的收益率;
代表无风险收益率,实践中可以用国债收益率代替;
代表特异性收益率(specific return);
代表国家因子收益率;
到 代表 P 个行业因子收益率;
到 代表 Q 个风格因子收益率;
代表行业因子暴露,一种哑变量,表示该股票是否属于某行业;
代表风格因子暴露,往往要求进行标准化操作。
2.5 哈里马科维茨风险模型:允许卖空
目标函数:
其中
代表股票 的收益率;
代表在股票 上投入的资金比例;
代表股票 的收益 的期望;
代表个人对投资组合的目标收益期望。
3 因子的介绍
3.1 产生方式
方法 | 描述 | 举例 |
---|---|---|
业务知识 | 将自己的交易思想量化成程序设计 | |
数据挖掘 | 使用机器学习等技术进行特征衍生 | 遗传算法、特征交叉、多项式特征 |
因子合成 | 对多个现有因子进行组合,得到新的因子 | 等权法、加权法、 主成分分析法 |
3.2 几种分类
种类 | 描述 | 举例 |
---|---|---|
估值 | 反映股票估值是否符合公司价值 | 1/市净率 |
成长 | 反映公司中长期成长能力 | 净利润增速 |
盈利 | 反映公司的盈利能力、收益质量、现金流量、资本结构、偿债能力、运营能力 | 毛利率 |
规模 | 反映市值大小对投资收益的影响 | 对数流通市值 |
流动性 | 反映过去一段时间内资产价格的周转速度 | 日均换手率 |
动量 | 反映股票短期内上涨和下跌的速度 | 涨跌幅(一个月) |
杠杆 | 反映公司的负债与权益的配比情况 | 长期负债率 |
分红 | 反映公司历史的财务状况和分红能力 | 股息率 |
波动率 | 反映过去一段时间内资产价格的波动性大小 | 收益率标准差(一个月) |
技术 | 反映市场交易的量价关系 | 残差收益率标准差(十二个月) |
情绪 | 反应市场对股票的一致性看法 | wind评级的平均值 |
股东 | 反映公司股东的持股情况 | 户均持股比例的同比增长率 |
3.3 形式解读
这是《101 Formulaic Alphas》列出的第三个因子形式,这里我们对它尝试进行形式的解读。
Alpha003: (-1 * correlation(rank(open), rank(volume), 10)):
rank(open):对单个股票的开盘价序列进行排序化 rank(volume):对单个股票的成交量序列进行排序化 correlation(rank(open), rank(volume), 10):根据以上两个指标的排序结果来计算它们的近10日的相关系数 (-1 * correlation(rank(open), rank(volume), 10)):对上一步加上负号,即将相关关系进行了颠倒处理
因此,这个因子的背后交易逻辑是构建投资组合时买入开盘价和成交量相关性低的股票,也就是做多开盘价与成交量产生背离的股票。
3.4 因子有效性检验
方法 | 内容 |
---|---|
IC分析 | 表示当期因子暴露和股票下期的实际回报值在横截面上的相关系数,IC的绝对值越接近1说明因子的预测性越高。 |
收益率分析 | 假设每一次调仓时都以因子值为权重购买相应的股票组合,然后计算出每一期可以获得的收益率。 |
换手率分析 | 计算相邻两期选股组合中股票的平均换手率,如果换手率不高,那么所产生的交易手续费往往就比较低。 |
4 策略的种类
分类的依据 | 举例 | 描述 |
---|---|---|
交易产品 | 股票策略 | |
CTA策略 | 针对期货商品的交易策略 | |
期权策略 | ||
FOF策略 | ||
盈利模式 | 单边多空策略 | 在一次交易中,要么只做多要么只做空。 |
套利策略 | 利用某些金融产品价格与收益率暂时不一致的机会获得收益的策略。 | |
对冲策略 | 同时在股指期货市场和股票市场上实行数量相当、方向相反的交易,通过两个市场的盈亏相抵,来锁定既得利润(或成本),规避股票市场的系统性危机。 | |
策略信号 | 多因子策略 | |
均值回归策略 | 股票的价格会以它的均线为中心进行波动,通过捕捉偏离的股价的回归来进行获利。 | |
动量效益策略 | 如果某只股票在前一段时期表现较好,那么下一端时期该股票仍将有良好表现。 | |
二八轮动策略 | 又称大小盘轮动策略,在A股市场里大盘股数量和小盘股数量往往二八分。 | |
海龟策略 | 判断股价应该运行在一个通道内,如果突破一段时期内的最高价,则发出买入信号;如果跌破一段时期内的通道的最低价,则发出卖出信号。 | |
机器学习策略 | ||
交易速度 | 高频策略 | 一般要求秒级交易 |
非高频策略 | 往往根据换仓频率分成四种级别,分别是长线级别(一年以上)、中线级别(三个月到一年)、短线级别(三天)和超短线级别(分钟级)。 |
5 回测的评估
5.1 回测框架
仓库 | 仓库地址 | 特点 |
---|---|---|
backtrader | https://github.com/mementum/backtrader | 事件驱动框架,回测代码非常简洁且逻辑清晰,文档非常详细,但回测速度较慢 |
vectorbt | https://github.com/polakowo/vectorbt | 向量化回测框架,速度较快且文档还算详细,但画图分析几乎都要自己写 |
hikyuu | https://github.com/fasiondog/hikyuu | 速度较快,但只支持国内的股票数据,自定义数据很困难,而且文档不清晰 |
wondertrader | https://github.com/wondertrader/wondertrader | 性能一般,但有实盘接口 |
vnpy | https://github.com/vnpy/vnpy | 存在可视化界面,擅长实盘,但回测模块较差 |
lean | https://github.com/QuantConnect/Lean | 集回测和实盘于一体,代码简单,回测速度相当快 |
5.2 评估指标
分类 | 举例 | 公式 | 含义 |
---|---|---|---|
收益指标 | 策略收益率 | 策略在回测区间内的收益率 | |
策略年化收益率 | 策略在回测区间内的复合年化收益率 | ||
超额收益率 | 策略相对基准的超额收益率 | ||
风险指标 | 系统风险Beta | 表示策略收益对市场收益波动的敏感程度,用于衡量投资中面临的系统性风险 | |
非系统风险Alpha | 表示策略收益中和市场无关的部分,用于衡量投资中面临的非系统性风险 | ||
收益波动率 | 测量资产的风险性计算 | ||
夏普比率 | 度量承受单位风险所获得的超额报酬(相对无风险资产) | ||
信息比率 | 衡量相对于基准指数单位追踪误差风险带来的超额收益 | ||
最大回撤 | Max(P_x-P_y)/P_x | 描述策略可能出现的最糟糕的情况 | |
下行波动率 | 相比于普通波动率,下行波动率对收益率的波动方向进行了区分,只有当收益率向下波动时才视为风险 | ||
索提诺比率 | 度量承担一个单位下行风险获得的超额收益 |
5.3 交易成本
种类 | 描述 |
---|---|
滑点 | 在交易信号产生到交易实际执行之间价格的(不利)变动造成的额外费用 |
冲击成本 | 投资品流动性不足带来的额外交易费用 |
证管费和证券交易经手费(规费) | 双边收费,成交金额的0.00687% |
过户费 | 双边收费,更换户名支付的钱,费率一般为十万分之二 |
佣金 | 双边收费,佣金最高不超过成交金额的3‰,最低5元起,单笔交易佣金不满5元按5元收 |
印花税 | 单边收费,仅在卖出时收取,为交易金额的千分之一 |
6 模拟交易、实盘交易
主要是使用券商提供的交易接口来完成模拟或实盘交易,其中,如何针对这些接口进一步合理地封装,并搭建一个实时有效的系统是不可忽视的挑战。
中泰证券的股票交易平台XTP:https://xtp.zts.com.cn/