实盘量化QMT踩坑记录(四)


这几天把回测代码改成了实盘,发现还是有几个区别的。同样的策略,聚宽选出来的股票和QMT选出来的股票存在较大的差异,5只里面有4只不一样。由于对QMT的回测功能和数据质量存疑。干脆用聚宽的模拟盘将信号写入云数据库,然后QMT只负责读取选股结果。

1.如果你采用handle_bar 的形式,那么需要加上下面的代码

    #跳过历史k线
    if not C.is_last_bar():
        return

如果不加这段代码,那么就算是实盘,他会从历史K线开始运行。

2.实盘可以通过如下代码设置账号

    g.acct = account
    ContextInfo....

Read more

实盘量化QMT踩坑记录(三)


对之前的小市值策略修正了几个Bug,并增加了RSRS-MV择时。同时最近又发现了QMT的如下几个问题:

  1. 有时候会出现pandas库找不到等问题,重启一下QMT即可。

  2. 似乎对于get_market_data_ex()等函数,即便事先不先下载数据,也会先自动去下载,所以不下载数据也能跑。

  3. QMT似乎不适合做回测。上篇,已经提到过,QMT在回测的时候,一些函数不会动态地修改“今天”,因此,如果某个函数有end_time参数,默认的话都是返回当前的时间节点,并不会在回测模式下动态的进行一个调整。因此,在回测时候,凡是有end_time参数的,我都要根据ContextInfo.barp...

Read more

实盘量化QMT踩坑记录(二)


最近有时间把一些聚宽上面的策略重现成QMT代码。主要是增加了一些择时(如RSRS择时),还有一些因子选择方面的内容。总结起来,基本上熟悉以下几个函数就差不多了。

  1. get_trade_detail_data(),主要用该函数获得账户信息(如可用资金)和持仓信息。这里有别于聚宽代码,聚宽是通过访问context全局变量里面的portfolio对象获得相关信息。

  2. get_market_data_ex(),获得股票对应的价格信息,对应于聚宽里面的get_price(),history() 和attribute_history()函数。

  3. get_financial_data(), 获得...

Read more

多因子投资的几点注意事项


因子投资主要可以分为排序法和多元回归。排序法相对简单,单因子的话,按因子值从高到低或者从低到高排序,然后取前几只股票即可。多个因子的话,需要用到多重排序,可以进一步分为条件多重排序和独立多重排序。条件多重排序先按照某个因子排序,过滤,然后针对剩下的股票再进行过滤,然后取前几只股票。排序法由于其简单易用得到了广泛的使用。

多因子投资的另一种方法是多元回归。这里我再插个题外话,不要迷信机器学习、深度神经网络。首先,你可能没有足够的数据来训练深度神经网络(现实情况往往如此),因此陷入过拟合的风险。一个大致的判断训练数据是否足够的办法是看你的训练数据是否是满足你模型参数的5-10倍。其次,深度神...

Read more

实盘量化QMT踩坑记录(一)


聚宽马上要关停其实盘量化接口,我虽然没有用聚宽的实盘,但却是其回测和研究环境的重度用户。由于我目前的策略换仓频率不是很频繁,所以我都是先在聚宽研究环境里面跑,然后手动下单。虽然聚宽实盘关停对我影响不大,但是觉得万一哪天回测,研究环境啥的也给砍了咋办。所以还是得提前想好对策。

目前市面上比较主流的可以支持个人用户做量化的系统就是QMT和Ptrade,QMT所有数据和策略保存在本地,运行策略的时候需要电脑保持实时开机状态。Ptrade在云端运行,需要上传策略。QMT更加面向机构和专业投资者,两者的区别不再赘述,感兴趣的朋友可以自己查找相关资料。目前QMT和Ptrade的开户门槛都有所下降。 ...

Read more

永久性投资组合之二(哈利·布朗)


