2019 量化交易策略实盘总结和一些展望
2019算是完整的跑完一年量化交易,18年是实盘开始,蒙着眼大胆瞎搞,19年小心翼翼,花了不少时间做了些理论研究。这里推荐石川,刀疤连和量子动物园这几个微信公众号,相对于18年大胆交易为主,但是不知道所以然,今年倒是对于CTA的跟随趋势交易有了理论的了解。今年收益中体还是盈利,但是并不过,不过总体逐渐走好,也给了我继续做量化动力。今年实盘的主要交易策略都是跟随趋势交易,主要都是下面三个,中间断断续
一个思路,利用T检验去寻找量化交易CTA趋势
经过一段时间学习和实践,感觉对于期货择时交易,跟随趋势基本上可以被认为是不二途径。那么对于CTA交易策略来说,及早发现趋势是非常重要。寻找趋势的方法很多,经典的比如均线快慢线交叉,布林带还有其他各种时序动量指标,这里推荐看看公众号刀疤连的一边大作‘和趋势做纯纯的朋友’。在实践中,发现经常陷入一个两难局面,一方面是希望即时发现趋势,这样不可避免就是的判定阈值变得敏感;往往就是敏感的指标被市场白噪声和
简单介绍下量化分析的常用库TA-lib
做python量化交易,尤其是做趋势跟踪的或者是K线指标分析跟踪的,TA-lib库基本都多多少少用到,搜索时候往往搜出来“塔利班”,所以玩笑塔利班库。尤其对于从传统K线技术分析转计算机量化的同好,基本上算是必备。第一,安装, 可以通过pip install ta-lib 进行安装,如果安装不了或者编译报错,可以直接在下载whl,然后pip install whl路径名 来安装https://www
在VNPY中策略中,使用分钟线合成日K线
在论坛里面看到不少关于分钟合成日线的讨论,也试着实现了。这里是针对vnpy2.0的,1.92其实基本也差不多。这里把合成的日线HLOC信息放在pandas.DataFrame里面,因为日线分析的话,对运算时间要求不是特别高,DataFrame足矣合成过程放在on_bar方法里面,对每个传入的分钟进行日线合并处理;这里用了trading == False进行判断,就是只在策略初始化过程对于历史数据进
针对量化交易的机器学习中,交易策略倾向于空仓的问题
之前做过利用机器学习做交易策略,最近也在看强化学习的。发现大多时候学习后策略都是倾向于空仓,完全不交易。当时还自嘲计算机有大智慧,空仓不玩是最好的策略。最近强化学习时候,才发现这个和回报值有关reward。如果不给空仓负回报的话,策略会在可能损失的主动交易,或者没有损失的空仓交易中,选择空仓作为自己的策略。所以,必须要引入基准利率,每天按照及基准策略计算本金损失,是的计算机避免长期空仓。可以用你的
使用cProfile针对回测进行性能分析,和结合说下提速思路
昨天再研究lru_cache缓存读取回测优化时候,使用了性能分析工具cProfile,发现还是非常强力的分析工具,这里做个简单介绍。并结合说下一些策略提速思路。关于cProfile使用这个文章写的很详细,https://www.cnblogs.com/btchenguang/archive/2012/02/03/2337112.html 。 这里我简单接受下。安装不用安装,python一
给vnTrader 1.92版本加入lru_cache缓存读取提速优化回测
VnTrader 2.0版本有不少提速措施,其中lru_cache是提高回测速度一个利器,让我用1.92为主的我很是羡慕。看说这个是python 3.5.2提供的功能,也就没多想。最近才发现其实有第三方在也支持python 2.7的版本,比如 functools32。还有一个用 C 语言实现的,更快的,同时兼容 Python2 和 Python3 的第三方模块 fastcache 能够实现同样的功
利用Jupyter Notekook做初步分析,包括给行情画图,加入分析曲线,和买卖点
最近一段时间都是Jupyter Notebook做策略的最初版本设计,就是行情导入画图一类。之前做个dataframe做分析容易,这个算是简化版本。新建一个DataAnalyzer 类,这个简单很多,支持从csv和mongodb导入行情数据,和从1分钟k线整合不同分钟k线下面是导入1分钟螺纹钢数据,整合为5分钟K线from pymongo import MongoCl
Jupyter Notebook实现从IB接口历史数据获取,写入数据库,策略回测和实盘交易
刚好有个同学问怎么实现IB盈透历史数据获取,和策略回测和实盘交易。想着熟悉vnpy2.0操作,就用Jupyter Notebook都是跑了一边。VNPY2.0的整体架构设计很有扩展性,而且调用也比起v1.0先进清晰很多,引擎加载调用非常方便。讲讲注意点:IB盈透接口历史数据大多是要收费订阅的,如果收费会有报错信息提示,这里找个免费的作为使用。另外vnpy是按照最大6个月历史数据设计的。数据库定义有
使用Jupyter NoteBook进行IB查询和交易,以及使用算法交易示例
在搞好IB盈透接口后,试了下客户端交易,但是最终目的还是使用程序化交易。发现vnpy已经提供的Script_engine来支持Jupyter NoteBook 交易的,而且非常方便调用。这里就用写了基于VNPY包,用代码实现IB盈透下的查询和交易,和一个TWVP算法交易。Script_engine的大多操作都是针对main_engine的封装,类似的逻辑,其他交易相关App,也可以用类似方法调用,
从统计学来看,有限样本的回测结果能说明些什么
最近在看一本友人推荐的陈博士的《算法交易: 致胜策略和原理》一书,虽然书名很神棍,其实内容是很实际结合理论的,不少内容击中了我现在困惑的痛点。本文是学习书中《1.3 统计学在回测程序上的应用:假设检验》一节的理解,对概率论很久没研究,如果理解错误请指教。在交易策略设计优化完成后,都会放入一个测试集进行回测,但是不论怎么样收集,用于回测的数据集是始终是有限的,而且,无论我们计算的统计指标是什么,诸如
一个关于风险和投资组合的内部知识分享文档
最近在小组内部做了一次关于风险和投资组合的内部知识分享, 主要使用了PPT和Jupyter Notebook。把PPT和Jupyter Notebook都传到我的Github 分享,有兴趣可以看看https://github.com/BillyZhangGuoping/MarketDataAnaylzerbyDataFrame/tree/master/Risk%20and%20Portfolio%
VNPY 价差交易模块的使用学习
本文主要说说VNPY的价差模块的简单使用,至于自开发算法什么暂不涉及。VNPY提供价差交易模块,其实还是挺好用的,先说说使用,再说说代码。进入之后的界面如下图:使用思路:- - 定义价差组合:定义一组价差组合,可以是一个主动腿,一个或者多个被动腿 |- -指定针对价差组合算法,系统默认是Sniper交易算法,VNPY提供算法模板,可以自己新增 &nb
变点理论CUSUM在择时交易中的应用
之前看到一篇文章,变点理论CUSUM在量化交易中;列了一堆数据和公式,说结果不错。链接如下:https://max.book118.com/html/2017/0726/124391946.shtm 或者这个,就是整理版,有很详细的公式推导,不过代码写的不清不楚的,应该没写完。https://wizardforcel.gitbooks.io/python-quant-uqer/134.html 花
变点理论CUSUM在择时交易中的应用
之前看到一篇文章,变点理论CUSUM在量化交易中;列了一堆数据和公式,说结果不错。链接如下:https://max.book118.com/html/2017/0726/124391946.shtm 或者这个,就是整理版,有很详细的公式推导,不过代码写的不清不楚的,应该没写完。https://wizardforcel.gitbooks.io/python-quant-uqer/134.html 花
我的GitHub地址
https://github.com/BillyZhangGuoping/MarketDataAnaylzerbyDataFrame
VNPY参数优化功能v1版本中的一个更新参数批量生成方法
VNPY的参数优化功能,是策略优化的重要功能。主要就是按照范围生成批量的参数组合,然后成批跑完,选出最优的方法的。在ctaBaclesting.py中的addParameter方法提供了批量导入参数的方法。就是这样一个参数一个参数填入。addParameter会按照1为初始,5为介绍,2为步进,生成[1,3,5]参数队列setting.addParameter('barMins',
VNPY参数优化功能v1版本中的一个更新参数批量生成方法
VNPY的参数优化功能,是策略优化的重要功能。主要就是按照范围生成批量的参数组合,然后成批跑完,选出最优的方法的。在ctaBaclesting.py中的addParameter方法提供了批量导入参数的方法。就是这样一个参数一个参数填入。addParameter会按照1为初始,5为介绍,2为步进,生成[1,3,5]参数队列setting.addParameter('barMins',
为VNPY的K线序列管理工具ArrayManager增加对数收益率队列
在做策略建模的时候,经常需要把K线转换为可以正态分布数据,这样可以使用那些很牛吼吼的数学模型进行挖掘。实现很简单c = ln(t1/t0)像相信研究可以看看这个https://www.zhihu.com/question/30113132在VNPY的K线序列管理工具ArrayManager,可以加入下面代码。按照属性返回百分比序列@property def percentLog(sel
为VNPY的K线序列管理工具ArrayManager增加对数收益率队列
在做策略建模的时候,经常需要把K线转换为可以正态分布数据,这样可以使用那些很牛吼吼的数学模型进行挖掘。实现很简单c = ln(t1/t0)像相信研究可以看看这个https://www.zhihu.com/question/30113132在VNPY的K线序列管理工具ArrayManager,可以加入下面代码。按照属性返回百分比序列@property def percentLog(sel