此夜曲中闻折柳,何人不起故园情。
1 前言
最近了解到了掘金量化这个平台,平台包含了丰富的api信息,涉及到各种金融品种的基本信息,交易数据,以及提供量化交易的众多接口。通过这个平台可以从品种选择,到历史数据回测,再到复盘数据分析,都可以面面俱到,全方位的分析和评价交易模型的优劣。在本文中将以构建简单的模型为基础,实现这个操作策略,并评价优劣。
2 交易策略制定
针对股票市场运行的特点,制定的总体策略为: 买入要慢,卖出要快,正金字塔投资,微笑曲线,低位多买。macd 反映的信号比较慢,非常适合买入要慢的策略,kdj 反应的信号要快,针对一些获利的场景,适合执行卖出要快的策略。另外针对市场的极端场景,需要根据具体的情况操作买入。
1 捡皮夹子策略,-4.1% 或者-6.2% 执行买入动作,第二天卖出。
2 macd 低位金叉执行建仓动作, DEA 值为近一年 5%分位。
3 kd 指标 85 以上操作卖出。
4 超越boll 线上轨5%执行卖出动作,每个标的尖刺情况不同,百分比不同。
5 大盘月中跌幅超过一定幅度(上证8%,深证10%,执行买入动作)
6 基准买入卖出的数量为1手,根据不同的触发条件增加。
7 如果买入被套10%,暂停买入。按照间隔时间或者最后一次买入价格的跌幅操作买入。
8 皮夹子卖出盈利标准为 5%。macd 买入盈利标准为 20%。持仓盈利30% 清仓。
3 环境准备
首先我们需要有一个 python 环境和对应的 IDE ,另外还需要在掘金量化平台下载一个客户端,完成注册后,需要获取到一个 token,这对访问掘金量化的 api 至关重要。需要说明的是,目前量化掘金平台只支持 Windows 环境。
# 掘金量化对应的api指南
https://www.myquant.cn/docs2/sdk/python/%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B.html
# 引入相关的类库
pip install gm -i https://mirrors.aliyun.com/pypi/simple/
在开始代码编写之前,需要熟悉量化掘金平台提供的api,以及需要对股票或ETF的技术指标有所了解,并明白其含义。
如上图所示,即量化掘金的三种任务模式,即定时任务、事件驱动,以及两者的组合。在本文中主要是编写模型并进行数据回测,评价模型的优劣,因此采用的是事件驱动的模式。如下图所示,即是量化操作的起手式或者是是模板。
量化掘金两个比较重要的操作,即买入和卖出动作api:
# 指定股票进行买入操作
order_volume(symbol=code, volume=100, side=OrderSide_Buy, order_type=OrderType_Limit,
position_effect=PositionEffect_Open, price=buy_price)
# 调仓股票至目标位,即卖出动作
order_target_volume(symbol=code, volume= element.buy_num, position_side=PositionSide_Long,
order_type=OrderType_Limit, price=tag_price)
4 代码实现
如下图所示,是股票基本的技术指标计算方法,根据此方法计算每个回测日期的指标,用于回测时的条件判断。
下图是用来逐日计算股票的基本信息,诸如持仓情况,交易情况,持有日期,买入价格区间,最近买入和最远买入等信息。
项目运行的逻辑是,首先需要通过 init 方法确认回测的股票或者ETF标的,设置买入和卖出的阈值信息,通过 context 进行设置。其次需要通过 on_bar 方法进行逐个交易日的回测,需要获取当天的 ochl 价格以及各种技术指标。
最终逐个实现,当天涨跌幅买入条件,定投模式买入,以及 kd/macd/boll 买入条件。
5 模型结果
回测结束之后,可以在量化掘金的客户端看到如下信息,即绩效情况和持仓分析:
根据以上的模型可以得到如下结果:
1 从模型的运行效果来说,大盘股的效果要比小盘股的效果要好,模型对流动性好的股票表现要好。
2 针对单边行情的走势,模型的表现比较差。
3 针对周期性的行情,40-50% 之间周期性波动的行情,模型运行非常好。
4 该模型在被动加仓阶段会比较消耗资金,在实际回测过程中,资金基本都是100w,而且如果股票的价格越贵,其消耗的资金会更多。
6 总结
本文讲述了既定的操作策略,并且使用 python 代码结合量化掘金平台实现其逻辑,并且借助实现了模型的效果展示以及模型的量化分析。依据此为基础,可以实现更高阶的模型编写,最终找到一个适用性强,具有容错性,能够实现稳定盈利的量化模型。 相关代码已经上传至 github, 欢迎大家 star, 项目地址 fund_python。