相对于上一篇桥水全天候策略中利用一致性风险衡量指标ES来决定仓位的大小,哈利·布朗的永久性策略更加简单,提出分别在 4 种大类资产——股票、债券、现金、黄金上配置 25 % 的个人资产。然后每个几个月(或一个月调整一下)。 我们来看一下过去10年的一个回测效果:


可以看到都按照25%的比例分配,其效果是不如桥水的全天候策略的(无论是年化还是最大回撤)。但其最显著的优点就是简单,特别适合于懒人,在稍后的代码中也可以看出这一点。我们还可以把沪深300换成纳斯达克指数。其回测结果如下所示:


可以看到不但年化增加了,最大回撤也有所下降。

最后附上代码:

# 导入函数库
from jqda...

Read more

永久性投资组合之一(桥水全天候策略)


并不是所有人为了追求20%以上的年化,都能够容忍超过50%以上的回撤(况且要在多年能够实现20%以上的年化也是非常困难的一件事情)。我们说风险和收益成正比,是否存在年化可能10%左右,但是回撤极小的策略呢? 桥水的全天候投资策略就是这样一种投资组合。当然,桥水内部的版本可能要复杂的多,可能也没人真正知道。一个简化的版本可以只包含如下几种投资标的:

  1. 股票(或者指数ETF)
  2. 大宗商品(如黄金)
  3. 长期国债
  4. 其他市场的指数(如纳斯达克指数)

我们看到这些个品种的风险是相对分散的,策略的关键在于确定每一种投资标的在组合中的占比。这里涉及到对风险的衡量。有很多种不同的衡量风险的标准,如波动率,方...

Read more

小市值因子YYDS


小市值因子的有效性已经被无数人证明。在聚宽平台上只要是看上去年化收益还可以的有很多其实都用到了小市值因子。当然上面还有给小市值因子加上很多择时的(如RSRS择时等)。 我们来看看只用一个小市值因子能有怎么样的年化收益率。该策略的思路很简单:

  1. 全市场选股,过滤掉st,停牌,科创板,次新股,当天涨跌停的股票
  2. 按市值升序排列,选取市值最小的10只股票(我这里稍微做的一个改进是首先去除了市值最低的10%那部分股票,当然你也可以把这个限制条件去掉,我对比了一下收益变化不是很大)

我们先来看一下过去10年的一个回测结果


可以看到单单使用一个市值因子,就能在过去10年当中取得年化收益22.48...

Read more

alpha量价因子与机器学习模型


前几天看了一下微软的Qlib框架,感觉也没有新的东西。到是提供了两个数据集alpha158和alpha360。于是看了几个例子,想看看Qlib 是如何利用alpha158 来做量化的。 其实Qlib的alpha158也好,国泰君安的alpha191因子也好,如果你仔细看一下这些因子的公式,我猜测大概率应该是根据类似遗传算法这种生成的。也就是说,这些个因子就是从原始的开盘价,收盘价,最高价,最低价,成交量等量价数据的基础上计算出来的。比如考虑alpha191 中的第一个因子alpha001的公式如下:

(-1 * CORR(RANK(DELTA(LOG(VOLUME),1)),RANK((...

Read more

约翰·邓普顿逆向投资策略


约翰·邓普顿(John Templeton)是邓普顿集团的创始人,是全球最受尊敬的投资人和最成功的基金经理之一,被福布斯称为“全球投资之父”。 邓普顿以“逆向投资”著称。其最著名的投资案例包括在二战期间借入1万美金购买104只低价股,并在随后几年翻了三倍。邓普顿在1999年互联网泡沫期间大举做空互联网股票。 其投资策略包含了如下列出的几个要点[1]:

  1. 在数据库中选择P/B 最低的40% 个股。
  2. P/E 小于过去5年平均水平。
  3. 过去5年盈利的增长均为正。
  4. EPS 的增长率高于行业平均。
  5. 营业利润率(OPM)高于过去5年平均水平。
  6. 长期负债与权益的比值小于行业平均水平。
  7. 总资产与总负债的比...

Read more