Abu是一个人写的教量化投资的书,我的里面的理念和教授方法持保留意见,了解它也是觉得研究过别人,才有发言权,不然就是纯愤青了。
以下文字可以让你不用跳进代码,就能较快了解其主要特征。
择时策略
海龟的N日突破买入和N日突破卖
在图上绘制出来买点和买点,并用阴影标记出来这对买卖区间。
买入策略中,可以加入多个监控周期,如60和42;当任何一个突破周期发生突破事件后,就会发出买卖信号。
示例中,将60/42的向上突破作为买入信号,将120向下突破作为卖出信号。
择时策略优化
(1)增加止损止盈。
在60/42买入,120卖出的基础上。增加AtrNStop,这个Stop可以包含止盈止损。
C * ATR当日 > 买入价 - 当日收盘价;作为止损,表示某日的收盘价跌破了C倍的ATR,达到了最大容忍范围。
C * ATR当日 > 当日收盘价 - 买入价;作为止盈,表示某日的收盘价高过了C倍的ATR,达到了盈利预期范围,进行止盈。
(2)盘中急跌止损(风险控制止损)
当日盘中价格 - 昨收 > C * 当日ATR,表示当日急跌超过了风险忍受程度,进行止损。
这样的止损点一般是无法在发出信号的价格处卖出的,因为是急跌,短短几秒就会造成很大的下跌,因此,回测的滑点效应会很大,需要重新考虑实际成交的止损价怎么计算,单纯用信号价进行计算,几乎毫无意义。
(3)保护利润止盈
前一日股价是从买点算起盈利的。 当日盘中价 - 昨收 > C * 当日ATR,表示在盈利状态回撤的价格超过了容忍限度,卖出保护现有利润(有可能利润已经没了)。
上述3中情况的卖点(包含止损止盈,盘中风险控制),[sell_point1, sell_point2, sell_point3, sell_point4] 四个卖点组合成一个sell_factors,连同前面的buy_factors,构成一个买卖组合。
需要注意的是,上述的多个卖点组合sell_factors采取的是或关系,即只要有一个满足要求,就触发卖出。多个买点也是这种关系。
滑点策略和交易手续费
确定交易价格 一个称为滑点的类来实现
交易价格算法 (H+L)/2;H为当日最高价,L为当日最低价。
这样确定交易价格的问题是,只有到临近收盘才有可能知道当日最高价和最低价是什么,平均价会不会出现还另说呢,谁能保证收盘价就是平均价。因此这种确定价格的方式不可接受,没有意义。
交易手续费
交易手续费的设置放置在Capital类中,扣款时进行。
多股票择时回测和仓位管理
多股票择时
所有股票使用的周期参数都相同,买入数量的多少,根据ATR来决定。
仓位管理
通过胜率,平均获利期望,平均亏损期望三个参数,利用凯利公式来计算仓位。
kelly比例 = 胜率 - (1-胜率)/ (平均盈利期望/平均亏损期望)
例如:胜率 40%,平均盈利期望4%,平均亏损期望1.5%。
则kelly 比例 = 0.4 - (1-0.4) / (0.04 / 0.015) = 0.4 - 0.6 / 2.67 = 0.175
也就是,买入比例是现存资金的 17.5%
对不同的股票,配置不同的买卖点周期参数
为每个股票,设置一个买卖点周期参数,保存在dict中,传入到执行器执行。
并行执行
设定进程数,用多个进程来并发执行回测。
选股
角度选股
根据近期股票走势的价格,拟合出一条线段,根据线段的角度在某个最大角,最小角区间内来进行选股。
可以设定在一个给定的股票种子集内进行选股。
价格区间选股
给定一个价格区间,如10元到20元;选出市场中所有在这个价格区间内股票。
多条件选股
可以为选股添加多个条件,多个条件是与关系,必须同时满足;这点与这时不同,那里是或关系,满足一个条件即可。
并行执行选股
开多个进程,并行执行选股程序,节省选股时间。
回测结果度量
度量基本使用
(1)胜率信息
(2)策略收益与基准收益对照
(3)策略收益曲线
(4)策略收益柱状统计图显示(概率密度图),起始没经过贝叶斯处理,或者有大量样本点支持的情况下,不太方便称其为严格的概率密度图,叫柱状统计图更恰当。
度量的可视化
(1)收益,年化收益
(2)胜率,盈亏比
(3)平均获利期望
(4)夏普率,信息比率
(5)策略波动率,阿尔法,贝塔
因子生效统计,看信号发生都是哪些因子,以及其计数。
少了最大回撤信息,但是很好算,不应算作一个问题。
寻找策略最优参数
参数取值范围
给出止盈止损的范围,按照grid search法,逐个step的尝试哪个值是最优参数。
评分是按照度量值中的四个,默认等权重计算谁好,也可以自定义权重,表示对度量值中某个度量的倾向性。
A股市场回测
股票标记设定为A股中的标记,跑上面的流程即可。
UMP主裁系统
原理
过滤出回测系统里的失败交易样本,专门分析这些样本,设定一个裁判系统分析新的交易是否符合这些失败交易的特征,如果较大概率判定为失败交易,则选择不执行这个新的交易信号。是一种风险防范措施。
所谓的主裁,边裁;就是多个模型的聚合评价,essemble作用。
裁判模型可以用:角度,跳空,波动等特征来构造。
这种裁判式的想法,看着有点像协同过滤。
如:可以分析失败交易时,信号发生时刻以往价格数据的拟合角度特征。
----------------------------
关注微信公众号号:
挖金矿工:goldminer1024
为您的量化投资理想插上翅膀