Rookie's Quant-trading(1)


量化交易似乎是一个很高大上的名词,隔行如隔山,以我短浅的股票投机经历,我也只能边学习边探讨。
也是从Crossin这个公众号受到启发,又跟师兄聊了一些投机经历,这两天开始小试牛刀一下。

平台选取在国内的:
优矿
uqer.io

进入,注册,然后开始研究,新建策略,这时候就给出了一个比较简单的策略。

参考Crossin公众号的一些基本操作,打算自己先简单的编写一个策略试试手。
正好之前某天和师兄一起去下地,我们互相交流并探讨了一下关于股票投机的经历和一些操作观念。。从实验室聊到了车上,又从车上说到了地里。。总的来说,虽然我和师兄的投机观念有较大的不同,但也是可以求同存异的。
当天在地里,师兄就给我谈了谈他的一种交易手法。
基本是这样的:超短线进出,日跌幅小于3%,半仓;日跌幅大于3%小于6%,全仓;日跌幅大于6%,割肉止损;日涨幅大于9%,止盈。大概就是这些。
于是我试着把这个策略写了一下:

简单解释一下:
start&end:起始和结束时间,这里我是选择了一个2年的时间段。
universe:股池,这里我选择了师兄最喜欢交易的东航。
freq:策略类型,这里我选择的是日间交易
refresh_rate:调仓频率,由于是超短交易,所以我设为了每日交易。
initialize:账户初始化,暂时没有用到。
handle_data(account):每次调仓的交易策略,最为主要。
account.get_attribute_history:获取股票历时数据,这里传入的第一个参数“closePrice”为收盘价,第二个参数为10,即获取最近10天内该股的收盘价格,return一个list。
account.universe:从全局变量universe和当前持有的股票池中,剔除了当天停牌、退市和数据异常股票的股池。
hist[s][-1]/hist[s][-2]-1:最近交易日的日涨跌幅
order_pct(s,0.5):交易股票使其价值为账户总资产的50%,这里即半仓。
order_to(s,0):交易一定股票使交易后该股数量为0,即清仓。

大体就是如此,按此策略,我们试着跑了一下:

似乎还不错的样子,阿尔法达到了32.9%,应该说是轻松超过了基准,最大回撤还是有些大,达到了45.6%,不太理想,说明风险控制不足。于是我准备在此基础上再简单加一些风控机制。
即5日内跌幅大于10%或15日内涨幅超过50%时,全部清仓。
于是变成了:

再试着跑了一下:

看起来有效果了,阿尔法达到了62.9%,回撤也下降到了31.1%。从两图对比也可以看出在后半段15年8月左右的下跌中较好的控制了风险。

但我们也不能仅仅满足于此,股池内股票单一,只有一只东航,东航在14、15年涨幅巨大,本身就是只牛股,可能不太具有说服力,于是我又调仓换股,换个大蓝(烂)筹(丑),工商银行试试看。

显然跟之前相比不尽如人意,想了想会不会是由于工行盘子太大,波动小导致此策略施展不开:)于是再换一只同样稳的不行的601857中国神油看看:

果然也是不分上下,烂的抠脚啊。
既然如此,换成牛市后期和股灾中十分抢眼的国企改革龙头中粮生化看看:

嗯。。很惊人,再细看中粮这段时间的独立走势:

发现策略在头肩顶结构后还能创出新高,嗯。。看来我做的这个简单风险控制策略还不错。。
当然我这只是粗略的写了一个小策略,也有许多不完善的地方,仓位的分散及股池内股票筛选、权重,都还没有制定,只是以一个简单的交易策略为依据,就当作练练手了。

可以参考:

阅读原文:Crossin的编程教室

优矿的API文档:https://uqer.io/help/faqApi/

&

讲了一些python做数据处理,之前有用R语言处理一些数据,虽然支持生信分析的包很多,但感觉用起来还是不太顺手,所以再准备学习一个。能用在平时学习上,顺便与量化交易做对接。

关于Quant-trading,我也只能闲暇时间学习一个,作为一个Rookie,我也只能偶尔写写心得,做一些微小的事情。

Yumin Huang wechat
快来订阅我的公众号吧-,-
坚持原创分享,来支持一下作者吧~