皮皮网
皮皮网

【简单表白网站源码】【东软接口源码】【业绩小程序源码】cta策略 python源码_cta策略代码

来源:腾讯云通讯 源码 发表时间:2024-11-26 03:44:23

1.vn.py快速入门6 - 开发第一个量化策略
2.利用gplearn遗传规划生成期货cta策略
3.Quant 应该学习哪些 Python 知识
4.基于VN.PY的策策略CTA策略入门心得
5.Python之路 11 双均线策略的3种回测方法
6.客观地说用一创聚宽做股票量化很合适啊

cta策略 python源码_cta策略代码

vn.py快速入门6 - 开发第一个量化策略

       欢迎来到vn.py社区的快速入门教程系列的第6篇,我们将开始实践编程部分。代码假设你对Python有一定基础,策策略如果没有,代码推荐《笨方法学Python3》作为入门书籍。策策略在此教程中,代码简单表白网站源码我们将使用Visual Studio Code (VS Code),策策略一个由微软开发的代码开源编程编辑器,配合其丰富的策策略插件,成为我们的代码编程工具。

       首先,策策略下载并安装VS Code,代码点击官网链接,策策略安装完成后,代码找到左侧导航栏底部的策策略Python插件并安装。虽然我们推荐VS Code,但PyCharm、WingIDE、Vim或Visual Studio等其他IDE也适用,遇到问题时,可以切换回VS Code,因为教程中的所有操作都是通用的。

       接下来,理解用户目录的概念,通常位于C:\Users\你的用户名,这是vn Trader默认的运行时目录。vn Trader会在该目录下创建.vntrader文件夹存放配置和临时文件。同时,CTA策略会在strategies文件夹中寻找用户自定义策略,Windows用户需在C:\Users\你的用户名\strategies创建这个文件夹。

       在strategies文件夹下创建名为demo_strategy.py的策略文件,然后用VS Code打开。策略类开发从定义CtaTemplate基类开始,它是所有CTA策略的基础,提供事件处理和操作函数的框架。

       策略类中,需要定义参数和变量,参数是策略逻辑中的固定数值,变量则用于存储策略执行过程中的中间状态。定义完成后,需添加到对应的参数和变量列表中,以便策略引擎管理。

       在vn.py中,交易逻辑由事件驱动,比如K线推送。对于双均线策略的DemoStrategy,我们只需在on_bar函数中处理K线数据,如使用ArrayManager计算均线指标并进行金叉或死叉判断。策略的执行涉及开仓、平仓操作,以适应双均线策略的交易逻辑。

       实盘交易时,需要自己合成K线,vn.py的BarGenerator工具可以帮助完成这个任务。在策略的__init__函数中初始化BarGenerator,并提供on_bar回调。每当收到Tick更新,更新BarGenerator,BarGenerator会在K线走完时触发on_bar函数,执行交易逻辑。

       以上就是东软接口源码vn.py快速入门的实践部分,如需了解更多内容,欢迎关注vn.py社区的微信公众号获取更多资讯。

利用gplearn遗传规划生成期货cta策略

       春节期间,我决定深入研究期货交易策略,决心通过全面探索来发掘潜在的因子。于是,我在假期里花费了两天时间,选择了gplearn这一工具进行实验。

       gplearn是Python中最成熟的符号回归算法,它作为监督学习的一种,目标是揭示隐藏的数学公式,以预测目标变量。在这个实验中,我选择了2万根ETH合约的分钟K线数据作为基础。

       在构建因子的过程中,我尝试了两种策略。华泰研报推荐的方法是方法二,我认为两者有相似之处。方法一是利用talib提供的众多函数,直接融入到模型中。方法二是参考了Allen Chi在CSDN博客中的高频因子挖掘技术。

       接下来,我开始对数据进行切割,进行自变量和应变量的训练。这个过程可能需要秒到秒,甚至更长,具体时间取决于数据量的大小。评估模型的效果,我选择了Spearman相关性作为主要指标,另一种方法则是自定义评估函数,以追求收益率优化的最优解。

       经过一系列的训练和评估,我最终绘制出学习曲线,成功地获得了最佳的策略结果。这次实验不仅提升了我对期货交易策略的理解,也展示了gplearn在生成CTA策略中的潜力。

