1.vn.py学习笔记1-开坑篇
2.量化回测终极指南,量化量化以backtrader为例
3.vn.py学习笔记(八)vn.py utility、交易交易BarGenerator、源码源码ArrayManager源码阅读
4.五穷六绝七翻身?量化分析揭开背后真相(附源码)
5.vnpy迅投QMT接口:vnpy_qmt
6.量化交易领域有哪些经典策略
vn.py学习笔记1-开坑篇
vn.py学习笔记的开篇,带着我们重新探索这款开源量化交易框架。量化量化三年前,交易交易复因没有溯源码作者在大学时代偶然接触vn.py,源码源码那时渴望找到一个结合自动交易与数据接口的下载下载平台,但了解到数据接口需券商审核,量化量化需高额资产,交易交易便放弃了这个念头。源码源码
暑假期间,下载下载作者再次回访vn.py,量化量化惊喜地发现其版本已更新至3.x系列,交易交易并更名为VeighNa。源码源码下载了VeighNa Station后,发现它提供了一个软件安装包,包含诸多C++文件及未知后缀名。在探索过程中,作者通过搜索找到了vn.py的原始代码仓库,了解到VeighNa提供手动安装方式,使得vn.py能作为第三方库融入用户环境,用户可自由阅读及修改源码实现个性化功能。
为了方便在编写策略时查看源码,作者在vn.py安装目录下创建了一个workspace文件夹。接下来,作者将持续更新vn.py源码阅读和策略研究,尽管开学后事务繁忙,仍会定期更新内容。同时推荐关注知乎账号@用Python的交易员,该账号为vn.py的创始人所有。
关于vn.py的文档与源码资源,包括项目文档、gitee仓库以及VeighNa Station的下载链接。
vn.py作为一个开源量化交易平台,其优势显著。创始人将平台开源,体现了其开放共享的格局。与市面上其他平台相比,vn.py提供完整的回测系统、高质量数据与完善接口文档。对于拥有稳定数据与交易需求的用户,vn.py能确保策略的安全性与稳定性,适合中低频股票交易者。
学习成本低是vn.py的另一大优势,使用纯Python开发,使得任何交易者都能快速掌握其操作与修改能力。vn.py完全开源,用户可以自由地进行定制与模块扩展,无需承担法律责任。框架支持模块化扩展,用户可根据需求添加各种模块引擎与数据接口,保持系统简洁高效。
活跃的社区是vn.py的另一特色,用户可从中获取丰富资源与知识,提升自己的交易与编程技能。然而,vn.py目前似乎缺乏股票回测框架,竞拍网源码未来或从其他开源项目中汲取相关组件。界面设计方面,vn.py界面较为简洁,但用户可自行优化,提升使用体验。
总结而言,vn.py作为一个开源量化交易平台,凭借其开放性、安全稳定性、低上手门槛、可扩展性及活跃社区等优势,为交易者提供了强大的工具与资源。学习vn.py不仅能够提升编程与交易技能,还能促进知识共享与创新。无论是作为个人学习还是团队合作项目,vn.py都值得深入探索与使用。
量化回测终极指南,以backtrader为例
这篇文章提供了一个深入的量化回测指南,尤其以backtrader为例,旨在帮助那些寻求在量化交易领域取得成功的人。
backtrader是一个开源的回测框架,其源代码可在GitHub上获取,进行深入学习。首要步骤是准备行情数据,无论是付费还是免费资源,这将对后续步骤产生影响,但在此处我们暂且不讨论。
对于初学者,如果你的目标是学习回测框架的编写,可以直接从GitHub下载源码进行实践。回测的主要目的是检验和优化交易策略,backtrader因其知名度而广受关注,网络上有许多相关教程。
然而,作者强烈建议避免使用现有的回测框架,因为它们往往功能受限,无法提供基本的交易功能,导致测试结果不准确。除非你的策略简单,否则这些框架可能无法提供有用的数据。为了获得精确有效的结果,你可能需要从零开始自己编写框架,或者借助少数成熟量化基金内部的专属工具。
接下来,作者通过实例解释了为什么选择一个强大的回测框架至关重要。例如,一个好的框架应能支持用户在任何可行的价格点下单,无论历史K线走势如何。此外,作者列举了几个场景,展示了现有框架在处理交易策略中的局限性,如订单执行、跳空等情况,这些都揭示了现有工具的不足。
最后,作者指出,回测的福利社源码微小误差可能对最终结果产生重大影响,而现有的回测框架往往无法准确模拟交易细节,导致策略测试结果偏差。尽管有人可能觉得自己有能力自建框架,但在数据处理阶段,仍可能遇到各种挑战,这表明完全掌握量化回测并非易事。
vn.py学习笔记(八)vn.py utility、BarGenerator、ArrayManager源码阅读
在量化投资的探索中,作者对vn.py产生了浓厚的兴趣,并投身于相关学习。目前,作者主要专注于vn.py在A股市场量化策略的学习,面临的主要技术难点包括获取和维持日线数据、实现自动下单交易、开发全市场选股程序、编写选股策略回测程序,以及运用机器学习进行股票趋势预测。作者计划通过阅读vn.py源码,深入了解其架构机制,并通过分享形式记录学习心得,以便更好地理解vn.py。
相关github仓库地址:github.com/PanAndy/quan...
如有收获,请关注公众号以支持作者。同时,作者也收集了一些量化投资和技术相关的视频及书籍资源,欢迎关注公众号亚里随笔获取。
本文将重点探讨vn.py/trader/utility.py中的内容,主要包括工具函数、BarGenerator和ArrayManager。工具函数部分相对容易理解,主要是对通用功能进行封装。BarGenerator是K线合成器,负责根据实时tick数据合成1分钟K线,并进一步合成n分钟K线。ArrayManager是指标计算辅助类,负责维护一定量的历史数据,以供计算sma、ema、atr等常见指标。BarGenerator和ArrayManager是本次学习的重点。
工具函数部分主要提供合约代码转换、路径读取、json文件读写、数值位数设置、日志等功能,主要是对基本功能进行封装,没有复杂的算法。
BarGenerator类用于从tick数据中生成1分钟bar数据,也可以用于从1分钟的bar数据中合成x分钟或x小时的bar。BarGenerator的主要函数包括update_tick、update_bar、update_bar_minute_window、update_bar_hour_window、on_hour_bar和generate。
ArrayManager是一个时间序列容器,用于按时间序列缓存bar数据,返佣网站源码提供技术指标的计算。ArrayManager提供的函数分为四类:init函数、update_bar、@property函数和技术指标函数。
五穷六绝七翻身?量化分析揭开背后真相(附源码)
六月悄然离去,留下了鲜绿色的回忆。七月的第一交易日即将来临,不用想,不用猜,投资群中的人们纷纷谈论着那句耳熟能详的股市谚语,相互取暖,相互打气。
这句谚语就是“五穷六绝七翻身”,虽然不能说每个人都耳熟能详,但肯定都略有耳闻。从字面上就能看出,说的是股市每逢每年的五月和六月都会出现下跌,到了七月,下跌趋势终止,开始回升走出低谷,打一个漂亮的翻身仗。
目前主流观点认为,这种说法最早起源于香港股市,在上世纪年代至年代的时候港岛特别流行,据说当时的经济研究员参考过历年香港股市的涨跌情况后,统计总结得出的结论。
类似的说法,不单单中国股市有,国外股市也存在,最著名的莫过于美国华尔街流传已久的“Sell in May”(在五月份卖出),但最早的出处却是在英国。完整的句子应该是“Sell in May and go away, come back at St.Leger's Day”,St.Leger's Day指的就是英国每年九月份在南约克郡举行的秋季赛马比赛。所以整句话翻译过来就是说,在五月份的时候大家都要卖出清仓离开,等到秋季赛马比赛后再回来。
为啥要在五月份离开呢?因为夏天到了太热了,离开伦敦去避暑,就跟清朝皇帝一到夏天就跑到承德避暑山庄消夏一样,等到秋天转凉了再屁颠屁颠跑回来。所以嘛,那群英国贵族、银行家和投资家都跑出去避暑了,清仓不玩了,那时候还没现在远程炒股的便利,股市可不就冷清没有行情嘛,等到他们九月末回来之后,行情才会有起色。后来这句话被投资者们念叨着跨过大西洋,带到了北美大陆,成为了如今华尔街金融人士口口相传的一句谚语。
同样都是五月卖出/下跌,一个来自于香港,一个来自于英美,那跟我国的大A行情规律吻合吗?今年大盘五月份跌了3.%,六月份跌了0.%,真的凡科源码下载是又穷又绝,接下来的一个月我们能翻身不?
要看我国股市符不符合“五穷六绝七翻身”这个规律,靠瞎说可不行,要有数据统计结果,邓爷爷教育道“实践是检验真理的唯一标准”,我们就撸起袖子开干。
要总结规律,那数据时间范围当然越长越好,挑来挑去,觉得还是先选择“上证指数”较为合适,它在年就发布了(沪深指数还要年后才发布),基本跟上交所深交所同龄,数据长度够长,基本全覆盖了A股发展历程,更何况股民日常说的点、点什么的,指的就是上证指数的点位。
首先我们就来获取上证指数的历史行情数据,这里使用的是股票量化开源库qstock,直接使用“pip install qstock”就可以安装,基本的功能无需注册便可以使用,对新手来说非常方便,详情请见:github.com/tkfy/qsto...
在这里我们就获取了上证指数从年6月至年6月的全部月度行情数据,结合当月的收盘价和上个月的收盘价(close)就可以计算出当月的涨跌幅(pct),为了方便后续统计,我们还需要将日期索引(date,对应的是每个月的最后交易日)转换为对应的月份数值(month)。
至此,我们就获取到了年7月至年6月这年之间每个月的涨跌幅数据,这样的日期范围设置的原因是,平衡每个月份数的分布,保证每个月都出现的次数相同,都是次。
数据整理完毕后,就可以开始统计了,在这里我们要统计的是每个月的上涨次数(win_num)、下跌次数(lose_num)、胜率(win_rate)、涨跌幅的均值(pct_avg)、涨跌幅的中位数(pct_med)、涨跌幅的最小值(pct_min)和涨跌幅的最大值(pct_max)。
实现的原理是,按月份数值(month)进行循环,分月份进行统计,那每一个月份就有个涨跌幅(pct)数值,若涨跌幅为正数记为上涨,负数记为下跌,胜率(单位百分比)则为“*上涨次数/”,其余的4个指标就分别对应着这个涨跌幅数值序列当中的均值、中位数、最小值和最大值,具体细节请看下方代码。
现在统计结果就一目了然了,五月份和六月份的胜率都是五五开,年里面涨跌都是各有次,而七月份上涨次数只有次,再看涨跌幅均值,这3个月份的涨跌幅均值分别为5.%、-0.%和-0.%,而且七月份的涨跌幅均值是一年个月里面最差的,涨跌幅中位数也是。
因此结果显而易见,无论从胜率,还是涨跌幅均值/中位数,七月份都要比五月份和六月份的差,如果还要坚持说五六月份还是“五穷六绝”的话,那整句话就该改为“五穷六绝七地狱”,地狱还可能是十八层的那种。
为了降低选择代表性指数时的片面性,我们把市场上主流的那几个指数都逐个统计一遍,只要把第一段代码中的变量symbol再分别逐次修改为深证成指、上证、沪深、中证、中证、创业板指和中证全指,时间范围也做对应的调整,挨个重新run一遍,就可以统计出相应指数的月份涨跌幅数据,每次的统计结果都会保存为以指数名称为文件名后缀的Excel文件,汇总这些统计文件,就可以看到所有指数的全貌,统计结果如下所示。
主流指数所有月份胜率数据表:
主流指数所有月份涨跌幅均值数据表:
从胜率表当中看出,五六七月份的总体胜率均值分别是.2%、.%和.%,七月份并没有好于五六月份;五六七月份的总体涨跌幅均值分别是2.%、-0.%和1.%,虽然七月份翻身了一丢丢,但也没有体现出“五穷”的赶脚,综上所述,至少在主流指数概况当中,“五穷六绝七翻身”这种说法并不成立,根本站不住脚,今年的七月翻身仗,翻不翻得了基本是五五开,但从总体涨跌幅均值来看,还是“优势在我”。
论证已经完毕了,但是在过程当中还有两个有趣的发现,也可以顺便说一下,眼尖的小伙伴可能已经发现了。
第一个就是存在着“五穷六绝七翻身”的指数,它就是上证指数,它五六七月份的胜率分别是%、%和.%,涨跌幅均值是-0.%、-1.和1.%,这样一看,是不是完美契合这句谚语了。
其实吧,只要你把各种市场指数、行业指数、风格指数、概念指数和板块指数统统都统计一遍,肯定能找出不少符合这种规律的指数,只不过占比不高,并不是主流,只要林子足够大,什么鸟儿都会有。
第二个发现其实我已经在上面的表格当中标注出来了,那就是在所有月份当中,二月份的胜率和涨跌幅均值出奇的高,如果还没有感觉的话,我们把它转化为柱状图展示就直观了。
特别是看二月份的涨跌幅均值,简直就是谷子地里窜高粱——硬生生高出一大截来,并且没有一个指数的二月份涨跌幅均值出现负数,二月份的胜率均值接近%,也是没有一个指数的二月份胜率是低于%的。
如果拿枪指着我的脑袋,让我硬是选一个月份翻身,我会毫不犹豫选择二月份,谁会跟概率过不去嘛。
其实上面的这些统计研究,在量化交易或金融工程里面有一个确切的术语,叫做“日历效应”,也就是研究那些与日期存在关联的非正常收益和非正常波动的数据特征现象。
如果大家对我国股市的日历效应感兴趣,特别是想了解清楚本次统计中二月份的胜率和收益为什么这么高,背后的金融逻辑是什么,推荐大家去看国海金工今年新出的深度金工研报《日历效应背后的择时策略探究》,在里面作者列举和解释了A股中各种各样与日期节假日相关的Alpha场景,并利用其中的原理构建指数择时和行业轮动策略。
这次就先聊到这儿,噢~对了,差点忘记说,找研报不方便的小伙伴,可在公众号“量化君也”后台回复暗号“日历效应”,就可以直接保存和下载上面那篇研报,如果对你有帮助的话,可以点个充满鼓励的“赞”告诉我,让我动力满满继续肝~
我是 @quantkoala,一枚大写的量化/程序化策略源码捕手,喜欢全方位收集分享市面上主流的策略源码(股票+期货+外汇),在“量化藏经阁”和“量化藏经阁Max”社群(入口)中,持续分享量化策略源码和量化知识等干货(目前已分享+套精品策略),欢迎关注点赞&联系沟通,探讨共赢&成果共享,相互交流&共同进步!!!常在线,多交流,多沟通!!!更多相关资料请见下方文章卡片,另外还有一个持续更新的公众号“量化君也”,专注于量化策略分享/交流/社群,欢迎来玩~
vnpy迅投QMT接口:vnpy_qmt
vnpy的迅投QMT接口,vnpy_qmt,为个人量化投资者提供了便捷的股票量化交易途径。我已成功开发并将其作为pip包发布,便于大家获取和使用。目前,这款接口主要针对vnpy 3.5版本进行了测试,确保兼容性。
核心功能包括通过连接mini客户端实现常规的买入和卖出操作。安装方法相对简单,只需从源码下载并解压,确保在vnpy环境中,通过远程pip安装依赖的迅投xtquant项目,你可以在这里找到下载链接:[迅投xtquant](github.com/ai4trade/XtQ...),以及相关的安装指导在迅投知识库中:[XtQuant版本下载 | 迅投知识库](thinktrader.net)
要启用vnpy_qmt通道,首先启动并登录mini客户端,接着在vnpy环境中配置连接,即可开始享受迅投QMT带来的高效量化交易体验。
量化交易领域有哪些经典策略
量化交易种比较受宽客们所熟知的量化经典策略有:alpha对冲(股票+期货)
集合竞价选股(股票)
多因子选股(股票)
网格交易(期货)
指数增强(股票)
跨品种套利(期货)
跨期套利(期货)
日内回转交易(股票)
做市商交易(期货)
海龟交易法(期货)
行业轮动(股票)
机器学习(股票)
以上这些经典的量化交易策略源码都可以到掘金量化交易平台查阅。
量化交易-vnpy_efinance-VeighNa框架数据服务接口
我们之前对vnpy_ctastrategy相关回测源码进行了解析:
回首凡尘不做仙:VNPY源码分析1-vnpy_ctastrategy-运行回测
回首凡尘不做仙:VNPY源码分析2-vnpy_ctastrategy-撮合成交
回首凡尘不做仙:VNPY源码分析3-vnpy_ctastrategy-计算策略统计指标
相关历史数据可以通过各类数据服务的适配器接口(datafeed)下载,目前vn.py支持以下接口:
然而,上述接口需要注册或付费才能获取数据。
为了帮助初学者更好地理解和学习量化交易以及vn.py框架,我开发了基于efinance数据接口的vn.py的datafeed。
开源地址为:github.com/hgy/vnpy...
编译安装:
下载源代码后,解压并在cmd中运行:
dist目录下vnpy_efinance-x.x.x-py3-none-any.whl包
使用:
安装完成后,在vn.py框架的trader目录中的setting.py中进行配置:
注意:此处只需配置datafeed.name,username和password无需配置。
配置完成后,可以通过以下示例进行调用:
同时,这里分享一个efinance数据下载及入库方法:
然而,efinance在获取分钟级别数据方面并不友好。对于需要获取分钟级别数据的初学者来说,我们可以使用天勤免费版的数据接口:
回首凡尘不做仙:量化交易-数据获取-vnpy_tqsdk免费版
一大波国外高清量化网址正在袭来...
随着春节的结束,工作和学习的节奏回归正轨,我开始整理各类量化资源,为读者们提供更新内容。在海外资料的探索中,我发现了一些优质的量化资料,包括理论和源码,适合初学者入门。考虑到国内朋友们的需求,我想把这些国外的好资源介绍给大家,希望你们能从中汲取精华,提升自己。
对于国内逐渐兴起的量化交易,虽然起源于国外,但了解和学习的渠道在哪里呢?这里有一份推荐清单:《Best Quant Blogs and Websites》。这个网址是 feedly.com/i/top/quant-...
这个列表收录了个备受国外关注的量化网站和博客,如Quantocracy、Quantpedia和Quantstart等,都是经常被提及的资源。由于是国外站点,访问可能受限,但别担心,我已经将所有相关网址保存,只需回复公Z号『量化君也』的暗号即可获取。
除了上述资源,还有其他文章供你参考,如《Best Quant websites | An unconventional guide》和《TOP Useful Blogs and Websites for Quants》。国外的量化资源丰富多样,国内的朋友可以通过这些站点学习到更多专业知识。
以QuantInsti为例,这个网站可以直接访问,无需登录,它的量化文章分类清晰,是入门学习的好去处。网站的Blogs标签下,你可以找到涵盖自动化交易、机器学习等个版块的深入教程,包括《Algorithmic Trading Strategies》、《Stock Market Data Analysis》等文章。
其中,机器学习版块尤其出色,不仅有理论讲解,还提供实践案例和Python代码,非常适合学习者。如果你想尝试使用神经网络、决策树等算法进行量化交易,这里也有相关的文章推荐,如《Neural Network In Python》和《Decision Tree For Trading Using Python》等。
总的来说,国外的量化资源丰富且实用,借助翻译工具,即使英语基础一般,也能无障碍学习。希望这些信息能帮助到你,欢迎关注『量化君也』公Z号,那里有更多的量化策略和知识分享。我是@quantkoala,期待与你一起交流和进步!
如何系统地学习量化交易?
首先,我对这个问题是完全不知道怎么回答,为此,我专门去请教了我的老师。我理解很难有一个定量交易的所谓的系统学习过程,定量的只是手段,交易逻辑是多样的,你可以通过形态描述,追踪市场方法,如不合理的降价,也可以把天体物理、小波分析、神经网络等复杂模型应用其中,你可以做的是K线结构上的策略,也可以做日线或每毫秒数据进行决策的策略。所有的一切目的就是为了获利,所谓量化和程序化只是实现这一目的的手段。
当你可以通过各种方法来理解定量的关注细节,比如如何避免未来的功能,如何理解每个数据的含义,测试,以及不同测试软件的优缺点,但你没法去“学习”量化交易,因为不会有人把自己真正赚钱的东西拿出来,如何赚钱必须自己去挖掘等等。
量化归根到底是什么不重要,重要的是你要利用自己的特点和优势,在你积累足够长的盘子以量化它为鸡肋之前,继续用单点深度挖掘坑,相信我,只要你有了长板(对,你应该首先把编程学牛了,达到准专业水平,这是最容易且可操作可衡量的点且受用一辈子),个劝你去撸策略的人都挂了,你的职业生涯还好好的。
一个strategist需要思考策略的思维框架,实现方式,而developer则是侧重了前后端接口,输入输出,界面设置,风控机制,平台拼接等等很多很多方面。其实很不相同吧。
目前市面上的量化交易平台做到了什么程度?
交易开拓者程序化交易平台
根据账户状况和交易信号来推动交易订单,使用类似于Pascal TBL语言开发策略模型的语法。 TB为定量模型开发中的战略发展提供更为全面的账户和交易功能,市场数据功能和统计功能。 它提供了最近的国内TICK数据和多周期历史市场数据。 它还为战略绩效评估提供了基础。提供丰富的战略回溯报告项目。 就定量交易而言,单一的结核病终端支持同时接受报价和交易的-个单一物种图表,但由于客户技术架构,缺乏对高频率和更复杂政策的支持。 现阶段结核病在市场低端定量交易平台上有很多期货公司的合作份额较高。
天软量化研究和交易平台天软定量研究交易平台采用TSL独特的TSL语言发展战略模式,全天软交易网关,实行量化交易。在定量模型研究和开发方面,我们采用了高性能数据仓库所提供的历史和TICK市场,基础数据,宏观数据等数据源,并提供了个开源函数库,用于战略开发,回溯测试, 性能分析。 在量化交易中,基本实现了自动交易,程序交易,算法交易等定量交易。
安翼金融终端程序化交易安易金融终端是国内期货和券商独立开发的股票自动化交易工具。 交易模型是使用通用脚本语言和技术指标进行图表驱动的自动交易。 在这个阶段,Ahn免费使用程序化交易工具,为国内期货和股票提供历史价格。 相对简单的股票,对冲期货和图表交易都可以进行。