QauntOS 学习笔记(一)Lesson2

最近又接触了一个好玩的平台----QuantOS,因为创始人渔阳是《乱世华尔街》的作者,几年前被这本书深深吸引,让我感受到了不一样的2007年金融危机,对作者一直很是好感。

最近他和他的小伙伴们做了一个量化平台QuantOS。官网 www.quantos.org

只要注册,就能学习里面的代码。如果是初学者的话,建议报名网站里的《量化小学》课程。

作为一名迷弟,我自然是报名学习,并且开始动手玩了。

顺便记录下一些笔记,方便与其他同学一起交流学习。

本篇是对Lesson2的代码梳理和学习。

重新调整格式,增加注释,方便理解。

尝试调整不同参数,进行总结。

如有侵权请指出,立即改正。

Lesson2 的原代码结果:

对600519.SH 贵州茅台,600036.SH 招商银行,601318.SH 平安银行,000651.SZ 格力电器这四个股票等权重,定期调仓,调仓周期为周。

长期持有,没有止损和卖出,时间周期为20170201-20171001。

结果为:

年化收益44.77%,夏普比率3.45

接下来,我们分析下代码。顺便对参数进行简单调整,看看会有什么样的结果:

增加回测时间长度:20100101-20180801

增加调仓频率周期:month,day

调整手续费率:为0.0012,因为理论上还有印花税0.001。

将以上结果进行对比分析,看看会有什么不同

第一步,当然是,配置所有环境。

本人在学习过程中发现一件很有趣的问题

jaqs有两大模块data和trade

data模块中主要是包含了数据下载的类

trade模块中包含了交易回测的各种类

jaqs.trade.analyze则是用于回测结果的分析和报告生成。

第二步,撰写各种函数。

1、写一个从quantos获取股票数据的函数 test_save_dataview()

注意:作者的源代码中,props里并没有设置参数benchmark,而是使用了如下代码,进行设置,好处是,以后更方便地设置自己的benchmark,坏处是对dv的数据结构要有更多的理解。

res, _ = ds.daily(benchmark, start_date=dv.start_date, end_date=dv.end_date)

# 只选中两列,交易日期和收盘价

dv._data_benchmark = res.set_index(trade_date).loc[:, [close]]

2、写一个对获取的数据进行分析的函数 test_alpha_strategy_dataview()

这个函数会的作用,是根据你的交易信号,生成每日下单信息。

3. 对生成完的下单信息,进行分析,计算收益率,生成报告,定义函数test_backtest_analyze()

这个函数,基本上都是使用quantos自带的类,进行完成,无脑复制就行。

第三步,设置参数。

第四步、开始运行:

第五步、结果分析:

调仓周期为day,回测时间20100101-20180801:

调仓周期为week,回测时间20100101-20180801:

调仓周期为month,回测时间20100101-20180801:

结论,即使时间长度放宽到20100101-20180801,收益率依然非常稳定,不过夏普比率从3.45下降到了1.35,maxdrawdown发生在2015年股灾期间。

对比day, week, month三种调仓周期。week的收益率最高,但其实并没有太大的差距,如果个人投资者的话,建议还是以月调仓,长线为王,因为手续费可以省下非常多哦。

后续还可以研究的方向:

调整股票标的,看看会有什么样的结果。

以上只是对QuantOS上《量化小学》第二课的内容进行学习和理解,以及一些动手小实验。想获得源代码的话,只要注册QuantOS就可以啦~

如果你连最基本的数据和,python都没有充分掌握的话,可以考虑学习以下二维码的课程,简单易上手。

推荐阅读:

相关文章