在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 花
我的GitHub地址
https://github.com/BillyZhangGuoping/MarketDataAnaylzerbyDataFrame
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
Mann-Kendall算法用于金融品种长周期趋势判断和变点检测,以及策略思路
之前在研究用机器学习库Sci-kit做计算指标(特征值)和金融产品趋势(分类)关系学习的时候,对于如何判断趋势,是直接使用当前之后5根k线close值做线性回归,如果拟合的P值可信的直线斜率向上则是上涨,斜率向下则是下跌。具体代码可以见之前我之前blog。在vnpy有个网友讨论,为什么用这样方法判断趋势的时候;我做了些搜索,才发现判断一组时序队列的趋势并不是一个简单的事情,虽然人眼看很直接,但是数
另一个视角,使用对数化数据,计算非价位指标
之前在做时序数据整理时候学习时候,发现很多代码都行情数据做了对数化处理。学习了下,发现是另一个视角。https://www.zhihu.com/question/20831196/answer/16324269知乎查了,这个答案比较全。在很多计算中(例如做极大似然的时候),取对数可以将本来需要做的乘法变成加法;取对数可以避免数值巨大,计算机难于处理的困难;与对数有关的数据可以反映出物理量尺度的变化
如果使用Joinquant做实盘行情数据,有一个比较大bug的要注意
在我之前文章中,讲了用Joinquant做数据源,链接:http://blog.itpub.net/22259926/viewspace-2643621/ ,但是在我用作数据源做实盘交易的时候, 发下一个很危险的bug,更新下。如下图,如果运行行情数据下载时候,是在交易日中的话比如2点半,如果填写的endDate是当天,那么返回数据会自动填充到下午3点交易时候。
利用Scikit-learn机器学习库的特征分类进行vnpy期货量化交易(代码)
代码如下,回测效果很好,test集合也基本100%中,但是总有哪里不对劲。各位帮忙看看。我也放在我的GitHub里面。已经加了注释,运行时候会有warning 信息。# encoding: UTF-8 import warnings warnings.filterwarnings("ignore") from pymongo&nbs
利用Scikit-learn机器学习库的特征分类进行vnpy期货量化交易(简介)
这个算是一个小坑,因为我也还在学习过程中,代码慢慢完善。一开始在python 2.7,vnpy 1.9.2环境中实现。后面在python 3.7也基本实现,增加支持了xgboost。代码写的繁杂,多多抱歉。首先说说Scikit-learn是Python语言中专门针对机器学习应用而发展起来的一款开源框架,相对于现在深度学习库tensorflow,由于Scikit-learn本身不支持深度学习,也不支
简单介绍VNPY 1.9.2版本支持看穿式终端的流程
我使用VNPY 1.9.2版本,因为监管要求,需要支持看穿式终端,这里说说实现流程。2.0版本还没有试过,不太确定,仅做参考。首先感谢vnpy及时更新。可以去GITHUB https://github.com/vnpy/vnpy/tree/v1.9.2-LTS , 下载最新版本。第一步是和期货公司客户经理联系,一般他会给你一个申请表,填号信息,主要是AppID:client_vnpyXXXX_版本