Quant 应该学习哪些 Python 知识

       1. 如果还需要Deep Learning方面的东西的话,可以考虑Theano或者Keras。这两个东西可能会用在分析新闻数据方面。不过不是很推荐使用这类方法去做量化模型,因为计算量实在是太大,成本很高。

       2. 交易框架方面,除了vn.py,还推荐PyAlgoTrade框架,github上可以搜到。私以为这个框架比vn.py牛逼太多了,毕竟是一个在金融IT领域混迹近年的老妖的作品,架构设计不是一般的优秀。

       3. 国内的话,ricequant是个不错的选择,虽然使用的是Java,但是团队我见过,都是做金融IT出身的,基本上都有7、8年以上经验,底层功底非常扎实,做事情都很靠谱。现在他们也在考虑把SDK扩展到Python这边。

       4. 国内的行情和交易接口,使用的是自己的协议(比如CTP接口使用的是FTD协议),而不是国际上广泛使用的FIX协议,并且都不开源。如果需要连接行情,还需要考虑将接口SDK为python封装一下。(修改:评论中有人提到很多券商也开放了FIX接口,不过似乎是在内网使用)

       5. 有人谈到数据库了,这里我也说一下,对于高频tick级别的数据,其量级可以达到每天TB级别,普通的关系数据库是扛不住的。如果试图使用传统的关系数据库,比如Oracle之类的可以省省了。对付这种级别的数据,采用文件系统+内存索引会更好。不过这种场景,一般也就是机构里面能碰到了,个人quant可以不用考虑。

基于VN.PY的CTA策略入门心得

       CTA策略简介与VN.PY入门指南

       CTA策略,即商品交易顾问(Commodity Trading Advisor),是量化投资领域中重要组成部分,相较于股票量化策略,CTA策略能提供更稳定的收益与更低的风险。通过CTA策略的对冲性和高频性,市场波动趋于平滑,使得对冲做得好时,能无视大盘波动。

       开发CTA策略时,选择适合的工具极为关键。市面上的可编程交易软件如TB或MC,价格不菲且语言小众,开发复杂。在比较了多种选项后,VN.PY成为了CTA策略开发的首选平台。本文将为读者介绍VN.PY的入门心得,旨在快速帮助大家了解VN.PY并上手开发,而不涉及策略的深度开发。

       一、VN.PY安装

       安装VN.PY主要依赖于VNStation,用户可在官网上下载最新版进行安装,版本为2.5.1。安装目录默认为C:\vnstudio。业绩小程序源码需要注意的是,VNStation自带Python包,建议使用VSCode作为开发IDE,且本地Python环境应保持干净,避免与其他环境混用。此外,VN.PY的源代码位于C:\vnstudio\Lib\site-packages\vnpy目录下,与GitHub上的源代码存在差异,建议使用vnpy目录下的源代码。

       二、启动VNStation

       启动VNStation前需创建策略代码目录,一般在C:\Users[用户名或Administrator]\strategies下。启动VNStation后,选择VN Trader Pro,配置底层接口为CTP或CTP测试,选择上层应用时,通常选择CTA自动交易模块与CTA回测研究模块。设置运行目录与策略代码目录保持一致。

       三、CTA回测与策略

       在使用CTA回测或CTA策略前,需要进行数据准备。VNTrader提供RQData数据或本地数据库服务。启动CTA回测功能,选择策略,输入本地代码与回测条件,点击开始回测。回测页面显示各项指标,如账户净值、盈亏分布等。回测过程中,注意理解初始化日的限制、平今仓手续费设置以及优化参数等。

       四、策略调试与学习资源

       策略调试可选择命令行或Jupyter notebook方式。通过VN Studio Prompt启动VN Station,运行命令行调试,或在Jupyter notebook中导入策略进行调试,修改相关参数,运行代码。学习资源方面,VN.PY公众号视频教程、官网项目文档、知乎频道、蜗牛博客与《Python量化交易》书籍均可作为深入学习的参考资料。

