利用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_版本
利用粒子群优化算法(PSO)来优化vnpy的量化策略参数
上一篇文章中说要用PSO算法来做量化策略优化,模仿DEAP的示例代码,做了一个单线程的类,实现优化。里面代码结构是和之前做利用遗传算法优化的基本一样。粒子全算法可以看看我之前文章,抄的分析结果:粒子群算法比遗传算法具有更高效的信息共享机制,更新群体极值使得信息实现全局范围共享,但遗传算法通过交叉和变异拥有比粒子群算法更有效的逃离局部最优解的概率。下面简单说说代码:1、静态函数object_func
优化算法库DEAP的粒子群优化算法(PSO)示例代码分析
之前使用优化算法库DEAP做遗传算法(Genetic Optimization),最近在研究粒子群优化算法(PSO)发现DEAP也提供支持;对原代码做了分析,之后会尝试用于交易策略参数优化。首先关于粒子群优化算法(PSO),这个算法的介绍很多,我看了不少,感觉下文介绍的是比较清楚的,可以参考。https://www.cnblogs.com/21207-iHome/p/6062535.html个人理
利用聚宽(Joinquant)数据源为vnpy添加期货行情数据
现在基于网络量化平台做的都很专业,richquant也是vnpy数据源的提供方;不过richquant的试用版只有30天,而聚宽(Joinquant)有一年试用期,而且也提供连续主力数据。我就东抄西抄,利用以后logic,做了使用聚宽(Joinquant)数据源JQData为vnpy添加期货行情数据。代码就两个文件,一个config.json主要放登陆用户名和期货品种名称对应表,因为期货品种在聚宽
python多进程简介,和VNPY多进程参数优化代码分析
之前为了实现利用遗传算法,进行多进程策略的优化,学习研究了python的多进程库Multiprocessing。以前感觉真是黑科技,学习后发现,还是python优点,简单好用,对于一般应用还是很好理解。首先,由于GIL(全局解释锁)的问题,全局对象只能一个进程调用,python多线程并不能充分利用多核处理器,比如有时候用pandas跑大型数据分析,发现只有一核在累死累活。如果想要充分地使用多核CP
为K线序列管理添加变动百分比属性,和一个简单分析
一般K线数据,主要是记录HLOC(High,Low,Open,Close)四个值,再加上Volume交易量。在做基于K线分析时候,变动百分比也是一个经常考虑数值。这里说下增加变动百分比的属性。其实还是很简单,如果不考虑跳空的话,就是(Close - Open)* 100.0 / Open; 考虑到跳空的话,就是当前K线结束值前取上个K线结束值,再处于上个K线结束值即可。如果有个close的值队列的
奇怪报错信息“db already exists with different case already have”解决方法
之前做了给数据库插入成交数据的功能,但是更新1.92后,每次成交都报错db already exists with different case already have: [VnTrader_DEAL_Db] trying to create [VnTrader_DEAL_Db
写了一个类GeneticOptimizeStrategy,针对VNPY策略遗传算法优化
写了一个类,GeneticOptimizeStrategy,Parameterlist 字典; 简化了调用参数和定义对应随机范围问题。只要在Parameterlist 中定义策略参数名称和对应的随机范围就可以,其中两个参数的元祖是两个之间随机数,调用random.uniform(),三个参数元祖是开始结束和中间步进,调用的是random.randrange(), 如果是数组就是在数组中间随机选择。
利用遗传算法库DEAP优化交易策略
首先,要感谢VNPY.com论坛 keke分享 海龟策略深入研究-策略回测系列-17 基于遗传算法的信号优化 一文https://www.vnpy.com/forum/topic/269-hai-gui-ce-lue-shen-ru-yan-jiu-ce-lue-hui-ce-xi-lie-17-ji-yu-yi-chuan-suan-fa-de-xin-hao-you-hua经过一段时
遗传算法库DEAP的示例代码的学习和分析
最近看到用遗传算法优化量化参数的文章,觉得还是有很先进,就开始学习。这个文章主要是针对针对遗传算法库DEAP的示例代码的学习和分析。代码链接:其实有不少针对这段代码文章,这里主要说说自己学习。原文链接如下: https://deap.readthedocs.io/en/master/overview.html 定义类型,方法creator.create(name,base,**kargs)这个有点
用DataFrame作为容器分析市场行情指标
之前在看一篇《基于阻力支撑相对强度(RSRS)的市场择时》(链接 https://mp.weixin.qq.com/s/LehwGXe_6JFZEZ8ekC4dCg) 尝试说试试用在期货交易,效果不怎么理想。不过作者用DataFrame作为容器来用指标在行情数据进行验证让我学到不少,也学了不少,之前做策略设计时候只是靠第三方平台或者交易软件来看,用DataFram
利用Pycharm进行代码比较更新
很简单的功能,不过还是挺好用,尤其是新版本和老版本对比的时候。点击代码文件A,然后在功能条view -> compare with... 里面选择要对比的文件B如上图,一般我会选择无视空格段,然后蓝色是pyCharm认为是一直但是有更改,绿色是完全新建。你可以点击左推,和右推键,把不同代码调成一直。比如把右边新增的代码加入左边。
针对vnpy的不同期货品种行情数据清理
之前2月25日,上海期货交易所进行测试,在周六进行行情广播,我的datarecording一直在跑;然后就发现读了不少脏数据。vnpy自带的行情清理功能较为简单,只是在清除非交易时段,没有考虑周六日;而且只是笼统给了一个最大时间交易范围,像股指期货没有夜盘,螺纹钢晚上11点就结束,但是默认只是结束在凌晨两点半这个最大交易时间。 所以写了一个方法,按照不同品种,更细致的清理。可以直接把这个方法插入\
针对vnpy的mongodb数据库,合并多个主力合约行情为连续行情数据
最近在做股指期货的策略实现,发现股指期货的主力合约是按月变化,比起商品期货4个月或者半年一切换更为频繁,之前商品期货还可以手动做切换主力月数据回测,股指期货一定要做合并连续主力行情数据。通常主力合约生效时间段就是上月合约交割日到当月合约交割日,比如IC1902, 这个19年2月合约,作为主力合约的时间就是IC1901交割日(2019年1月18日)到IC1902交割日(2019年2月15日)。IC1
VNPY重新启动后,没有停止单挂单原因和简洁解决方法
之前在这个链接里面,提了vnpy重启后,比如开盘前开始,即使符合挂单条件,也没有挂单出现的问题,给了一个比较麻烦的方法。http://blog.itpub.net/22259926/viewspace-2563701/后来研究代码,发现原因应该是:程序用onInit(self) 初始化回放数据,但是此时self.trading 为false,不会发出停止单;而启动onStart时候,不会重新回放启
SAP 金融风险管理模块中Credit and Debit Value Adjustments的计算方法
SAP提供两种计算CVA/DVA调整实现方法,一个是通过 Credit Spread Curve和Yield Curve组合成综合composite Curve,来进行金融资产with risk 的带风险的NPV计算。这里Credit Spread就是客户或者自己的PD*LPG(损失率*损失发生几率)还有一个就是基于可预见的风险资产,和PD*LPG乘积,算出可能损失金额,和没有考虑风险的RISK
SAP 金融风控系统中,债券尾差不同计算方法分析
下文是内部分析的,用的英语。主要核心就是债券尾差计算方法只是为了提及利息计算和利息利率曲线。As customizing help doc, The rounding rule is a combination of factors that affect rounding in the accrued interest calculation and the calculation
为VNPY增加数据库记录交易数据功能
在VNPY中,并没有提供实际交易数据库记录功能,虽然可以通过第三方交易软件去读取,但是对于针对单个策略交易效果验证还是不方便,这里说以下为VNPY增加数据库记录交易数据功能。其实主要还是调用VNPY已经提供的功能。1.在vnpy.trader.app.ctaStrategy.ctaBase中增加一个新的数据库。按照你的习惯给名字,比如 DEAL_DB_NAME = 'VnTrader_DE
VNPY中开盘前挂单失效的解决方法
在VNPY量化交易平台中,挂停止单(STOP Order)是交易发起的常见方式,停止单是至一旦价位到了预定点位,才启动交易的订单。期货早盘9点和夜盘9点刚刚开票十分钟,往往是波动最大的时段,交易机会很多。但是VNPY存在明明应该挂着停止单,在开盘时候就没有了,应该是在开盘时刻,所有挂单都是失效了,虽然这些挂单是在VNPY内部失效,但是也会失效。具体代码看了半天,还是没有找到具体原因。这里提供一个临