VeighNa量化社区
你的开源社区量化交易平台
xiaohe's Avatar
Member
离线
4300 帖子
声望: 268

发布于vn.py社区公众号【vnpy-community】
 
原文作者:用Python的交易员 | 发布时间:2021-11-05
 

在vn.py的2.6.0版本更新中,增加了对恒有数Udata数据服务的支持(vnpy_udata模块),但对于许多vn.py的用户来说,都还是第一次听说这家数据服务商。

这几周陆续在论坛和社区群里,都有收到围绕Udata如何使用的提问,所以在这里专门写一篇文章对Udata的产品情况和使用方法做个介绍。

 

恒有数Udata产品介绍

 

以下内容来源于恒有数官网:https://udata.hs.net

恒有数金融数据社区,源自恒生的金融数据开放和可视化社区,旨在为量化投资爱好者、金融从业人员、高校师生、政府机构和财经媒体等人群提供专业的金融数据服务,满足不同用户丰富多样的数据分析和投资研究需求。

 
核心功能

  1. 提供涵盖股票、基金、债券、期权、期货、港股等品种的基本信息、市场数据、财务数据等,共计142个数据接口;提供多种数据接口语言,包括http、Python、MATLAB、Java;并提供详细的数据接口说明文档与各种语言的使用示例;
  2. 提供在线化数据服务,包括在线预览、在线下载、在线调试,实现零代码获取数据;同时提供社区社群的在线服务,给用户提供及时专业的解答与帮助;
  3. 提供金融基础知识、金融数据分析、数据挖掘等视频教程服务;
  4. 计划提供在线可视化工具,包括图表模板库、在线画板、金融数据海报等;整合现有短视频编辑工具,并与金融数据接口联动,提供数据图表和数据海报的自动与订阅服务;
  5. 计划提供因子库与衍生指标计算服务、策略开发与回测平台,并整合现有的模拟仿真平台,为用户提供一站式全流程的量化策略研究服务。

 
产品特点

  1. 在线数据服务,登录即用;无需搭建本地数据库,无需下载数据到本地;
  2. 不限次,不限量,不限调用次数,不限调用数据量;
  3. 数据丰富,包含股票基金债券等全品种数据、基本面数据及行情数;
  4. 持续更新,已包含全量30年历史数据,数据保持每日更新;
  5. 取数便捷,支持在线预览、下载和在线调试,提供简单高效的API接口;
  6. 支持多种语言,接口支持http、Python、MATLAB、Java语言;
  7. 保障稳定不宕机,专业团队,专人维护,实时响应。

 
试用申请