Python之路 双均线策略的3种回测方法

       对于每一个交易日,都能计算出前N天的移动平均值,然后将这些平均值连起来,形成一条线,称为N日移动平均线。

       在双均线策略中,我们使用两条均线,快均线(例如:5日均线)和慢均线(例如:日均线)。当快均线上升穿过慢均线时,形成金叉,给出买入信号。反之,当快均线下降穿过慢均线时,形成死叉,给出卖出信号。然而,趋势形成指标源码双均线策略并非一个可靠的CTA策略,它只提供买卖信号,没有明确的过滤器和止损,因此稳定性较差。而且因为越来越多的人了解并使用它,策略已经逐渐失效。尽管以前很多前辈能用它赚到很多钱,但现在单纯想靠双均线策略赚钱太难了。

       由于策略的简单性,它可以作为一个很好的策略回测方法的入门,被称为量化领域的‘Holle World!’

       通常,当我们得到一组数据时,第一步是使用简单的向量回测方法来检测它是否有强的自相关性。如果数据在时间序列上表现出趋势,则适合使用CTA类的策略。反之,如果表现出均值回归(即在一定价格区间上下震荡),则使用套利类策略。

       第二步,当数据显示很强的自相关性或很弱的自相关性时,需要更精细化的策略回测,Python中可以使用事件驱动引擎来进行事件化回测或基于vn.py框架的策略回测。

       以下用上证ETF()为例。

       导入包,使用Tushare获取数据,然后用sort_index()改变其时间排序方式,再计算每天的价格变化。

       计算两条均线,分别是5日移动均线和日移动均线。使用rolling()函数:滚动窗口的周期是5,不取中间数(FALSE)。

       从下图中可以观察到,ma5是从第5个交易日才开始有的(统计的是前4天的收盘价,加上今天的收盘价),而ma是从第个交易日才开始产生的。因此,到2月6日所有数据才完整起来,同时从这天起(个交易日)开始产生交易信号。

       清除空值,从2月6日开始统计。

       通过交易信号计算持仓情况。如果快均线上穿慢均线,即ma5>ma时,产生买入信号。因为ma5和ma是今天收盘时才刚刚统计出来的,所以其交易信号需要明天开盘时执行。

       每天盈亏=当日持仓*当天价格变化。

       当仓位发生变化时,如做多变成做空,会产生手续费。手续费=开仓的总数(这里是2万股)*当日收盘价*手续费率(万分之三)。

       净盈亏=每天盈亏-手续费。

       最后计算累计盈亏。

       绘图。

       测试表明双均线策略并不理想。图中显示2.3万的本金,在年全年只能盈利2千左右。

       以下为双均线策略的事件化回测。

       这里我们需要使用事件驱动引擎。精简ui影视源码

       事件驱动:当一个新的事件来临时候,我们会做一些事情并把某些结构固定下来,在这样一个框架下,你不可能获得未来的数据。只要细节的盈亏计算代码不出现问题,不应该包含任何未来函数。

       导入包,因为我使用的是Python2,这里使用一个新的库__future__,即把下一个新版本的特性导入到当前版本。这里是导入Python未来支持的语言特性division(精确除法)。

       获取当天价格变化。

       定义缓存结构,初始化输入的参数。

       定义类(每天盈亏结果),在类中再次初始化参数,然后定义各参数的逻辑关系。

       现在开始运行回测。

       df.iterrows()生成Python迭代器,enumerate()当传入一个迭代器作为参数时,会返回当前迭代变量的基数情况。在迭代的过程中,dataframe每一行是一个日期外加2个字段(close和change),所以会以table的形式返回每一行。所以在table中,第一个元素就是日期,然后是当日收盘价和差价。然后是遍历下面的内容。

       将数组中的老数据平移一格(将当前最新的收盘价插入数组最后位置上,更新到最新的情况)。

       如果尚未有个数据点缓存数量,则continue后面的逻辑则不执行。当积累到个信号后,开始正式的计算。

       计算双均线策略的交易信号。

       回测跑完后,现在要通过累计收益来显示策略结果。

       该图和上图用向量回测得到的结果差不多。

       以下为双均线策略的基于vn.py框架的回测。

       首先,搭建vn.py运行环境。

       详细,请看《懒人包:vn.py安装图文详解》(更新至v1.9.0)。

       安装好之后开始跑回测。

       导入包。

       In[1]

       获取数据。

       In[2]

       创建MongoDB连接。在MongoClient传入参数,第一个是MongoDB所在服务器的默认IP(本机地址)和第二个是默认端口。然后返回client下的数据库对象,在数据库中查找vtSymbol。

       在MongoDB数据库中可以看见collection已经创建好了。

       将数据插入历史数据库。

       最后一行:

       update_one 保证其唯一性(所谓数据库的唯一性,就是这个键是已知的时候,这个键对应的数值是唯一的,若重复插入时候,要么报错,要么新的值把老的值给覆盖掉),所以在重复插入,新的值把老的值给覆盖掉。

       { '$set':bar.__dict__} flt出现的时候做一个更新。

       用upsert=True,意思为当数据已经存在的时候,去覆盖它,upsert=False则是当数据已经存在的时候,不做任何操作。

       In[3]

       开发策略。

       导入策略模板文件中的策略模板对象。

       In[4]

       下面分别是构造函数,初始化策略,启动策略,停止策略和收到Tick推送。

       具体的双均线策略就出现在onBar函数上。

       因为是策略回测而不是实盘,所以下面都pass了。

       在策略类设置完之后,下面开始加载回测引擎。

       In[5]

       设置产品相关参数。

       让我们看看双均线策略回测结果。

       首先是参数输出,盈利是2千多,交易日从2月6号开始,最大回撤达%,这是纯双均线策略的特点,过于钝化,需要结合有效离场指标来降低亏损。

       最后是绘图结果。

       总盈亏图有些出错,应该是从2月初开始交易的,但是大致的图形都与上两幅符合。

       从双均线策略回测效果看来,vn.py的回测并不具有优势,需要导入很多库,而且策略框架写起来很麻烦。但是,vn.py对于自己手写,第一个好处就是杜绝未来函数,而且vn.py设计之初只是用于实盘交易,所以其回测与实盘公用一套代码是第二优点。最后是对于要用到多个技术指标的通道突破策略,或者多策略+多品种回测,在已有框架下写策略显然要比自己手写要轻松。

       感谢@Chandler Chan的提醒,由于那时候刚刚学Python没多久,把初始化天数和一些参数搞错了,导致vn.py回测得到的图形和上2种方法的图有相当程度的不同。现已完善得差不多。

