基于qlib自定义的A股股票池:计算均线,动量,MACD等以及可视化

百天计划之第25天,关于“智能量化,财富自由与个人成长”。

8月的重点工作是讲清楚qlib智能量化框架的使用,不只是tutorail这样的试用教程,而是真正用于生产环境。

文档和示例有很多未尽事宜,而且框架本身还没有到1.0,还有持续迭代开发中,所以很多具体的用法,需要到代码中去理解。


好在qlib的代码质量还是非常高的,写得非常清晰,读qlib的代码,对于python编程能力也有帮助。

今天重点说说:

基于自定义的A股股票池,自定义指标:均线,动量,MACD等,然后可视化出来。

01 从tushare到mongo

昨天的文章,我们把茅台(600519.sh)的日线数据以及财务指标入库mongo并导入到qlib的库中。今天我们扩展成10支股票(一次到位可以,需要一些时间,作为示例,10支与4000支区别不大)。

选择我自己持有的一支基金——富国天惠(161005)的前十大重仓股:

tips: mongo默认是按照_id字段去重的,而且会把_id相同的直接忽略掉,其余可以正常写入,这一点非常方便。

从tushare批量建数据,还涉及到每天盘后更新。

所以呢,一般会把_id设置成唯一key,这样不用担心数据重复入库。

每次入库前,会判断已经入库的日期,然后以此日期为起点,从tushare读取增量数据,其余逻辑都是一致的。

02 从mongo到qlib

逻辑类似,都有一个一次性建立以及增量更新的问题。

与mongo入库类似,我们通过查询qlib数据中已经存在的最近的日期,以此为起点去mongo读增量数据。

03 读取时间序列并绘图

茅台的收盘价(后复权)

MACD_EXP = '(EMA($close, 12) - EMA($close, 26))/$close - EMA((EMA($close, 12) - EMA($close, 26))/$close, 9)/$close'
fields = [MACD_EXP, '$close']  # MACD
data_loader_config = {
    "feature": (fields, ['MACD', '收盘价']),
    # "label": (labels, label_names)
}
data_loader = QlibDataLoader(config=data_loader_config)
df = data_loader.load(instruments=['600519.SH'])
df = df['feature']

print(df)
df['收盘价'].plot()

茅台现在"后复权"收盘价达到14700+!

茅台历史上的MACD值序列如下:

qlib数据库的好处就是在原始序列的基础上,计算指标会很方便,而且内置了多进程,缓存系统等功能,能省我们不少数据处理相关的事情。

04 自定义表达式

内置的表达式主要是一些基础的计算函数,我们可以组合出基础的计算功能,而且我们自己自己实现表达式,并注册给系统即可。

class Distance(PairOperator):
    def _load_internal(self, instrument, start_index, end_index, freq):
        series_left = self.feature_left.load(instrument, start_index, end_index, freq)
        series_right = self.feature_right.load(instrument, start_index, end_index, freq)
        return np.abs(series_left - series_right)

如上是对两个序列,计算“距离”。

对表达式进行注册:

kwargs = {"custom_ops": [Distance]}
qlib.init(provider_uri=str(path.resolve()),**kwargs)

注册后就可以如内置的表达式一样正常使用:

fields = [MACD_EXP, '$close', 'Distance($close,$open)']

5日均线:

计算5日动量:

'$close/Ref($close,5)-1'

近期文章:

从tushare建立自己的A股 qlib数据库

qlib高阶应用之财务数据库与自定义表达式

qlib熟练使用后如何进阶?tests和examples

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI量化投资实验室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值