基于Python 语言的量化策略设计与应用优化
2019-03-04黄万铭
黄万铭
(绵阳中学实验学校,绵阳621900)
0 引言
量化交易是指投资者利用计算机技术、金融工程建模等手段,将金融操作的策略加以定义和描述,并且严格按照所设定的规则去执行交易策略(买卖、价格、数量等)的自动交易方式,以协助投资决策。量化平台基本采用“初始化函数→从平台数据库取出数据→每个周期执行调仓函数→回测完成→计算统计量→绘制曲线”的逻辑过程。
目前市面上比较流行的量化平台有优矿、聚宽和米筐等;米筐支持Python3 和Java,而优矿和聚宽使用Python2;米筐和聚宽支持股票和金融期货数据,优矿平台提供股票、基金、衍生品等数据。
本策略设计采用百度公司投资的量化平台——聚宽(JoinQuant),语言编程Python,设定一亿元交易规模,最大持仓数100 只股票,模拟周期为2005~2018 年的中国股票市场。
1 需求分析
拟以多头趋势回踩策略为主决策依据,实现一个全自动化量化交易系统,并进行关键参数优化;其思路是根据若干条均线呈现出的形态,判断一支股票是否处于多头强势状态,并抓住回调的时机低位买入;再进一步分析市场状态、均线周期、买入均线和止损触发条件等关键参数对量化策略的贡献效果。
2 概要设计
系统主要功能框架如图1 所示,主要包含策略模型、牛熊判断、参数设置、买入判断、卖出判断、计算统计、绘制曲线和平台数据库等8 个部分组成。
系统主要功能框架、流程图和参数结构如图1所示。
图1 功能框架设计
图2 系统主要流程图
图3 主要参数结构设计
3 主策略算法模型
(1)选定股票池,并选定一系列参数;
(2)一组均线天数[N1,N2,N3,…,Nk]:总数量k 限制,按照从小到大排列。当相应天数的移动均线是从大到小排列时,为多头排列格局;
(3)趋势天数T:当上面指定的移动均线在T 天内都处于多头排列时,判断价格处于多头趋势;
(4)回撤均线M:当前一天的最收盘价低于M 日均线时时判断为回撤;
(5)持有股票上限num_stocks:同时最多持仓num_stocks 支股票。
(6)止损比例D 和止盈比例U:当股票价格高出买入价的U 倍,或低于买入价的D 倍时,卖出股票。
部分程序核心代码如下:for security in in_trend_stocks:
#获取历史收盘价
past_prices=attribute_history(security,g.test_ma_length,'1d','close',skip_paused=True)
#计算均线
test_ma=sum(past_prices).iloc[0]/g.test_ma_length
#获取站住均线数据
past_prices_2=attribute_history(security,g.stand_ma_length,'1d','close',skip_paused=True)
#计算均线
stand_ma=sum(past_prices_2).iloc[0]/g.stand_ma_length
#计算bias 基准线
past_prices_3=attribute_history(security,g.bias_ma_length,'1d','close',skip_paused=True)
bias_ma=sum(past_prices_3).iloc[0]/g.bias_ma_length
#获取昨日信息
previous_history=attribute_history(security,1,'1d',['close','low'])
#昨日收盘价
current_price=previous_history['close'].iloc[0]
#昨日最低价
previous_low=previous_history['low'].iloc[0]
4 关键影响因素优化
经过不同单项的海量测试,以及分析前10 大持仓、前5 大回撤区间、行业配比、Sharpe、持仓比例分析和风险控制等,发现买入均线、止损条件和均线周期影响作用较大;最佳参数设定:回撤线20 日线;止损点设定0.5%;止盈点按回撤盈利的5%;另外,因牛熊市不同市场状态差异较大,在熊市以采用BIAS 乖离率策略辅助为佳。部分策略指标分析如图4 所示。
图4 策略表现指标-持仓结构分析
图5 策略表现指标-风险分析
经过2005 年~2018 年多轮牛熊转换交替的回撤模拟,总体收益率达到1652%,平均年化收益率25%,最大回撤仅为29%,相较指数有稳定盈利。如图6 所示。
图6 优化后的策略效果-总体概览
图7 优化后的策略效果-收益分解
5 结语
本自动交易系统基于Python 语言在聚宽量化平台上开发,经过对市场状态、均线周期、止损条件和选股买入均线等关键参数的优化,并进一步通过在牛熊市采用差异化交易策略,较单独采用多头策略模式,获得了更佳的市场收益。