客观地说用一创聚宽做股票量化很合适啊

       我一直在寻找一个值得信赖的股票量化交易接口,我的需求其实并不复杂。

       有人向我推荐了聚宽,起初我还有点犹豫,但深入了解后,我最终决定接受它。

       我通常不赞成使用Python进行交易,因此我更倾向于C++的接口。然而,由于股票程序化受到严格的监管,如果每个散户都使用C++接口,并没有太好的解决方案。因此,我最终选择了聚宽的Python接口。

       我之前一直纠结的一个问题是,聚宽只提供1G的内存。这对研究高频策略,如1分钟K线、分笔数据等,显然是不够的。但另一方面,我们可以独立于聚宽进行研究,将回测好的策略上传到聚宽,仅使用其交易功能,这实际上是很划算的。

       聚宽解决了股票程序化的合规问题,没有资金限制,且提供1分钟K线和分笔数据,实盘只是时间问题。1分钟K线也可以用于高频策略,无需纠结。聚宽目前没有年费,对散户来说非常划算,其他平台通常需要收取-的费用。

       聚宽采用云端部署,节省了部署的麻烦。对于普通散户来说,最好免除所有这些成本,只收取手续费。一创聚宽确实满足了这一需求,手续费仅为万分之二点五,非常划算。

       实盘支持1分钟和日线,虽然不支持逐笔数据,但普通策略是可行的。1分钟数据也可以用于高频策略。我认为普通散户可以配置一些大盘蓝筹股,进行趋势增强,无需限制T+0,只需关注短趋势即可。

       许多做T+0的股票都是跌跌不休的,不会长期持有。普通散户无法用股指对冲,因此最好老实做蓝筹+趋势增强。

       聚宽现在每人可以上传一个策略,有兴趣的可以关注微信公众号babyquantFinance或添加微信babyquant,看看这个是否值得尝试。这类趋势策略类似于期货CTA/日内非高频策略,只需重新拟合和调整参数即可。我认为股票市场比期货市场更大,人傻钱多。