在PC端打开恒有数金融数据社区(https://udata.hs.net) 网站主页,点击右上角的【注册】按钮:

description

使用手机号注册,设置密码,并勾选注册协议等:

description

首页右上角,点击【登录】按钮,进入登录页面;

description

在订阅页面,下单免费的体验套餐:

description

在页面右侧,点击【新人礼包】,领取新人一折券(活动2021-12-31截止):

description

使用一折券订阅套餐:

description

在页面右上角,点击【我的订阅】查看订阅信息:

description

在弹出的页面中,可以看到当前账户已经订阅的信息:

description

最后点击左侧的【总览】按钮,进入总览页面获取Token:

description

到这里注意将Token保存下来,用于后续在vn.py中的数据服务配置。

 

在vn.py中使用Udata

 

以下操作基于2.7.0版本的vn.py,如果用老版本的同学请先更新升级。

启动VN Trader后进入主界面,点击顶部菜单栏的【配置】按钮,弹出如下图所示的全局配置对话框:

description

在这里填入数据服务相关的配置字段(datafeed开头),具体为:

  • datafeed.name:udata
  • datafeed.username:license
  • datafeed.password:之前保存下来的Token

点击底部的【确定】按钮后,关闭对话框并重启VN Trader使得新的数据服务配置生效。

然后打开DataManager数据管理模块,点击右上角的【下载数据】按钮,即可下载股票和期货数据:

description

下载完成后,点击左上角的【刷新】按钮,可以看到数据库中已有的数据信息,点击对应合约的【查看】按钮后可以在右侧区域看到具体的历史数据:

description

最后需要注意的一些点:

  1. Udata目前的K线数据均为盘后更新,因此只能用于历史回测和盘前初始化,无法用于盘中初始化(当日数据获取不到);
  2. Udata单次数据的下载上限为10000根数据,如果超过则需要分次进行下载操作;
  3. 考虑到大部分用户的需求,vnpy_udata模块目前仅支持分钟线数据下载,后续会加上更多时间周期。
     

 
vn.py最近几个版本的更新中,对SpreadTrading价差交易模块做了一次比较大的升级,全面改为使用灵活价差计算公式的同时,也对价差算法执行过程中的细节做了许多优化。

由于价差交易相对稳健的特点,在机构交易员领域是一种极为常用的交易策略,除了期货跨期(例如cu2201/cu2202)和跨品种(例如rb2205/hc2205)外,也同样可以应用于内外盘跨市场交易。

所以计划举办一次活动来详细讲解SpreadTrading模块的使用方法,本次活动很荣幸邀请到了横华国际(南华期货子公司)的嘉宾来分享在外盘交易领域的技术系统细节。

内容:

  • 价差交易的基本概念

    • 构建交易价差
    • 盘口的计算原理
    • 价差的仓位跟踪
  • 价差交易执行算法

    • 主动腿的先发委托
    • 被动腿瞬时对冲
    • 委托超价和撤单周期
  • 价差交易策略

    • 算法和策略的区别
    • 认识价差策略模板
    • 合成价差的K线数据
    • 价差回测中的注意点
  • 外盘交易技术系统

    • 横华国际简介
    • 外盘行情数据服务
    • 易盛极速交易柜台
    • 国际交易所托管服务
  • QA问答环节

时间:11月20日 14:00-17:00

地点:浦东新区芳甸路1155号4楼WeWork会议室M

名额:40人(线下)
报名费:99元

报名方式:扫描下方二维码报名(名额有限,先到先得~)

description

也可以点击文章底部的原文链接跳转~

报名完成后,可以再次扫描上方二维码进入直播间(或者收看回放)!!!
 

发布于vn.py社区公众号【vnpy-community】

 

原文作者:用Python的交易员 | 发布时间:2021-10-30

 

2021的最后一场(第三期)vn.py小班课开始报名,老规矩还是放几张之前课程的照片:

description

准备完毕,静候同学们到达

description

学习量化,先从掌握核心框架

description

深入代码,分析策略逻辑细节

 
小班课时间还是都会定在周末两天,一共包含周六周日两个下午共计10小时的课程,以及后续三个月的助教跟踪辅导。线下课程的地点在上海浦东,考虑到新冠以来大家对于坐火车飞机的健康风险顾虑,不想来上海的同学也可以选择远程线上听课。

本期(总计第14期)课程的主题是【CTA策略交易】,目前剩余名额还有6位,感兴趣的同学请抓紧,课程大纲如下:

 
日期:2021年12月4日(周六)和12月5日(周日)

时间:两天下午1点-6点,共计10小时

大纲

1 . CTA策略开发

a. 历史数据完整解决方案,多种数据库配置、历史行情记录、异常数据清洗

b. 基于模板开发CTA策略,参数变量设计,回调函数处理,交易函数详解

c. 深入K线时间序列:自定义K线合成,技术指标定制,时间序列统计分析

2 . 策略回测优化

a. 回测引擎核心业务逻辑流、委托撮合规则(停止单、限价单)、策略状态控制

b. 回测图表的分析方法,统计数据分析中的误区

c. 优化算法详解:多进程穷举算法、单进程遗传算法

3 . 实盘交易运维

a. 策略每日盘中的生命周期管理

b. 历史数据初始化、策略运行状态同步管理

c. 盘中交易异常处理方案

4 . CTA进阶深入

a. 股指期货策略源代码分享:SuperCombo、Cuatro
b. 商品期货策略源代码分享:MoneyFlow、OscillatorDrive
c. CTA策略中的交易算法实现:委托细粒度状态机管理

针对股指日内的SuperCombo策略:

description

针对焦炭趋势的OscillatorDrive策略:

description

针对海外市场趋势的SuperTurtle策略:

description

 
价格:10999元
 

报名请发送邮件到event@mail.vnpy.com,注明想参加的课程、姓名、手机、公司、职位即可。

课程对于之前参加过小班课的学员优先开放,同时提供9折的价格优惠。
 

发布于vn.py社区公众号【vnpy-community】
 
原文作者:用Python的交易员 | 发布时间:2021-10-30
 

本周二发布了vn.py的2.7.0版本,本次更新的内容主要是新增了一系列金融机构投资者常用的数据服务接口,包括:万得Wind、同花顺iFinD和天软Tinysoft,满足机构用户在使用vn.py过程中的数据获取需求。

和之前一样,对于使用VN Studio的用户,启动VN Station后,直接点击界面右下角的【更新】按钮就能完成自动更新升级,对于没有安装的用户,请下载VN Studio-2.7.0,体验一键安装的量化交易Python发行版,下载链接:

https://download.vnpy.com/vnstudio-2.7.0.exe

 

机构数据服务接口

 

关于国内量化数据接口的整体介绍,推荐参考之前的这篇公众号文章:

一张图认识【国内市场】的量化数据服务!

简单总结一下,对比主要面向个人投资者的产品,机构数据服务接口的特点包括:

  • 数据范围更广:除了基础的行情数据外,还有众多的经济、财务、另类金融数据;
  • 质量更加可靠:体现在数据的准确性,服务器的可用性,客户支持的及时性等方面;
  • 普遍价格更高:面向机构的单个用户年费通常在5-20W,在机构客户批量采购的前提下能降到2-8W。

在vn.py的全局配置中,和数据服务相关的字段全部以datafeed作为前缀,具体字段含义如下:

  • database.name:数据服务接口的名称,同样是全称的小写英文字母;
  • database.username:数据服务的用户名;
  • database.password:数据服务的密码。

 

万得Wind

对于在国内金融机构工作的从业者来说,【万得Wind金融终端】(简称Wind)已经是工作中的标准配置,不管是股票、债券、商品还是外汇市场的数据,Wind可以说是应有尽有。

同时Wind在多年前就推出了数据API,方便用户通过程序快速获取数据进行分析。在本次2.7.0的版本中,vn.py新增了对接了Wind的数据服务接口vnpy_wind,对于许多机构用户来说可能是更为方便的选择。

  • 项目地址:vnpy_wind
  • 数据分类:股票、期货、期权、基金
  • 数据周期:日线、小时线、分钟线、TICK(实时更新)
  • 申请试用:Wind金融终端

需要注意的是,vnpy_wind接口连接的是本地电脑运行着的Wind终端(而非远程的Wind服务器),因此在运行前必须先启动并登录Wind终端,在使用过程中也必须保持程序开启不能关闭。

 

同花顺iFinD

在金融领域提起同花顺这个词,大部分人的第一反应是面向个人投资者的股票交易软件和APP,但其实同花顺公司也同样推出了面向专业机构用户的【iFinD金融数据终端】(简称iFinD),且在过去几年中的市场占有率快速上升:

 

天软Tinysoft

作为国内老牌金融数据公司的天软,其核心产品【天软.NET金融分析平台】(简称TinySoft),在券商研究所和自营领域积累了大量用户。翻看券商的金融工程研报时,经常会发现图表的备注信息中写有“以上数据来自天软”的数据来源说明:

 

其他更新

 

策略应用模块剥离

  1. AlgoTrading算法交易模块,剥离到vnpy_algotrading项目中;
  2. ScriptTrader脚本交易模块,剥离到vnpy_scripttrader项目中;
  3. PortfolioManager组合管理模块,剥离到vnpy_portfoliomanager项目中。

交易接口模块剥离

  1. Interactive Brokers交易接口,剥离到vnpy_ib项目中;
  2. 飞鼠交易接口,剥离到vnpy_sgit项目中;
  3. 易盛外盘交易接口,剥离到vnpy_tap项目中;
  4. 直达期货交易接口,剥离到vnpy_da项目中。

 

CHANGELOG

 

新增

  1. 新增天软数据服务项目vnpy_tinysoft
  2. 新增同花顺iFinD数据服务项目vnpy_ifind
  3. 新增万得Wind数据服务项目vnpy_wind
  4. 新增PortfolioStrategy专用的PortfolioBarGenerator

调整

  1. 移除OnetokenGateway
  2. 移除MarketRadarApp
  3. 算法交易模块中移除套利和网格两个非执行类算法
  4. vnpy_tushare数据服务,增加持仓量和成交额字段
  5. vnpy_datamanager数据管理器,查询的K线信息按合约代码排序显示
  6. vnpy_dolphindb优化数据的加载解析速度
  7. vnpy_influxdb采用pandas解析CSV数据,提高整体速度

修复

  1. 修复vnpy_ctp的CtpGateway,在夜盘换日时上期所行情时间戳的日期字段误差问题
  2. 修复vnpy_arctic的数据重复写入时出现的错误覆盖问题

 

 
最近在社区论坛和交流群里,发现有许多同学在询问如何对vn.py进行扩展增强来实现特定的量化交易功能。这块是比基于框架开发量化策略更加深入的主题,涉及到【金融交易】和【系统工程】两大领域的有机结合,计划举办一次活动以实践案例来分享这块的开发经验。

内容:

  • 量化交易系统构架

    • 交易系统的特点
    • 数据流和指令流
  • 认识事件驱动编程

    • 程序驱动的模式

      • 时间驱动:同步逻辑
      • 事件驱动:异步回调
    • 进程、线程、协程

    • 事件驱动引擎实战

  • PyQt图形界面开发

    • 3分钟开发第一个GUI界面
    • 界面组件和智能化布局
    • 安全数据更新:Signal/Slot机制
    • 应用实战:自动跨月组合对冲
  • QA问答环节

时间:10月31日 14:00-17:00

地点:浦东新区芳甸路1155号4楼WeWork会议室M

名额:40人(线下)
报名费:99元

报名方式:扫描下方二维码报名(名额有限,先到先得~)

description

也可以点击文章底部的原文链接跳转~

报名完成后,可以再次扫描上方二维码进入直播间(或者收看回放)!!!

公司信息

公司全称

上海高频投资管理有限公司

基本介绍

上海高频投资管理有限公司成立于2013年,是一家以金融市场投资和资产管理为主业的专业投资机构,拥有专业的交易团队,自营资金实力雄厚。我公司根据市场变化和管理人的判断,投资基金投资范围内约定的投资品种、投资工具等,力争实现基金资产的稳步增值。通过采用先进的程序化交易系统、多种交易策略,实现多品种、多周期、多策略的投资策略组合,在降低市场风险的同时追求更高收益。截至2021年7月,上海高频产品共计18支,规模合计约17亿元。

职位信息

 
职位名称

量化投资经理

薪资范围

基本工资50-80K,根据工作经验不同,具体面议。

岗位职责

  1. 负责领导公司量化投资策略的研究、开发和实盘交易;

  2. 对所管理的私募产品进行跟踪评价、绩效归因及报告分析;

任职要求

  1. 国内外知名院校金融学、金融工程、数学、统计学及相关专业本科(或以上)学历;

  2. 具有稳健的投资管理业绩,3年以上量化策略开发经验;

  3. 具有较强的金融、投资理论知识,具有基金从业资格;

  4. 具有较强的研究分析能力、清晰的逻辑判断能力和良好的表达能力;

  5. 具有良好的职业操守和团队合作意识。
     
    职位名称

量化研究员

薪资范围

基本工资15-20K,根据工作经验不同,具体面议。

岗位职责

  1. 协助投资经理进行策略开发,以及交易系统的维护。

任职要求

  1. 数学、物理、电子、计算机等理工科相关专业

  2. 熟悉C编程的优先

  3. 具有较强的数据统计、分析能力, 并熟练掌握至少一门统计语言(Python优先)

  4. 对金融市场有强烈兴趣、对钻研投资策略有激情、学习能力强、逻辑思维清晰

联系方式

xiaoyou.chen@mail.vnpy.com,投递简历的邮件请注明申请公司和职位。

工作地点

上海

发布于vn.py社区公众号【vnpy-community】
 
原文作者:用Python的交易员 | 发布时间:2021-09-26
 

昨天发布了vn.py的2.6.0版本,本次更新的内容主要是新增了一系列专门针对金融时序数据的高性能数据库支持,包括:DolphinDB、Arctic和LevelDB,大幅提高各类量化策略回测研究的效率。

请注意,2.6.0新版本中包含了对数据库(database)和数据服务(datafeed)全局配置字段的修改,老版本用户升级后需要重新手动配置,具体请参考后面对应的章节内容。

和之前一样,对于使用VN Studio的用户,启动VN Station后,直接点击界面右下角的【更新】按钮就能完成自动更新升级,对于没有安装的用户,请下载VN Studio-2.6.0,体验一键安装的量化交易Python发行版,下载链接:

https://download.vnpy.com/vnstudio-2.6.0.exe

 

高性能数据库支持

 

全局配置变化

在2.6.0新版本中,参考vn.py对于交易接口的标准化设计BaseGateway(位于vnpy.trader.gateway中),添加了对于数据库适配器的标准化接口BaseDatabase(位于vnpy.trader.database中),实现简洁易用的插件化数据库支持。

新版本的VN Trader全局配置中,和数据库相关的字段全部以database作为前缀,如下图所示(点击主界面顶部菜单栏的【配置】按钮打开):

description

具体字段含义如下:

  • database.timezone:数据库时区,考虑到大部分用户都在国内,一般无需修改;
  • database.name:数据库适配器接口的名称,通常采用数据库全称的小写英文字母;
  • database.database:数据库中用于保存vn.py相关数据的实例,例如SQLite的文件名、MySQL的Schema等;
  • database.host:数据库服务器程序所在的IP地址,如果安装于本地电脑则直接使用localhost;
  • database.port:数据库服务器程序监听的IP端口,不同数据库的默认端口不同;
  • database.user:数据库的登录用户名;
  • database.password:数据库的登录密码。

2.6.0版本对原有的数据库适配器(vnpy.database)进行了剥离和代码优化,放置到了对应的独立仓库中,允许用户按需安装,这下用Linux系统的同学们再也不用为psycopg2(PostgreSQL数据库驱动)的安装折腾了。

具体的数据库配置请参考下文。

 

DolphinDB

description

项目地址:vnpy_dolphindb

DolphinDB是由浙江智臾科技有限公司研发的一款高性能分布式时序数据库,特别适用于对速度要求极高的低延时或实时性任务,在国内外金融投资领域有着丰富的应用案例。

作为国产数据库的DolphinDB,在定位上对标的是世界顶级的金融时序数据库Kdb+。目前2.6.0版本支持的所有数据库中,DolphinDB的读写速度均占据No.1的位置。由于目前我们只采用了简单的分区数据表设计,理论上还有进一步优化的空间。

description

尽管DolphinDB是商业软件,但是也提供了免费的社区版,在安装时注意要选择2.0的Beta版本,我们会在下一篇公众号文章中详细介绍DolphinDB的特点和使用方法

 

Arctic(MongoDB)

description

项目地址:vnpy_arctic

由英国量化对冲基金Man AHL基于MongoDB开发的高性能金融时序数据库,我们团队对于Arctic的了解来源于公众号【量化投资与机器学习】的这篇文章《盘点对冲基金大佬『开源』的Python工具包!》。

简单总结一下Arctic的优势:

  • 支持直接存储pandas的DataFrame和numpy的ndarray对象,在量化投研中可太实用了;
  • 允许对数据进行版本化管理(类似于数据库中的git),便于因子挖掘过程中的数据迭代管理;
  • 基于分块化存储和LZ4压缩,在网络和磁盘IO方面节省大量资源,实现每秒最高每秒百万行的数据查询。

description

Arctic底层使用的是MongoDB数据库服务器,因此安装时直接前往MongoDB官网下载最新版本安装即可。目前不支持自定义端口、用户名、密码等修改,因此请保持默认配置。

 

LevelDB

description

项目地址:vnpy_leveldb

由Google推出的高性能Key/Value数据库,基于LSM算法实现进程内存储引擎,支持数十亿级别的海量数据。LevelDB的定位是通用性数据存储方案,对于金融领域的时序数据存储没有特别大的优势,但也比一堆SQL类数据库快多了。

关于LevelDB的作者Google传奇工程师Jeff Dean,在知乎上有一个非常有趣的讨论,感兴趣的同学可以看看:有谁可以介绍一下谷歌大牛Jeff Dean以及与他相关的事迹么?

description

作为单机数据库的LevelDB,和SQLite类似只需要配置一个数据存储的路径(文件夹)即可,适合作为SQLite的轻量级高性能替代方案。

 

原有数据库

之前版本中原有的数据库适配器也都进行了剥离优化:

  • SQL类

  • NoSQL类

    • MongoDB:剥离到vnpy_mongodb,改用pymongo替代mongoengine重构实现,大幅提高了性能;
    • InfluxDB:剥离到vnpy_influxdb,改用influxdb-client支持2.0版本的InfluxDB。

 

灵活数据服务支持

 

全局配置变化

和数据库适配器类似,对于数据服务也新增了标准化接口BaseDatafeed(位于vnpy.trader.datafeed中),实现了更加灵活的数据服务支持。在全局配置中,和数据服务相关的字段全部以datafeed作为前缀。

具体字段含义如下:

  • datafeed.name:数据服务接口的名称,同样是全称的小写英文字母;
  • datafeed.username:数据服务的用户名;
  • datafeed.password:数据服务的密码。

以上字段对于所有数据服务都是必填,如果是token方式授权请填写在database.password字段中,具体每个数据服务的细节如下。

 

RQData

米筐RQData一直以来是我们vn.py官方团队长期推荐的数据服务,对于大部分个人投资者应该是性价比较高的选择:

  • 项目地址:vnpy_rqdata
  • 数据分类:股票、期货、期权、基金、黄金TD
  • 数据周期:日线、小时线、分钟线、TICK(实时更新)
  • 注册申请:RICEQUANT

 

UData

恒有数UData是由恒生电子最新推出的云端数据服务,提供不限次、不限量的多种金融数据获取:

  • 项目地址:vnpy_udata
  • 数据分类:股票、期货
  • 数据周期:分钟线(盘后更新)
  • 注册申请:恒有数UData

 

TuShare

国内知名的开源Python金融数据接口项目,由大神Jimmy团队长期开发维护,除了行情数据外还提供许多另类数据:

 

TQSDK

天勤TQSDK是由信易科技推出的Python程序化交易解决方案,提供当前所有可交易合约上市以来的全部历史数据获取:

 

其他更新

 

价差交易模块优化

2.6.0版本中对SpreadTrading模块(vnpy_spreadtrading)进行了大幅优化,包括:

  1. 移除对反向合约、交易开平选项的支持,减少价差交易算法中的整体逻辑长度;
  2. 移除对老版本中线性价差的支持,统一改为使用灵活价差,提供更加灵活的价差构建方案;
  3. 当用户手动或者由策略停止价差交易算法时,必须等到全部委托结束且各条腿平衡后,算法才会结束运行,避免出现价差瘸腿;
  4. 价差的持仓数据不再使用账户底层各个合约的持仓计算,而是改为基于价差算法的成交结果进行维护,方便在多个价差中使用同一条合约腿。

以上功能优化涉及到对价差交易配置文件的修改,如果在启动VN Trader时出现和SpreadTrading相关的报错,请进入程序运行缓存目录(C:\Users\Administrator.vntrader),删除下述文件后重启即可:

  • spread_trading_setting.json
  • spread_trading_advanced.json
  • spread_trading_strategy.json

交易应用模块剥离

  1. OptionMaster期权波动率交易模块,剥离到vnpy_optionmaster项目中;
  2. ChartWizard图表分析模块,剥离到vnpy_chartwizard项目中;
  3. DataRecorder实盘数据录制模块,剥离到vnpy_datarecorder项目中。

 

CHANGELOG

 

新增

  1. 增加双边报价业务的发送和撤销函数功能
  2. 增加双边报价监控UI组件
  3. 增加用于对接数据库的抽象接口vnpy.trader.database
  4. 新增基于Arctic的MongoDB数据库接口项目vnpy_arctic
  5. 新增LevelDB数据库接口项目vnpy_leveldb
  6. 新增DolphinDB数据库接口项目vnpy_dolphindb
  7. 增加用于对接数据服务的抽象接口vnpy.trader.datafeed
  8. 新增TuShare数据服务项目vnpy_tushare
  9. 新增恒生UData数据服务项目vnpy_udata
  10. 新增天勤TQSDK数据服务项目vnpy_tqsdk
  11. 新增CoinAPI数据服务项目vnpy_coinapi

调整

  1. 移除批量委托和批量撤单相关的函数功能
  2. 移除老虎证券交易接口TigerGateway
  3. 移除鑫管家交易接口XgjGateway
  4. 移除AlgoTrading算法交易模块对于金纳算法服务的支持
  5. RestClient增加对操作系统代理配置的支持
  6. RestClient和WebsocketClient的默认异常处理逻辑由抛出异常修改为打印输出
  7. 价差交易模块移除对反向合约、线性价差、开平字段的支持
  8. 价差交易模块优化对灵活价差的支持,优化价差行情推送过滤判断
  9. 价差交易算法停止时,等待全部委托结束、各条腿平衡后,再结束算法

修复

  1. 修复在Linux/Mac系统上,运行多进程优化时的进程启动错误
  2. 修复WebsocketClient由于心跳机制不完善,导致的频繁断线问题

剥离

  1. 将米筐数据接口剥离到vnpy_rqdata项目中,并升级到2.9.38版本
  2. 将行情录制模块剥离到vnpy_datarecorder项目中
  3. 将K线图表模块剥离到vnpy_chartwizard项目中
  4. 将SQLite数据库接口剥离到vnpy_sqlite项目中
  5. 将MySQL数据库接口剥离到vnpy_mysql项目中
  6. 将PostgreSQL数据库接口剥离到vnpy_postgresql项目中
  7. 将MongoDB数据库接口剥离到vnpy_mongodb项目中
  8. 将InfluxDB数据库接口剥离到vnpy_influxdb项目中
  9. 将期权波动率交易模块剥离到vnpy_optionmaster项目中

 
v2.6.0版本预计将在国庆前发布,该版本最主要的更新是剥离了数据库接口(database)和数据服务接口(datafeed),方便用户根据自己的需求选择更加合适的高性能数据系统解决方案,计划在发布后搞一次专门的线下活动讲解。

内容:

  • vn.py的3.0开发方向

    • 架构改进:标准核心 + 插件扩展
    • 灵活构建适应各种场景的量化交易系统
  • 数据库接口database

    • 按需安装和基础使用
    • 高性能时序数据库DolphinDB
  • 数据服务接口datafeed

    • 更多的数据服务支持
    • 米筐RQData
    • 恒生UData
    • TuShare Pro
  • 后续社区活动规划 + QA问答环节

时间:10月16日 14:00-17:00

地点:浦东新区芳甸路1155号4楼WeWork会议室M

名额:40人
报名费:99元

报名方式:扫描下方二维码报名(名额有限,先到先得~)

description

发布于vn.py社区公众号【vnpy-community】
 
原文作者:用Python的交易员 | 发布时间:2021-09-17
 
v2.6.0版本预计将在国庆前发布,该版本最主要的更新是剥离了数据库接口(database)和数据服务接口(datafeed),方便用户根据自己的需求选择更加合适的高性能数据系统解决方案,计划在发布后搞一次专门的线下活动讲解。

内容:

  • vn.py的3.0开发方向

    • 架构改进:标准核心 + 插件扩展
    • 灵活构建适应各种场景的量化交易系统
  • 数据库接口database

    • 按需安装和基础使用
    • 高性能时序数据库DolphinDB
  • 数据服务接口datafeed

    • 更多的数据服务支持
    • 米筐RQData
    • 恒生UData
    • TuShare Pro
  • 后续社区活动规划 + QA问答环节

时间:10月16日 14:00-17:00

地点:浦东新区芳甸路1155号4楼WeWork会议室M

名额:40人
报名费:99元

报名方式:扫描下方二维码报名(名额有限,先到先得~)

description

也可以点击文章底部的原文链接跳转~

公司信息

公司全称

希塔私募基金管理有限公司

基本介绍

我们是一家处于成长期的量化多策略私募基金。我们的核心成员具有丰富的投资组合管理经验和衍生品交易经验,曾任职于海内外知名投资机构。诚邀有创业精神的伙伴见证和参与公司的共同成长与发展,期待您的加盟。

职位信息

 
职位名称

量化投研交易岗

薪资范围

15k-30K/月,五险一金,节日福利。

岗位职责

协同投资总监进行量化模型搭建和改进、相关数据库建立和维护、以及交易盯市模块落地和扩展;

参与开发、改进和回测交易策略;

熟悉量化交易市场,可参与执行交易或在既定策略框架下有独立自主交易能力;

每日复盘实际交易、评估交易结果。

任职要求

硕士及以上学历,计算机、统计、数学、金融工程等相关专业背景;

熟练使用C++、python、SQL等编程语言,使用C++和python者优先;

对量化交易尤其衍生品有较深了解。

 

职位名称

量化IT岗

薪资范围

15k-30K/月,五险一金,节日福利。

岗位职责

协同交易员进行量化交易工具、盯市模块以及投研框架的搭建、开发和拓展;

负责量化交易系统对接、落地、测试和日常维护,推进半自动化交易系统环境搭建;

改进系统交易执行能力,改进交易算法;

处理公司内部其他IT事宜。

任职要求

本科及以上学历,计算机、工程类相关专业背景;

熟练使用C++、python等编程语言,熟悉多线程和并发编程者优先;

熟悉量化交易系统基本构架、交易接口和行情;具备软件开发经历,熟悉衍生品系统开发工作者优先。

 
职位名称

量化研究岗实习生

薪资范围

100-150元/天

岗位职责

协助交易员进行量化模型及交易工具开发工作;

协助交易员与IT推进自动化交易系统环境搭建及测试;

参与量化数据库维护及拓展;

协助进行数据整理、分析和报告展示。

任职要求

211/985院校或海外一流大学计算机、数学、金融工程、统计等相关专业,2021年及以后毕业硕士或博士,熟练使用C++/python/SQL/VBA等编程语言;

对量化交易策略和衍生品有较深的了解与兴趣,适应高强度高工作压力;工作细致认真,有良好的执行力和解决问题的能力,良好的团队协作意识;

每周工作至少4天,实习期至少3个月;

优秀者可考虑留用。

联系方式

ir@theta-investments.com,投递简历的邮件请注明申请公司和职位。

工作地点

上海
 

公司信息

公司全称

上海杰奥普鑫投资管理有限公司

基本介绍

组建于2015年6月,杰奥普鑫投资是一个多元化的量化私募基金团队,创始人来自境外流动性提供商(Prop Trading)以及中金所期权项目组等专业金融机构。我们提供轻松、开放、专业、高效的创业式工作环境,办公室面对上海证券交易所新楼。希望每一位成员都能在工作中找到乐趣,接触最前沿的技术和策略,共同在这蓝海行业中扬帆起航。

职位信息

职位名称

高频量化策略研究员

  • 优秀实习生结束后,可直接录用

薪资范围

薪资:120元/天,极少加班,周末双休,软饮畅饮,节日有公司福利,有培训,不介意金融0基础

岗位职责

  1. 学习公司高频交易策略,分析交易结果及订单流,协助完善现有高频回测平台。

  2. 运用和改进现有量化策略平台,为投资决策提供参考。

  3. 在投研团队领导的指导下,接触前沿的机器学习技术,进行OrderBook等市场微观结构相关研究。

任职要求

  1. 熟练使用Python,了解面向对象编程,1年以上 Python 编程经验。

  2. 有一定数据处理、数据分析的操作经验。

  3. 本科生,研究生理工背景者优先,也欢迎对基金行业有热情的优秀人员~

联系方式

xiaoyou.chen@mail.vnpy.com,投递简历的邮件请注明申请公司和职位。

工作地点

上海

公司信息

公司全称

上海杰奥普鑫投资管理有限公司

基本介绍

组建于2015年6月,杰奥普鑫投资是一个多元化的量化私募基金团队,创始人来自境外流动性提供商(Prop Trading)以及中金所期权项目组等专业金融机构。我们提供轻松、开放、专业、高效的创业式工作环境,办公室面对上海证券交易所新楼。希望每一位成员都能在工作中找到乐趣,接触最前沿的技术和策略,共同在这蓝海行业中扬帆起航。

职位信息

职位名称

高频量化交易员

薪资范围

8k-12K,五险一金,节日福利,健康体检,很少加班,周末双休,不介意金融0基础。

岗位职责

  1. 对交易策略进行数据论证,分析交易结果及订单流,协助完善现有高频回测平台。

  2. 运用和改进现有量化策略平台,为投资决策提供参考。

  3. 在投研团队领导的指导下,接触前沿的机器学习技术,进行OrderBook等市场微观结构相关研究

任职要求

  1. 熟练使用Python,熟悉面向对象编程,2年以上 Python 编程经验。

  2. 有一定数据处理、数据分析的操作经验。

  3. 理工背景者优先。

  4. 欢迎对基金行业有热情的优秀应届毕业生。

联系方式

xiaoyou.chen@mail.vnpy.com,投递简历的邮件请注明申请公司和职位。

工作地点

上海

发布于vn.py社区公众号【vnpy-community】
 
原文作者:Bili | 发布时间:2021-09-07
 

description

 

前情回顾

 

在前面的文章当中,我们对RSJ指标有了初步的了解,并且在RSJ指标样本内外实验中也取得一个不错的回测结果。接下来,我们将继续根据陶勤英博士的财通证券研究所的研报中所指出的将RSJ指标与其他技术指标组合使用来进行进一步的实验研究观察回测后的效果。

 

测试原理

 

首先,我们根据文章选取了另外三个技术指标,分别是DMI指标、RSI指标和ROC指标分别与RSJ指标进行叠加使用进行回测。所以接下来我们需要了解各个指标的基本原理以及他们的信号逻辑:

 

DMI指标

 

基本原理:DMI指标基本原理是在于寻找股票价格涨跌过程中,股价藉以创新高价或新低价的功能,研判多空力量,进而寻求买卖双方的均衡点及股价在双方互动下波动的循环过程。与大多数技术指标相比DMI指标把每日的高低波动的幅度因素计算在内,从而更加准确的反应行情的走势及更好的预测行情未来的发展变化。

信号逻辑:趋向技术指标 DMI 包括多空指标 PDI、MDI 以及趋向指标 ADX。我们针对 DMI 指标建立相应的择时策略,即若昨日的 ADX 大于前一日的 ADX,则今日在收盘的时候看多;若昨日的 ADX、PDI、MDI 均小于前一日的相对应的指标值,则今日在收盘的时候看空(其中,ADX 值若不在[20,60]之内,则不进行交易)。

 

RSI指标

 

基本原理:RSI的原理简单来说是以数字计算的方法求出买卖双方的力量对比,譬如有100个人面对一-件商品, 如果50个人以上要买,竞相抬价,商品价格必涨。相反,如果50个人以上争着卖出,价格自然下跌。

信号逻辑:对于相对强弱指标 RSI,两种力量的对比决定了个股及大盘所处的状态:强势或弱势。从 RSI 值的变动范围来看:当 20 < RSI <50 时,弱势,卖出,空仓;当 50 < RSI <80 时,强势,买入,持仓。因此,若昨日的 RSI 值在(50,80]内,则今日在收盘的时候看多;若昨日的RSI 值在[20,50)内,则今日在收盘的时候看空。

 

ROC指标

 

基本原理:变动率指标(ROC),是以当日的收盘价和N天前的收盘价比较,通过计算股价某一段时间内收盘价变动的比例,应用价格的移动比较来测量价位动量,达到事先探测股价买卖供需力量的强弱,进而分析股价的趋势及其是否有转势的意愿,属于反趋势指标之一。

信号逻辑:ROC指标测量股价动量,可以用来监视常态性和极端性两种行情,对买卖股票提供强有力的参考。ROC 变大,代表未来市场仍会在短时间内上涨,反之则代表市场可能下跌。因此,若昨日的 ROC 大于前一日的 ROC,则今日在收盘的时候看多;反之,发出看空信号。

 

代码分析

 

接下来,我们将正式进入我们的实验阶段。为了避免文章内容的重复,我们仅以RSJ+DMI为例,为大家进行代码分析:

在本策略当中,我们需要使用到两种K线——5分钟K线和日K线,所以我们还需创建日K线生成器DailyBarGenerator:

class DailyBarGenerator:

    def __init__(self, on_daily_bar: Callable) -> None:
        """日K线合成器"""        
        self.on_daily_bar: Callable = on_daily_bar        
        self.daily_bar: BarData = None        
        self.last_bar: BarData = None

接下来构造update_bar函数用于更新K线到容器中,缓存K线本身的OHLCV数据:

 def update_bar(self, bar: BarData) -> None:        
     """更新分钟K线"""        
     if not self.daily_bar:            
         dt = bar.datetime.replace(                
             hour=0,                
             minute=0,                
             second=0,                
             microsecond=0
        )

        self.daily_bar = BarData(
            symbol=bar.symbol,
            exchange=bar.exchange,
            datetime=dt,
            gateway_name=bar.gateway_name,
            open_price=bar.open_price,
            high_price=bar.high_price,
            low_price=bar.low_price
        )        
    # Otherwise, update high/low price into window bar        
    else:            
        self.daily_bar.high_price = max(
            self.daily_bar.high_price,
            bar.high_price
        )            
        self.daily_bar.low_price = min(
            self.daily_bar.low_price,
            bar.low_price
        )

        # Update close price/volume/turnover into window bar   
        self.daily_bar.close_price = bar.close_price      
        self.daily_bar.volume += bar.volume  
        self.daily_bar.open_interest = bar.open_interest

        # Check if window bar completed       
        if (    
            self.last_bar       
            and self.last_bar.datetime.date() != bar.datetime.date()        
        ):            
            self.on_daily_bar(self.daily_bar)       
            self.daily_bar = None

        # Cache last bar object      
        self.last_bar = bar

交易信号执行:

5分钟K线用于计算RSJ指标,我们需要先使用BarGenerator将1分钟K线合成为5分钟K线,日K线用于计算DMI指标:

def __init__(self, cta_engine, strategy_name, vt_symbol, setting):  
    """"""        
    super().__init__(cta_engine, strategy_name, vt_symbol, setting)

    self.bg = BarGenerator(self.on_bar, 5, self.on_5min_bar)    
    self.am = NewArrayManager()

    self.daily_bg = DailyBarGenerator(self.on_daily_bar)   
    self.daily_am = NewArrayManager()

计算技术指标:

分别将RSJ、ADX、PDI以及MDI指标计算出来:

    # 计算技术指标        
    self.rsj_value = self.am.rsj(self.rsj_window)

    adx_array = self.daily_am.adx(self.dmi_window, array=True)   
    pdi_array = self.daily_am.plus_di(self.dmi_window, array=True)      
    mdi_array = self.daily_am.minus_di(self.dmi_window, array=True)

    adx_value = adx_array[-1]

判断交易信号:

当 RSJ 和 DMI指标同时发出看多信号,则在当日收盘的时候发出看多信号;若两个指标同时发出看空信号,则在当日收盘的时候发出看空信号;否则,不发出任何信号。

    # 判断交易信号      
    target_pos = 0

    if bar.datetime.time() == time(14, 50):  
        # 满足开仓交易的ADX要求           
        if 20 <= adx_value <= 60:   
            # 做多条件               
            if (                   
                self.rsj_value < 0 
                and adx_array[-1] > adx_array[-2]         
            ):                 
                target_pos = 1           
            # 做空条件           
            elif (             
                self.rsj_value > 0   
                and adx_array[-1] < adx_array[-2]     
                and pdi_array[-1] < pdi_array[-2] 
                and mdi_array[-1] < mdi_array[-2] 
            ):                   
                target_pos = -1

交易逻辑:

基于目标仓位和实际仓位,决定如何交易:

            trade_volume = target_pos - self.pos
            if trade_volume > 0:    
                 if self.pos >= 0:      
                     self.buy(bar.close_price + 5, trade_volume)    
                 else:     
                    self.cover(bar.close_price + 5, trade_volume)           
             elif trade_volume < 0: 
                if self.pos <= 0:   
                    self.short(bar.close_price - 5, abs(trade_volume))     
                else:       
                    self.sell(bar.close_price - 5, abs(trade_volume))

tips:

由于策略中涉及到多个技术指标,代码变得较为复杂。所以在这时将计算技术指标、判断交易信号和交易逻辑三个部分分开来写,会让我们的代码变得更加清晰从而增加代码的可读性。

 

回测结果

 

我们用 2017 年 7 月 23 日-2020 年 7 月 22 日的数据,对该日内指标进行回测。指标当日发出信号后,分别于当日收盘分别对上证 50、沪深 300、中证 500指数进行操作。

实验一:RSJ + DMI

其中 DMI 组合指标时间参数为14。

  • 本地代码:IF888.CFFEX、IH888.CFFEX、IC888.CFFEX
  • K线周期:1分钟
  • 开始日期:2017-7-23
  • 结束日期:2020-7-22
  • 手续费率:0.00003
  • 交易滑点:0.4
  • 合约乘数:300
  • 价格跳动:0.2
  • 回测资金:100W

description

资金曲线的形状和财通研报中的结果基本一致 ,可以认为比较正确的复现了策略逻辑:

description

实验二:RSJ + RSI

其中 RSI 指标的时间参数为 6。

  • 本地代码:IF888.CFFEX、IH888.CFFEX、IC888.CFFEX

  • K线周期:1分钟

  • 开始日期:2017-7-23

  • 结束日期:2020-7-22

  • 手续费率:0.00003

  • 交易滑点:0.4

  • 合约乘数:300

  • 价格跳动:0.2

  • 回测资金:100W

description

资金曲线的形状和财通研报中的结果基本一致 ,可以认为比较正确的复现了策略逻辑:

description

实验三:RSJ + ROC

其中 ROC 指标参数为 12。

  • 本地代码:IF888.CFFEX、IH888.CFFEX、IC888.CFFEX

  • K线周期:1分钟

  • 开始日期:2017-7-23

  • 结束日期:2020-7-22

  • 手续费率:0.00003

  • 交易滑点:0.4

  • 合约乘数:300

  • 价格跳动:0.2

  • 回测资金:100W

description

资金曲线的形状和财通研报中的结果基本一致 ,可以认为比较正确的复现了策略逻辑:

description

结论:

RSJ指标分别与DMI、RSI和ROC指标组合使用的回测效果整体上资金曲线都是呈上扬趋势,但是对于部分品种来说资金曲线不太稳键,还有较大的改进提升空间。

 

代码获取

 

本文中提到的三个策略代码较长,就不在这里贴出了。请关注本公众号(vnpy-community)后,回复内容【RSJ】获取源代码下载链接。
 

公司信息

公司全称

上海森浦信息技术有限公司

官方网站

www.sumscope.com

基本介绍

森浦为全球超过6,000家金融机构、数万名终端使用者量身定制了银行间市场产品qeubee终端、IDB(Inter-Dealer Broker)。

森浦的客户包括中国所有政策性金融银行、国有大型商业银行、股份制银行和绝大部分的城市商业银行、证券公司、基金管理公司、保险公司和投资公司等金融企业。还有诸多金融监管机构和交易所也使用森浦的服务。客户已覆盖中国大陆、香港、台湾、新加坡等国际市场。

森浦将着眼$全球化的进程,放眼金融市场,不断渗入海外市场并服务全球客户。

职位信息

职位名称

Python后端高级开发工程师

工作经验

6年以上

薪资范围

30k-45k

岗位职责

  1. 负责部门数据服务模块后端开发工作,优化现有模块及功能,提升底层数据服务效能;
  2. 维护平台各类任务、服务及脚本的开发维护工作;
  3. 开发具备高并发、高稳定性的Python平台,同时降低数据服务模块的资源消耗。

任职要求

  1. 精通python,使用过falcon,django和flask等框架,熟悉常用python库及工具
  2. 熟悉mysql,mongodb等数据库,具备基本的sql及数据库优化能力,使用过elasticsearch和kibana进行日志分析,了解rabbitmq, kafka等消息队列服务
  3. 精通分布式、多线程、异步及高性能设计,会性能调优;
  4. 有深度学习平台(PyTorch,TensorFlow等等)使用经验优先考虑;
  5. 优秀的沟通表达能力、问题分析能力和团队合作精神。

联系方式

xiaoyou.chen@mail.vnpy.com,投递简历的邮件请注明申请公司和职位。

工作地点

上海

发布于vn.py社区公众号【vnpy-community】
 
原文作者:用Python的交易员 | 发布时间:2021-08-20
 
VN.PY基于Python的开源量化交易平台,建立了专业且成熟的量化开源社区,为近3万的量化交易用户提供线上交流平台,社区日活人数6000多人,打造了多元化、高活跃的社区生态。

description

华锐金融技术与VN.PY签署的战略合作协议,双方将共同推进开放社区运营及机构服务产品共研等项目。基于 VN.PY在搭建开放社区累积的多年经验,双方合力为更多量化投资者创造更开放、更专业的技术交流平台和更丰富、更活跃的技术交流活动。

 

关于华锐金融技术

 

考虑到许多vn.py用户可能对华锐金融技术这家公司不太熟悉,这里也做个简单的介绍(以下信息来自华锐金融科技官方网站)。

 

公司简介

 

深圳华锐金融技术股份有限公司(简称“华锐金融技术”)是一家专注于为资本市场提供下一代分布式低时延基础技术及核心业务系统的国家高新技术企业。公司致力于提升中国金融基础设施自主能力,自主研发下一代分布式中间件,助力金融机构实现核心业务系统的分布式转型,成为下一代分布式低时延金融技术的引领者。公司于2018年、2019年连续获得深创投A轮、Pre-B轮投资;2020年获得招商局集团、招商银行、国泰君安证券旗下机构B轮投资;2021年上半年完成由华泰创新领投的Pre-C轮融资,红杉资本中国基金的C轮融资。

已上线的机构客户包括:

description

 

AMI 分布式系统基础平台

 

description

AMI完美满足了构建现代金融核心业务系统所需要的高可用、高并发、低时延、水平扩展四项关键需求。除了提供高可靠、低时延的消息传输能力,还提供完备、透明、与业务逻辑无关的高可用解决方案,以及多线程、高并发应用开发框架,是构建金融行业关键实时应用的理想基础平台,也是金融机构下一代数字化基础设施的关键组件。

 

ATP 华锐核心交易平台

 

description

ATP聚焦交易所场内标准业务,连接订单管理系统和交易所交易系统,业务范围覆盖所有场内交易品种,提供交易订单生成、前端风控检查、报盘等功能,及交易管理、运营和清算功能。

ATP产品遵循分层、抽象、解耦、隔离的业务设计理念,实现了公共技术服务框架和可配置的交易业务框架,业务特性封装为独立的业务包,实现了“可组装”式的业务配置,有效隔离业务间相互影响,可根据需要自选组装和分批上线,业务调整时影响范围可有效控制。

ATP产品具有可伸缩弹性架构,可按照场景灵活应用于构建普通投资者使用的大型集中交易系统、面向专业投资者使用的机构交易系统和面向追求极致性能场景的极速交易系统。

 

AMD 华锐高速行情平台

 

description

AMD是企业级行情服务平台,基于新一代分布式架构技术,为金融机构提供微秒级的行情分发服务,聚焦于实时行情分发及行情数据加工。既支持同数据中心内的极速转码、极速原始分发、实时行情加工、历史行情服务等,也支持跨数据中心部署,适应金融机构多场景应用。
 

发布于vn.py社区公众号【vnpy-community】
 
原文作者:用Python的交易员 | 发布时间:2021-08-18
 
《量化交易零基础入门系列 - 30天解锁Python量化开发》销量已达273份,课程价格将在销量到达300份后上调至599元,目前499元的价格还剩最后27个名额,需要的同学请抓紧不要错过!!!
 
周一发布了vn.py的2.5.0版本,本次更新的内容主要是实现了社区呼声已久的Web应用后端服务,满足许多用户希望通过浏览器(而非PyQt桌面端)来运行管理vn.py量化策略交易的需求。

请注意,2.5.0新版本中包含了对底层数据库结构的修改,因此对于之前版本的数据库需要进行手动迁移操作,具体操作流程请参考下文的【数据库升级迁移】章节。

和之前一样,对于使用VN Studio的用户,启动VN Station后,直接点击界面右下角的【更新】按钮就能完成自动更新升级,对于没有安装的用户,请下载VN Studio-2.5.0,体验一键安装的量化交易Python发行版,下载链接:

https://download.vnpy.com/vnstudio-2.5.0.exe

 

Web应用后端服务

 

架构设计

WebTrader采用了FastAPI作为后端服务器,支持REST主动请求调用和Websocket被动数据推送,运行时的整体架构图如下:

description

后端服务包括两个独立的进程:

  • 策略交易进程

    • 运行VN Trader的进程,负责所有策略交易功能的运行;
    • 启动了RpcServer用于对Web服务进程提供功能调用;
  • Web服务进程

    • 运行FastAPI的进程,负责对外提供Web访问的服务;
    • 启动了RpcClient用于调用策略交易进程的相关功能。

从网页端到策略交易进程的双向通讯模式包括:

  • 主动请求调用(订阅行情、挂撤单、查询数据)

    • 浏览器发起REST API调用(访问某个URL地址提交数据)到Web服务进程;
    • Web服务进程收到后,转换为RPC请求(Req-Rep通讯模式)发送给策略交易进程;
    • 策略交易进程执行请求处理后,返回结果给Web服务进程;
    • Web服务进程返回数据给浏览器;
  • 被动数据推送(行情推送、委托成交推送)

    • 浏览器发起Websocket连接到Web服务进程;
    • 策略交易进程通过RPC推送(Pub-Sub通讯模式),将数据推送给Web服务进程;
    • Web服务进程收到后,将数据通过Websocket API实时推送给浏览器(JSON格式)。

使用步骤

新增的Web应用服务源代码位于vnpy_webtrader项目中,用户可以通过VN Station启动时加载WebTrader应用即可。

启动VN Trader后,首先登录要交易的接口,然后点击顶部菜单栏的【功能】->【Web服务】打开如下图所示的窗口:

description

此时系统中运行的只包括策略交易进程,右上角区域的服务器配置选项包括:

  • 用户名和密码:从网页端登录Web应用时所用的用户名和密码,使用时请修改为自己想用的用户名和密码,请注意这里的用户名和密码与底层交易接口无关;
  • 请求和订阅地址:架构图中Web服务进程和策略交易进程之间,进行RPC通讯的地址,注意端口不要和其他程序冲突即可。

点击启动按钮后,会根据用户输入的配置信息在系统后台启动Web服务进程,同时在右侧区域输出FastAPI运行过程中的相关日志信息:

description

此时启动浏览器打开网址http://127.0.0.1:8000/docs,即可看到如下图所示的FastAPI接口文档网页:

description

这里包含了目前WebTrader支持的相关接口信息,用户可以结合vnpy_webtrader项目下提供的Jupyter Notebook进行相关接口的测试。

后续计划

WebTrader仅实现Web应用的后端(提供了给浏览器访问数据的接口),而前端页面(也就是浏览器中看到的网页)则按照之前的计划交给社区用户来实现,欢迎大家贡献代码。

同时WebTrader目前只支持了基础的手动交易功能,后续将会逐渐加上策略交易应用相关的管理功能(比如CtaStrategy的相关调用)。

 

TTS交易接口

 

CTP API在过去10年间,已经逐渐成为了国内金融市场的交易API标准,类似海外市场中FIX协议的地位,罗列几个兼容或者高度接近CTP的API:

  • 融航API:期货资管系统;
  • 铭创API:券商自营系统;
  • 华鑫奇点API:证券极速柜台系统。

最近知乎网友krenx推出了OpenCTP项目(CTP开放平台),同样是在兼容CTP API的基础上(只需替换dll),自主实现了整套CTP柜台的仿真交易功能(除了期货外,还引入了指数、股票等更多品种的支持),大家在SimNow之外又多了一个选择。

2.5.0版本中也增加了对OpenCTP交易系统的支持,接口名称为TtsGateway(Tick Trading System),从VN Station加载即可使用。

TtsGateway的连接配置信息如下:

  • 交易服务器:tcp://121.36.146.182:20002
  • 行情服务器:tcp://121.36.146.182:20004
  • 用户名和密码:关注公众号【CTP开放平台】获取即可
  • 其他字段全部留空即可(不校验)

 

数据库升级迁移

 

2.5.0新版本中对底层数据结构进行了扩展增强,增加的字段包括:

  • TickData

    • localtime:本地时间戳,用于高频策略回测的数据对齐;
    • turnover:成交额,用于计算日内VWAP等衍生数据;
  • BarData

    • turnover:同上。

同时所有的数据库管理器(vnpy.database)也都进行了对应的修改,升级后可能由于数据库结构变化造成系统无法启动。

对于购买了RQData等数据服务的用户,可以直接删除数据库后重新下载即可:

  • SQLite(默认数据库)的用户,请删除C:\users\administrator.vntrader\database.db文件;
  • 其他数据库(MySQL、MongoDB等)的用户,请删除DbTickData和DbBarData对应的数据表。

对于自行录制收集数据的用户(数据不能删的),需要进行数据迁移操作:

  1. 安装DBeaver之类的数据库管理工具;
  2. 用DBeaver将DbTickData和DbBarData中的数据导出为CSV文件;
  3. 删除上述数据表;
  4. 更新到2.5.0版本后,启动VN Trader创建新的数据表;
  5. 用DBeaver将之前导出的CSV文件,重新导入到数据库中即可。

 

其他更新

 

易盛内盘交易接口

新增基于易盛新推出的【启明星/北斗星兼容交易API】开发的EsunnyGateway(位于vnpy_esunny项目中),支持内盘期货、黄金TD、外盘期货等市场的交易。

接口剥离

  1. UFT接口,剥离到vnpy_uft项目中,采用3.7.2.4版本的API;

  2. 融航接口,剥离到vnpy_rohon项目中,采用6.5.1版本的API;

  3. CTP期权接口,剥离到vnpy_sopt项目中,采用3.5.5版本的API;

上述剥离的接口,均增加了Ubuntu上的一键自动安装功能,同时支持通过pip install命令进行快速安装。

 

CHANGELOG

 

新增

  1. 新增TTS交易系统(兼容CTP的仿真交易环境)的接口vnpy_tts(6.5.1)
  2. 新增易盛启明星/北斗星兼容交易API的接口vnpy_esunny(1.0.2.2)
  3. 新增BarData和TickData的成交额turnover字段

调整

  1. 将SpreadTrading模块策略初始化时的K线价差数据加载,改为优先通过RQData查询数据
  2. 在MainWindow的AboutDialog中,基于importlib_metadata模块来获取版本信息
  3. 隐藏所有对话框右上角的【?】按钮
  4. 将易盛外盘TapGateway的合约信息,从行情接口获取改为交易接口获取(避免外盘合约size为0的问题)
  5. 改进VN Trader的异常捕捉对话框弹出方式,避免多次重复报错情况下的程序卡死崩溃

修复

  1. 修复Linux下安装时,对于已经剥离的XTP API的自动编译操作
  2. 修复PortfolioManager的UI组件,对于成交事件监听类型错误的BUG
  3. 修复vnpy_rest下的Response对象缺乏text字段导致的BUG
  4. 修复ArrayManager的Aroon指标计算输出结果顺序错误的BUG
  5. 修复数据库管理器读写TickData时,由于缺少对localtime字段处理导致的BUG

剥离

  1. 将融航接口剥离到vnpy_rohon项目中,并升级到6.5.1版本
  2. 将CTP MINI接口剥离到vnpy_mini项目中,并升级到1.5.6版本
  3. 将CTP期权接口剥离到vnpy_sopt项目中
  4. 将恒生UFT柜台极速API接口剥离到vnpy_uft项目中
     

发布于vn.py社区公众号【vnpy-community】
 
原文作者:Bili | 发布时间:2021-08-06
 

description

 

前情回顾

 

我们在前文中叙述了RSJ指标,并且将该指标策略进行了源码复现,在初步回测中得到了一个还不错的回测结果。那么我们有了一个策略指标,接下来该怎么做?实盘交易测试策略的有效性吗?不,在使用资金进行冒险前,应该先对策略进行回溯检验,使用历史数据模拟交易测试策略是否有效。

 

测试原理

 

整体的思路为:选取过去一个时间段为样本,在样本内对参数优化,将优化结果带入策略中在样本中进行回测,保证回测结果中资金曲线呈现上扬趋势。将在样本中参数优化的结果带入样本之后的一个时间段再次进行回测,如果样本外回测的资金曲线也呈上扬趋势则说明该策略有效;反知,则说明该策略无效。具体操作步骤如下[代码请参照前文]

  1. 选取样本内的时间段

  2. 进行参数优化

  3. 将优化后参数带入策略在样本内进行回测(保证资金曲线上扬)

  4. 选取样本外时间段

  5. 将优化后的参数带入样本外数据进行回测

 

测试结果

 

实验一

 
1.选取样本内时间:2015.7.30 — 2018.7.29

2.参数优化(参照总收益率)

优化结果:m = 44**

3.样本内回测:

选择使用米筐RQData提供的IC888平滑主力合约数据,在CtaBacktester中的回测配置如下:

  • 本地代码:IC888.CFFEX
  • K线周期:1分钟
  • 开始日期:2015-7-30
  • 结束日期:2018-7-29
  • 手续费率:0.00003
  • 交易滑点:0.4
  • 合约乘数:300
  • 价格跳动:0.2
  • 回测资金:100W

description

4.选取样本内时间:2018.7.30 — 2019.7.29

5.参数m = 44 ,样本外回测

description

 

实验二

 
1.选取样本内时间:2015.7.30 — 2018.7.29

2.参数优化(参照总收益率)

优化结果:m = 19

3.样本内回测:

选择使用米筐RQData提供的IH888平滑主力合约数据,在CtaBacktester中的回测配置如下:

  • 本地代码:IH888.CFFEX
  • K线周期:1分钟
  • 开始日期:2015-7-30
  • 结束日期:2018-7-29
  • 手续费率:0.00003
  • 交易滑点:0.4
  • 合约乘数:300
  • 价格跳动:0.2
  • 回测资金:100W

description

4.选取样本内时间:2018.7.30 — 2019.7.29

5.参数m = 19 ,样本外回测

description

 

实验三

 
1.选取样本内时间:2016.7.30 — 2020.7.29

2.参数优化(参照夏普比率)

优化结果:m = 37

3.样本内回测:

选择使用米筐RQData提供的IF888平滑主力合约数据,在CtaBacktester中的回测配置如下:

  • 本地代码:IF888.CFFEX
  • K线周期:1分钟
  • 开始日期:2016-7-30
  • 结束日期:2020-7-29
  • 手续费率:0.00003
  • 交易滑点:0.4
  • 合约乘数:300
  • 价格跳动:0.2
  • 回测资金:100W

description

4.选取样本内时间:2020.7.30 — 2021.7.29

5.样本外回测(参数m = 37):

description

 

总结

 

基于上述样本内外检验的结果,结合RSJ指标本身极为简单的计算逻辑,足以证明其作为策略核心交易信号的有效性。在后续的系列文章中,我们就可以放心的对RsjStrategy进行扩展加强,引入更多的参数自由度,同时结合其他指标信号,来尝试进一步优化策略的交易绩效。
 

发布于vn.py社区公众号【vnpy-community】
 
原文作者:Bili | 发布时间:2021-07-29
 

系列前言

 

经过这两年2.0大版本下的持续迭代,vn.py在易用性方面有了不少提升,现阶段对于许多社区新人来说,可能最难的已经不再是如何安装使用vn.py,而是如何用vn.py开发出优秀的量化策略。

开发策略这件事情确实需要一定的灵感,但更多还是应该参考爱迪生的名言:

天才是1%的灵感加上99%的汗水。

在当今2021年的中文互联网上,其实已经可以找到非常丰富的量化策略研究资料:

  • 券商和期货公司研究所发布的金融工程研报;
  • 知名高校和业内公司发表的量化投资论文;
  • 微信公众号等自媒体上分享的策略研究文章;
  • 各家量化平台线上公开的经典策略源代码。

初学者最快的学习方式,无疑是站在这些巨人的肩膀上,付出99%的汗水掌握前人的已有知识和经验,然后再加上1%的灵感来开发出属于自己的量化策略。

所以在许多社区用户的建议下,我们决定推出这个新的【Veighna量化策略实验室】文章系列,帮助大家尽可能体系化的学习量化策略开发:

  1. 找到好的量化研究资料;
  2. 在vn.py中复现策略代码;
  3. 和原资料对比检验正确性;
  4. 加入更多灵感来改进提升。

那么,接下来就是本系列的第一篇正式内容,策略资料来源于vn.py社区用户分享的券商金工研报,作者是财通证券研究所的陶勤英博士。

 

基本信息

 

description
 
研报PDF

 

策略原理

 

RV计算公式

高频已实现波动率(Realized Volatility)是一种根据高频数据(这里指的是日内分钟线级别的数据,而非Tick级别数据)计算的日内波动率指标,该指标的计算公式为:

description

RSJ计算公式

由 Bollerslev 等作者(相关论文请参考研报PDF中的内容)研究的【好】与【坏】的波动率,是在RV的基础上将其分解为单独的上涨(好)和下跌(坏)两种情形下的波动率度量。将波动率分解为【好】波动和【坏】波动后,可以基于其相对的差值,去度量日内价格波动的不对称性(RSJ),该指标的计算公式为:

description

RSJ指标应用

根据原论文中的内容,日内高频数据计算得出的【好】波动率,描述了价格上涨时候的特征(反之【坏】波动率则是描述了价格下跌时候的特征)。

该指标用于横截面的选股策略上时,对未来收益率可以起到反转的预测效果。如果应用到时序类的CTA策略,则对应的逻辑大概为:

  • RSJ数值越大,则说明未来越倾向于下跌;
  • RSJ数值越小,则说明未来越倾向于上涨。

策略核心逻辑

考虑到RSJ指标衡量的是当天日内整体价格波动所反应出来的信息,且每天股票市场的成交量大多集中在开盘和收盘附近的时间,因此我们选择在临近收盘的时间点,计算过去一段时间的RSJ指标,并对隔夜以及第二天日内的价格走势变化进行预测。

具体策略逻辑:

  1. 使用5分钟级别的K线来计算RSJ指标;
  2. 在每日的14:55计算前一段时间(可调参数)的RSJ指标;
  3. 若RSJ指标大于0则发出空头信号,反之则发出多头信号;
  4. 基于指标发出的交易信号,在收盘前完成交易(比如14:56);
  5. 持仓到第二天的14:55分,然后重复2-4步骤调整仓位。

该策略的特点:

  1. 策略始终在市场中(持有仓位),要么做多,要么做空;
  2. 每天最多执行一次交易(如果信号方向变化)。

 

代码实现

 

计算RSJ指标

由于talib工具库中没有提供RSJ指标的计算功能,因此我们需要自行实现其计算代码,好在整个公式并不复杂。为了保持代码的简洁清爽,我们选择基于vn.py中内置的时间序列缓存容器ArrayManager,来进行扩展实现RSJ的计算。

首先创建子类NewArrayManager继承父类ArrayManager,用于按时间序列缓存bar数据,提供技术指标的计算。注意在构造函数init中,需要传入一个size参数(缓存数据的长度),将其默认值设为100(表示缓存的K线数量为100根),同时也增加了一个用于缓存收益率序列的return_array数组:

class NewArrayManager(ArrayManager):
    def __init__(self, size=100):
        """"""        
        super().__init__(size)        
        self.return_array: np.ndarray = np.zeros(size)

接下来构造update_bar函数用于更新K线到容器中,除了缓存K线本身的OHLCV数据外,也同时将收益率数据计算好缓存在return_array数组中,方便后续计算RSJ指标:

def update_bar(self, bar: BarData) -> None:
        """更新K线"""        
        # 先调用父类的方法,更新K线        
        super().update_bar(bar)

        # 计算涨跌变化        
        if not self.close_array[-2]:      # 如果尚未初始化上一根收盘价     
            last_return = 0        
        else:            
            last_return = self.close_array[-1] / self.close_array[-2] - 1

        # 缓存涨跌变化        
        self.return_array[:-1] = self.return_array[1:]        
        self.return_array[-1] = last_return

之后即可实现RSJ的计算函数,使用上一步已经缓存了的return_array,结合NumPy的向量化计算功能来保证计算速度:

def rsj(self, n: int) -> float:        
        """计算RSJ指标"""        
        # 切片出要计算用的收益率数据        
        return_data = self.return_array[-n:] 

        # 计算RV        
        rv = np.sum(pow(return_data, 2))

        # 计算RV +/-        
        positive_data = np.array([r for r in return_data if r > 0])         
        negative_data = np.array([r for r in return_data if r <= 0])

        rv_positive = np.sum(pow(positive_data, 2))        
        rv_negative = np.sum(pow(negative_data, 2))

        # 计算RSJ        
        rsj = (rv_positive - rv_negative) / rv        
        return rsj

交易信号执行

由于选择了5分钟K线来计算RSJ指标,因此我们需要先使用BarGenerator将1分钟K线合成为5分钟K线,在RsjStrategy类的构造函数下创建NewArrayManager对象am和BarGenerator对象bg,其中bg对象传入了额外的5分钟合成回调函数(self.on_5min_bar):

def __init__(self, cta_engine, strategy_name, vt_symbol, setting):   
        """"""        
        super().__init__(cta_engine, strategy_name, vt_symbol, setting)

        self.bg = BarGenerator(self.on_bar, 5, self.on_5min_bar)        
        self.am = NewArrayManager()

收到1分钟K线的推送后,将其推送到bg中合成5分钟K线:

def on_bar(self, bar: BarData):        
        """        
        K线更新
        """        
        self.bg.update_bar(bar)

每当有5分钟K线合成后,on_5min_bar函数会被自动调用,在其中驱动策略的核心交易逻辑:

def on_5min_bar(self, bar: BarData):        
        """5分钟K线更新"""        
        # 全撤委托        
        self.cancel_all()

        # 缓存K线        
        am = self.am        
        am.update_bar(bar)        
        if not am.inited:            
            return

        # 计算技术指标        
        self.rsj_value = self.am.rsj(self.rsj_window)
        # 判断交易信号        
        if bar.datetime.time() == time(14, 50):            
            if self.rsj_value > 0:                
                if self.pos > 0:            
                    self.sell(bar.close_price - 10, 1)

                self.short(bar.close_price - 10, 1)     
            elif self.rsj_value < 0:               
                if self.pos < 0:           
                    self.cover(bar.close_price + 10, 1)

                self.buy(bar.close_price + 10, 1)

一些注意点:

  • vn.py中的K线采用合成时间段的开始时间戳,因此14:55分合成出的K线其时间戳(datetime)应该为14:50;
  • 当发出做多信号时,策略应该持有1手的多头仓位,此时如果有昨日空头仓位,应该先买入平仓(cover),再买入开仓(buy);
  • 当发出做多信号时,策略应该持有1手的空头仓位,此时如果有昨日多头仓位,应该先卖出平仓(sell),再卖出开仓(short)。

 

回测结果

 

回测数据上,本文中选择使用米筐RQData提供的IH888平滑主力合约数据,在后续的篇幅中我们会尝试更多的品种,在CtaBacktester中的回测配置如下:

  • 本地代码:IH888.CFFEX
  • K线周期:1分钟
  • 开始日期:2017-7-30
  • 结束日期:2020-7-22
  • 手续费率:0.00003
  • 交易滑点:0.4
  • 合约乘数:300
  • 价格跳动:0.2
  • 回测资金:100W

作为原始版本策略的源码复现,初步回测结果还不错:

description

资金曲线的形状和财通研报中的结果基本一致(下图中的蓝线),可以认为比较正确的复现了策略逻辑:

description

策略回测的关键统计结果:

  • 总交易日:715
  • 盈利交易日:370
  • 总收益率:83.73%
  • 年化收益:28.11%
  • 百分比最大回撤:-25.03%

 

完整代码

  

最后,秉承vn.py社区的一贯精神:

Talk is cheap, show me your pnl (or code) !

自然必须附上策略的源代码:

from datetime import time

import numpy as np

from vnpy.app.cta_strategy import (    
    CtaTemplate,    
    BarGenerator,    
    ArrayManager,    
    OrderData,    
    TradeData,    
    StopOrder)
from vnpy.trader.object import (    
    BarData,    
    TickData
)


class RsjStrategy(CtaTemplate):    
    """"""    
    author = "Bili"

    # 定义参数    
    rsj_window = 12

    # 定义变量    
    rsj_value = 0.0

    parameters = [        
        "rsj_window"
    ]    
    variables = [        
        "rsj_value"
    ]

    def __init__(self, cta_engine, strategy_name, vt_symbol, setting):         
        """"""        
        super().__init__(cta_engine, strategy_name, vt_symbol, setting)

        self.bg = BarGenerator(self.on_bar, 5, self.on_5min_bar)     
        self.am = NewArrayManager()

    def on_init(self):        
        """        
        策略初始化
        """        
        self.write_log("策略初始化")        
        self.load_bar(10)

    def on_start(self):        
        """
        启动策略 
        """        
        self.write_log("策略启动")
        self.put_event()

    def on_stop(self):
        """        
        策略停止        
        """        
        self.write_log("策略停止")
        self.put_event()

    def on_tick(self, tick: TickData):
        """  
        TICK更新   
        """       
        self.bg.update_tick(tick)

    def on_bar(self, bar: BarData):  
        """       
        K线更新        
        """        
        self.bg.update_bar(bar)

    def on_5min_bar(self, bar: BarData):
        """5分钟K线更新"""
        # 全撤委托 
        self.cancel_all()

        # 缓存K线        
        am = self.am   
        am.update_bar(bar)    
        if not am.inited:     
            return

        # 计算技术指标      
        self.rsj_value = self.am.rsj(self.rsj_window)

        # 判断交易信号 
        if bar.datetime.time() == time(14, 50):  
            if self.rsj_value > 0:         
                if self.pos > 0:           
                    self.sell(bar.close_price - 10, 1)

                self.short(bar.close_price - 10, 1)      
            elif self.rsj_value < 0:           
                if self.pos < 0:       
                    self.cover(bar.close_price + 10, 1)

                self.buy(bar.close_price + 10, 1)

        # 更新图形界面     
        self.put_event()

    def on_order(self, order: OrderData):   
        """      
        Callback of new order data update. 
        """        
        pass

    def on_trade(self, trade: TradeData):   
        """   
        Callback of new trade data update.   
        """     
        self.put_event()

    def on_stop_order(self, stop_order: StopOrder):    
        """      
        Callback of stop order update.   
        """        
        pass


class NewArrayManager(ArrayManager):

    def __init__(self, size=100):    
        """"""  
        super().__init__(size)

        self.return_array: np.ndarray = np.zeros(size)

    def update_bar(self, bar: BarData) -> None:   
        """更新K线"""   
        # 先调用父类的方法,更新K线    
        super().update_bar(bar)
        # 计算涨跌变化   
        if not self.close_array[-2]:      # 如果尚未初始化上一根收盘价      
            last_return = 0    
        else:      
            last_return = self.close_array[-1] / self.close_array[-2] - 1

        # 缓存涨跌变化      
        self.return_array[:-1] = self.return_array[1:]     
        self.return_array[-1] = last_return

    def rsj(self, n: int) -> float:      
        """计算RSJ指标"""       
        # 切片出要计算用的收益率数据    
        return_data = self.return_array[-n:] 

        # 计算RV       
        rv = np.sum(pow(return_data, 2))

        # 计算RV +/-      
        positive_data = np.array([r for r in return_data if r > 0])       
        negative_data = np.array([r for r in return_data if r <= 0])

        rv_positive = np.sum(pow(positive_data, 2))    
        rv_negative = np.sum(pow(negative_data, 2))

        # 计算RSJ       
        rsj = (rv_positive - rv_negative) / rv    
        return rsj

 

发布于vn.py社区公众号【vnpy-community】
 
原文作者:用Python的交易员 | 发布时间:2021-07-21
 
上一篇第12期【价差交易】的小班课报名公告发出后,短短几天剩余名额就全部售罄,所以决定早点开始下一场第13期【期权波动率交易】小班课的报名。
 

老规矩放几张之前课程的照片:

description

准备完毕,静候同学们到达

description

学习量化,先从掌握核心框架

description

深入代码,分析策略逻辑细节

所有小班课时间还是都会定在周末两天,一共包含周六周日两个下午共计10小时的课程,以及后续三个月的助教跟踪辅导。线下课程的地点在上海浦东,考虑到新冠以来大家对于坐火车飞机的健康风险顾虑,不想来上海的同学也可以选择远程线上听课。

第13期课程的主题是【期权波动率交易】,目前剩余名额还有6位,感兴趣的同学请抓紧,课程大纲如下:
 

日期:2021年8月28日(周六)和8月29日(周日)

时间:两天下午1点-6点,共计10小时

大纲

  1. 深入期权定价模型

    a. 期权定价的核心原理解析,欧式和美式的细节区别

    b. 三大定价模型实现

    i. Black-76
    ii. Black-Scholes
    iii. Binomial

    c. 定价模型的性能优化,Cython和C++扩展开发

  2. 隐含波动率曲面分析

    a. 波动率的不同形态:历史、实现和隐含
    b. 波动率时间序列建模:GARCH、EGARCH、GJR模型
    c. 隐含波动率计算:Newton-Raphson算法
    d. 解决实盘中的边界收敛问题,预防程序溢出

  3. 希腊值和期权风控

    a. 希腊值的定义和算法算法实现
    b. 实盘系统数据驱动流程解析
    c. 期权持仓组合情景分析和压力测试

  4. 波动率交易

    a. 围绕Delta中性原则展开波动率交易
    b. 期权价差组合的真正用途
    c. Gamma Scalping中的技术要点
    d. 期权做市报价算法开发

  5. 期权量化策略开发和交易

    a. 期权历史数据下载获取和每日更新
    b. PortfolioStrategy多合约策略模板
    c. 套利类策略代码分享:平价盒式轮动套利策略
    d. 波动率交易类策略代码分享:CTA趋势 + 波动率预测

 
价格:12999元

 

报名请发送邮件到event@mail.vnpy.com,注明想参加的课程、姓名、手机、公司、职位即可。

课程对于之前参加过小班课的学员优先开放,同时提供9折的价格优惠。
 

发布于vn.py社区公众号【vnpy-community】
 
原文作者:用Python的交易员 | 发布时间:2021-07-01
 
2021下半年的vn.py小班课开始报名,老规矩还是放几张之前课程的照片:

description

准备完毕,静候同学们到达

description

学习量化,先从掌握核心框架

description

深入代码,分析策略逻辑细节

所有小班课时间还是都会定在周末两天,一共包含周六周日两个下午共计10小时的课程,以及后续三个月的助教跟踪辅导。线下课程的地点在上海浦东,考虑到新冠以来大家对于坐火车飞机的健康风险顾虑,不想来上海的同学也可以选择远程线上听课。

第12期课程的主题是【套利价差交易】,总共10个名额目前已有一半被提前报名锁定,剩余名额还有5位,感兴趣的同学请抓紧吧,课程大纲如下:

 
日期:2021年7月31日(周六)和8月1日(周日)

时间:两天下午1点-6点,共计10小时

大纲

  1. 初识套利价差交易

    1. 套利类策略的特点:靠高胜率获得核心优势
    2. 如何寻找好的套利价差,从数据面和基本面着手
    3. 价差组合时间序列建模:相关性分析、协整算法
  2. 价差数据结构设计

    1. 价差腿LegData和价差组合SpreadData
    2. 价差盘口计算原理:价格、数量、统计算法
    3. 基于动态解析的灵活价差数据计算
    4. 实盘数据流驱动,底层接口到上层算法
  3. 价差交易算法实现

    1. 价差执行算法和价差量化策略的异同
    2. 基于SpreadAlgoTemplate实现狙击算法
    3. 价差做市算法实现,盘口细粒度委托控制
  4. 价差量化策略开发

    1. 半自动固定范围买卖策略
    2. 全自动统计套利模型策略
    3. 网格区间价差交易策略
  5. 价差交易实战进阶:

    1. 价差策略回测:TICK模式和K线模式
    2. 实盘策略运维原则,安全、稳定
    3. 主动腿挂单做市算法的实现


 
价格:11999元
 

报名方式和之前一样,请发送邮件到vn.py@foxmail.com,注明想参加的课程、姓名、手机、公司、职位即可。

课程对于之前参加过小班课的学员优先开放,同时提供9折的价格优惠。
 

© 2015-2022 微信 18391752892
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】