06、构思一个可以实盘交易的策略(编辑中)
经过前几篇文章的介绍,大家应该已经对Ptrade有了一些基本的了解。接下来让我们尝试构思一个可以真正用来实盘交易的策略。以下是阿猪总结的一些基本思路,供大家参考:
一、明确需求
编写量化交易策略的本质仍然是编写程序,所以在动手写代码之前应当先有明确的需求,否则在写代码的时候容易发半天呆却无从下手,或者想一出是一出,影响写代码的效率和代码的质量。
思考下边的两个问题,有助于让你明确自己的需求:
1、我希望赚的是什么钱
回答“赚什么钱”这个问题,可以帮助你明确自己的策略在大方向上属于哪种类型、什么风格(例如事件驱动、趋势跟随、均值回归、价值投资….)
阿猪认为在股市中赚钱主要有两条途径,一是通过价格变动赚钱,二是通过股息红利赚钱。
对于通过价格变动获利,阿猪认为从根本上可以分为如下两类:
(1)估值水平的变动带动股价的变动。举例如下:
在短期,题材炒作、重大的利好利空消息等,往往会导致投资者对某个板块或某只个股的估值偏好发生明显的变化,从而使股价发生大幅的波动。
在长期,市场估值偏好会产生周期性的变化,从而使股价产生周期性的波动;投资者会因长期看好/看衰某些行业而产生趋势性的估值偏好变化,从而在盈利水平给定的情况下,使股价产生趋势性的变化。
对于给定的行业,业内竞争力强的龙头公司往往会有一定的估值溢价。
(2)盈利水平的变动带动股价的变动。举例如下:
对于周期性的行业,行业内公司的盈利水平会呈现出周期性的变动,从而带动股价产生周期性的变动。
对于处于长期上升/衰退期间的行业,行业内的公司的盈利水平会呈现出趋势性的变换,从而在估值水平给定的情况下,带动股价产生趋势性的变化。
2、为了赚这个钱,我该如何构建相应的交易体系。
在大方向上明确了自己策略的类型之后,需要构建具体的交易体系来落实自己的策略,实现需求。以下是几个通常需要考虑的因素:
(1)选股
在量化交易中,选股的方式有两个极端:一个极端是选择哪些因子、如何设定参数、如何组合,都是依靠投资者的个人主观决策,而策略只是以程序化的方式去实现这套主观的规则。另一个极端是把历史数据投喂给“黑匣子”训练,然后从结果中得到回测效果最理想的因子、参数及组合方式。倘若我们好奇的问一下“这个策略为什么回测结果这么牛逼,它的背后逻辑是什么”,你得到的回答可能是“抱歉,我也不知道”。
在现实中,大部分量化交易策略的选股逻辑往往介于这两个极端之间的。
(2)择时
通过选股规则确定了股票池后,股票池中个股的价格水平或者走势可能并不符合我们的预期。这个时候我们并不想立刻下单买入,而是耐心地等待个股的价格水平或者走势符合我们的预期之后再下单。
例如:等待指数的价格水平回落到上一个牛市高点的50%以下;等待个股的半年线向上穿越年线;等待个股的PE回落到15以下。
选股与择时之间既有区别又有联系,有时候甚至很难区别。整体来讲,选股更侧重于体现策略的大方向,而择时更侧重于买卖点的把握。
(3)资金管理
可以简单的把资金管理理解为“我打算分配多少资金给这个策略”。
我们可以综合考虑自身的财务状况、投资目标、风险偏好、风险承受能力等,再结合经济周期、金融市场环境等因素确定大类资产配置的类别和比例,确定用于股市投资的资金量。
如果资金量较大,而投资标的过于集中,或者市场的流动性较低,还应当考虑策略的市场容量。
(4)仓位管理
对于给定的资金量,可以结合策略的特性来制定适合的仓位管理规则,从而兼顾风险和收益的平衡。
一个好的策略除了应当有尽可能高的交易胜率,还应当让你能够在市场中长期存活下来,确保不会因连续的亏损或者其他极端情况而元气大伤。而仓位管理就是管控风险的重要手段之一。举例如下:
假设我们股票账户整体愿意承受的最大亏损是5%,单只股票愿意承受的最大亏损是20%,那么可以将单只股票的持仓上限控制在5%÷20%=25%。
假设我们股票账户这个月愿意承受的最大亏损是5%,当前的仓位是20%,当前持仓股的预设止损价位是亏损10%,那么留给我们的可亏损额度就是5%-10%×20%=3%。接下来应当确保每次下单的仓位和预设的止损都应当确保整体账户的潜在亏损不超过5%,否则当月就不应该再下单;对于持仓股,也应当确保整体账户的潜在亏损不超过5%,否则就应该减仓调整。
假设我们比较看好一只股票,但是既担心买入后会继续下跌,又担心不买会踏空错过行情。那么可以考虑先买入三分之一,等下跌到一定价位后再买入三分之一,待上涨趋势基本确立后再买入三分之一。
(5)止盈止损
先来举一个简单的例子:假设我们的选股胜率是60%,每笔交易在亏损10%时止损,而在盈利5%时就止盈,那么从概率的角度来看,这个策略长期的期望收益是5%×60%-10%×40%=-1%。
从这个例子可以看出,在选股胜率给定的情况下,止盈止损规则对策略期望收益的影响是显而易见的。而一个好的止盈止损规则,应当能够帮助我们在交易胜率给定的情况下,尽可能的提高策略长期的期望收益。
列举几个止盈止损规则:
半年线向下击穿年线,可能表示长期上涨趋势结束,清仓止盈。
K线跌破近期的横盘支撑位,可能表示短期将进入下跌行情,清仓止损。
此外,止盈止损规则也可以结合仓位管理规则一起使用。例如,如果技术指标显示上涨动力不足,则先卖出一半仓位,锁定利润。如果后市继续上涨,则不会踏空;如果后市继续下跌至预设价位,则卖出剩余仓位。
二、梳理策略的代码实现逻辑
当我们明确了自己的需求后,可以结合Ptrade的策略框架体系和各种API函数的功能来梳理需求的实现逻辑,将交易体系转化为量化交易策略的代码。(参考链接:Ptrade策略框架简介、API文档)
让我们用一个简单但是结构完整的策略来举例说明:
规则 | |
选股 | PE<20 |
择时 | 1、前一交易日的MA60>MA120 2、最新成交价>前一交易日的MA120,且幅度不超过10% |
仓位管理 | 1、每只股票使用40%的仓位一次性买入 2、最多持有2只股票 |
止盈 | 单只股票前一交易日的MA60 |
止损 | 单只股票的账面亏损>5%,且当日11:00之后仍然>5% |
(编辑中)