如何评价vnpy量化回测?

       vnpy量化框架在体验上表现出色,是值得推荐的开源量化工具。在使用过程中,可能会遇到版本选择上的困惑,确保使用的是VeighNa量化社区的vn.py版本。在搭建个人量化平台时,vn.py的回测功能尤为重要,可以通过其提供的CTABacktester引擎对策略进行回测,并将结果直观地展示在平台上。

       在安装vnpy时,下载最新的开源软件包,并按照指示逐步安装,确保与所使用的Python版本兼容。在vnpy的run.py中,插入代码开启CTABacktester,需要在全局配置中输入自己的mongoDB数据库的用户名、密码等链接信息。随后,打开CTA回测界面,确保已将所需的历史行情数据导入数据库,以进行高效回测。

       回测数据包含起始资金、结束资金、总收益率、年化收益、最大回撤等多个关键指标,帮助评估策略的有效性。通过修改vn.py代码,可以将回测功能集成至个人量化平台,实现策略的自定义开发与回测。

       为了提供更直观的策略展示,可以设计个性化的量化平台Web页面,并定义特定的策略,如EMaStrategy。通过在vnpy中创建策略文件(如“ema_strategy.py”)并集成至CTABackTesting中,实现策略回测。利用plotly解决方案,自定义输出结果和表现形式,生成html格式的可视化图表,以直观展示回测结果。

       为了比较不同策略的表现,可以同时进行多策略回测。通过vnpy的回测引擎和plotly的图形化输出,可以便捷地在个人量化平台上进行策略评估与分析,优化投资决策。若有任何问题,欢迎访问adog.net.cn/news获取更多资源或加入“知shi星球(阿岛格)”进行深入讨论。

cta和算法交易有什么区别?如何系统学习cta策略?

       CTA交易策略,全称是商品交易顾问策略,是一种通过期货、期权等衍生品进行中短期投机的投资方式。CTA策略偏重于基于技术信号、市场特征的中短期操作,旨在从传统股票、债券之外的资产类别中获取收益。CTA策略通常包括趋势跟踪和均值回归两种类型,以及主观CTA与量化CTA两大分支。量化CTA依赖计算机模型进行交易决策,而主观CTA则由投资经理根据研究和风险管理策略作出决策。

       CTA策略的执行周期较短,有时甚至为日内平仓,对价差敏感,要求快速执行和较低成本。量化CTA策略可能基于技术分析的图表、趋势追踪、动量指标和随机指标,也可能基于基本面因素如能源供给、就业数据等经济数据。主观型CTA策略的核心是人,决策过程包含了对市场现像的分析和未来走势的预测,但最终决策由交易员作出,可能面临情绪干扰。

       CTA策略在市场中混合运用不同策略,以适应不断变化的市场环境。高频做市策略、日内交易策略、中长线策略等是常见的CTA策略实例,各具特点,适用于不同市场环境和投资者偏好。

       在进行量化交易时,基础数据的获取、清洗、分析至关重要。量化交易与传统交易有本质差异,但本质上都是寻找可重复的市场现象,利用其预测未来走势以获取收益。计算机的加入显著增强了运算能力,使得传统技术面和基本面分析成为可能。

       量化交易的实现需要具备一定编程基础和经验,常用语言包括C++、C#、Java、MATLAB、R和Python等。Python以其强大功能和易学性成为量化交易领域流行的选择,尤其因其成熟的工具链和与C++的兼容性,使得在实现CTA策略时可以高效利用性能优化的底层代码。

       在使用Python进行量化交易时,需要注意其在多线程执行、静态类型检查方面的限制,以及代码重构时的痛苦。然而,Python的解释性语言特性、丰富的库支持以及相对快速的执行速度使其成为实现CTA策略的理想选择。对于性能要求较高的高频策略,C++可能更为合适。

       实现CTA策略的平台如MultiCharts,提供从策略编写、数据回测到自动化下单的全方位支持,能够满足股票、期货、期权等多种交易需求。MultiCharts支持多数据源、多周期、多商品的图表分析,并提供丰富的指标、警告功能和回测报告,帮助交易者优化策略并实现自动化交易。

       ALPHA ZONE为新手交易员提供了集学习和实践于一体的平台,包括量化交易和CTA策略的学习资源、交易经验分享以及模拟盘交易比赛。通过与MT4交易平台授权的wetrademarket进行交互,交易员可以实践CTA策略并积累经验。ALPHA ZONE还推荐了MQL4作为入门编程语言,适合自动化交易策略的实现。

       总之,CTA交易策略与量化交易之间存在紧密联系,通过学习和实践,交易员可以利用技术、数据和自动化工具实现高效的市场分析与决策,从而在复杂多变的金融市场中获取收益。

DeepAlpha通用因子挖掘:支持GPlearn遗传算法和深度强化学习挖掘因子(代码+数据下载)

       原创文章第篇,专注“AI量化投资、个人成长与财富自由”。

       按惯性每周五咱们会迭代版本,今天也不例外。

       年前咱们更新到quantlab3.6:

       Quantlab3.6:后续产品化的思考

       Quantlab3.5代码发布:因子表达式及Alpha因子库实现 | 超参数优化(代码+数据)

       本周的重点是gplearn在因子挖掘上的应用,重点是CTA场景。

       gplearn遗传算法应用于CTA因子挖掘:手把手教程(代码+数据下载)

       gplearn系列:使用因子rank ic评估因子性能(代码+数据)

       大家知道,原生的GPLearn并不适合挖掘因子,主要存在以下几个问题:

       1、gplearn只支持单标的,在CTA策略单标的可以,但单标的下挖掘的因子,很容易过拟合。

       2、内置的函数不适合金融量化因子,需要自己扩展。而且原生的扩展,不支持常数项,比如SMA(),这个就是常数。

       3、原生的fitness是ic和Rank IC,不支持夏普比或者卡玛比率这种。

       4、而且网上能用的代码有限,版本鱼龙混杂,不成体系,或者文档不全。

       5、传统的因子挖掘方法大多基于遗传规划(Genetic Programming)方法,这类方法具有收敛速度慢、超参数难以调优等局限;

       网上的代码都是“暴改”之后的,且没有文档,demo未必能跑通。

       我给大家跑通了一份,但是基于qlib的,与DeepAlpha同构,后续以这份代码为蓝本了。

       大家直接pip install -r requirements.txt即可(python 3.8)

       基于A股的qlib数据也会打包给大家,置于~/.qlib/qlib_data/cn_data_rolling目录下:

       代码已经发布至星球:AI量化实验室——量化投资的星辰大海

       1、支持GPLearn, DSO以及强化学习的版本。

       2、数据目前的A股全量数据,qlib格式。

       3、支持多支股票同时挖掘。

       4、支持多因子联合评测。

       AI量化实验室——量化投资的星辰大海

相关栏目:休闲