资源加载中... loading...

Python商品期货量化入门教程

Author: 雨幕(youquant), Created: 2024-09-12 09:11:33, Updated: 2024-09-12 09:17:23

[TOC]

img

导入课程

大家好,欢迎加入商品期货量化交易课程!在这个课程中,我们将使用Python语言,并借助优宽量化平台,从零开始系统学习量化知识。我们的目标是帮助大家成为精通量化交易的高手。

或许你们已经听说过量化交易,也对一个量化策略能够获得多大的收益感到好奇。那么,让我们通过一个实例来感受量化交易的神奇吧!我们将在优宽量化平台上选择一个策略,选取纯碱期货品种,并设定策略在2023年全年运行。结果显示,这个策略获得了150%以上的收益,确实令人惊叹。如果你们想学习如何从零开始研究、开发、编写和实践量化策略,那么就从今天开始吧!让我们一起踏上这段量化之旅。

神奇策略:在优宽量化平台实现一个年化150%+策略

image

第一章:商品期货量化交易基础

本节课我们首先介绍一下量化交易的概念以及商品期货市场。作为一种新型的金融投资方法,量化交易利用计算机技术,结合数学建模和统计学分析,从大量的历史数据中提炼出交易策略,通过计算机强大的运算能力实现自动交易,减少了交易者因情绪影响做出的非理性交易。

1.1 什么是量化交易

量化交易作为交易与计算机结合的产物,正在改变着现代金融市场的格局。如今已经有不少交易者将目光转向了这一领域。如何最大限度地降低风险并尽可能取得收益?也是许多交易者孜孜以求的目标。

1.1.1 量化交易概述

很多人一听到“量化交易”就会觉得高端大气、一夜暴富。人工智能时代,伴随着深度学习、大数据、云计算等先进技术的兴起,更是赋予它神秘的色彩。似乎只要运用量化交易,就能构建出“完美无缺”的交易策略。

在一定程度上,量化交易已经被神话了。量化交易其实就是借助计算机,并利用统计学、数学等方法,通过科学的投资体系,从中找到一套正期望的交易信号系统。这个信号系统会告诉我们应该在什么时间以什么价格进行买卖。

1.1.2 量化交易发展

追本溯源,早在19世纪,法国股票经纪人助理朱尔斯·雷格纳特就采用量化方法来分析价格数据变化,从中发现市场价格涨跌规律,并提出了股票价格变化的现代理论,随后出版了《概率计算和股票交易哲学》一书,在书中详细阐述了自己发现的市场涨跌规律(正态分布):“价格的偏差与时间的平方根成正比”,最后以理性量化的投资方法获取交易上的成功。

现如今,在互联网+大数据+云计算+人工智能的时代背景下,量化交易也得到了快速发展。曾经的全球金融腹地伦敦金丝雀码头,早已变成了IT公司集散地。世界顶尖投行,也都在培养自己的量化团队,试图跻身到“得策略者得天下”的金融大战之中,这些开发交易模型的IT团队也被称为Quant Team。

反观国内,无论是硬件设备还是投研实力,都还在发展初期阶段。但已经有越来越多的机构和专业投资者意识到量化交易的好处,并参与到这一领域,特别是在商品期货市场逐步规范、市场有序开放,量化交易更具有广阔的成长空间。

1.1.3 量化交易的特点

量化交易脱胎自主观交易,主观交易每次下单前需要人为判断行情,这在实际交易中很难保持一致,尤其是当行情波动剧烈,账户盈亏时时刻刻左右交易者的心智,使交易者很难做出正确判断。而主观交易的缺点正是量化交易的优点,具体如下:

  • 科学验证:当编写完交易策略后,如果用模拟盘测试它的有效性,可能会付出很大的时间成本,如果用实盘测试,更有可能损失真金白银。但量化交易中的回测功能,可以通过大量的历史数据,以科学的方式去检验交易系统。
  • 客观准确:在交易中,我们真正的敌人是自己,心态管理说起来容易,做起来难。贪婪、恐惧、侥幸等人性的弱点,在交易市场中会数倍放大,量化交易则可以屏蔽这些弱点,在交易中做出更理性的决策。
  • 及时高效:在主观交易中,人的反应速度是无法快过电脑的,并且人的体力和精力也无法24小时运行,在机会稍纵即逝的交易市场,量化交易完全可以代替主观交易,寻找更多的交易机会,及时快速地跟踪市场变化。
  • 风险控制:量化交易能从历史数据中挖掘价格未来可能重复的规律,这些规律可以转化为较大概率取胜的策略。还可以构建多种不同的投资组合,降低系统性风险,平滑资金曲线。

注意:主观交易并非一无是处,在量化交易中,计算机很难识别千变万化的K线形态,比如:双重顶底、头肩定底、V型反转等等,但主观交易就很容易分辨出来。另外相对来说,主观交易更加细腻,比如对于一些似是而非的交易信号会选择性回避。

1.2 为什么选择量化交易

很多人在探讨量化交易时会以复杂的策略编程为切入点,这无形中给量化交易披上了一层神秘的面纱。本节将以通俗易懂的语言,为量化交易做一个简单“素描”,即便是毫无基础的小白也能轻松理解。

1.2.1 量化交易与主观交易的区别

主观交易更重视人为的分析和盘感,即使出现了买卖信号,也会选择性地下单交易,宁可错过行情,也不愿做错。人的感觉是复杂多变的且不可靠的,大多数交易者一旦发生连续亏损,往往就转而用另一种方法。交易的随机性较强,容易被浮动盈亏困扰,导致难以稳定盈利。

量化交易通过对交易的理解,制定一致性的买卖策略。在交易中,对所有的走势都一视同仁,开仓平仓全部系统化处理,宁可做错,也不愿错过。它还具有完整的评价体系,通过历史数据回测,确定策略更适合哪一类的行情和品种,并搭配多种策略和品种实现盈利。

简而言之,主观交易是量化交易的基础,量化交易是主观交易的提炼。主观交易更像是练武,最后能成功与否,天赋占大多数,有十年不悟的,也有一朝悟道的。量化交易更像是健身,只要刻苦努力,就算没有天赋,也能练出一身肌肉。

1.2.2 量化交易比主观交易更好?

一个成功的主观交易者,从某种角度上说,也是一个量化交易者。因为一个成功的主观交易者,必然有一套自己行之有效的规则和方法,也就是交易系统。成功的主观交易必须建立在交易规则和交易纪律之上,而交易规则其实就是主观交易中的量化部分。

相反,成功的量化交易者,也都脱胎自主观交易,因为量化交易策略的开发,其实就是主观交易方法的具体实现。如果一个对市场的理解和认知,从一开始就是错误的,那么开发出来的交易策略,长期以来也是难以获利的。

所以从长期稳定盈利的角度讲,决定一个交易者最终能否成功,关键因素是交易理念,而不在于是主观交易还是量化交易。量化交易表面上看似高大上,其盈利的本质与主观交易没有本质的区别,它们就像是一件事物的两面性既对立又统一。但是不可否认,从交易工具上来说,量化交易确实有很多优势。

  • 复盘更快: 想要检验一个交易策略,就需要计算大量的历史数据,量化交易几分钟之内就能计算出结果。这个速度要比主观交易快许多倍。
  • 更加科学: 评价一个策略是否优秀,依靠的是数据(比如:夏普比率、最大回撤率、年化收益),优秀的策略和交易理念往往具有可证伪性。
  • 更多机会: 国内商品期货有几十个交易品种,主观交易不可能同时盯盘,但是量化交易可以全市场实时盯盘,不错过任何交易机会,增加交易效率。

1.2.3 量化交易一定能赚钱吗?

当然能,但长期坚持下来却是一件很难的事。赚钱与否并不取决于量化交易本身,它只是一个工具,量化交易只是把交易思想用程序化、规则化、数量化实现出来,程序代替的只是执行力。难的是长期稳定地赚钱,因为市场是动态博弈,交易思路也要跟着市场转变。

1.2.4 量化交易的风险

量化交易也有风险,为什么呢?因为量化交易是在历史数据中去挖掘规律,形成交易策略。但是金融市场是一个生态体系,其规律和人性是一个相互作用的动态过程,归根到底还是人的市场。市场的规律会被人性所影响,而人性中间的贪婪、恐惧都会随着市场的变化而变化。所以市场上很少有一成不变的规律,再厉害的交易策略也很难应对这种突如其来的规律变化。

通过上面的解释可以看到,量化交易不是一种独特的交易方法,它只是一种交易工具,帮助我们分析交易逻辑,完善交易策略。无论是价值派、技术派,无论做的是股票、债券、商品还是期权,其实都可以量化。相比于靠个人经验做决策的交易者,量化交易者手中的武器就是市场证据和理性。

注意:量化交易的风险大部分来源于市场的风险,所以先学会交易,再学会量化。

1.3 量化交易需要准备哪些

一个完整的量化交易生命周期,不仅仅只是交易策略本身。它至少由六个环节构成,包括:策略构思、建立模型、回测调优、仿真交易、实盘交易、策略监控等。

1.3.1 策略构思

首先,做量化交易必须先回到交易市场,要在市场中多观察价格,理解市场波动的规律,并尝试推断每一个交易逻辑,最后总结出交易策略。这里并没有捷径,阅读经典的投资书籍或许有帮助,或者不断地坚持做交易,在失败中总结经验。

对于初学者来说,开发交易策略最好的方式就是模仿。直接利用现成的技术分析指标构建策略逻辑,写入买卖规则,这样就可以得到一个简单的交易策略。例如单均线的策略逻辑是:如果价格高于最近10天的平均价格就买入,如果价格低于最近10天的平均价格就卖出。当然,随着市场经验的积累,形成自己的交易方式后,策略逻辑的选择会越来越多样化,再进阶到更加系统的量化交易。如果能做一个有量化思维的交易者,无论是在股票还是期货市场上,这都是一件值得庆幸的事。

1.3.2 建立模型

其次,你需要掌握一个量化交易工具,用来编写交易策略,实现你的交易想法。市面上的常用软件都可以。但是如果你想成为一名高端的量化交易者,就需要学会一门计算机语言,这里推荐使用Python编程语言,因为它是科学计算的权威语言,并且提供各种开源的分析包,文件处理,网络,数据库等。

1.3.3 回测调优

当编写完策略后,下一步就是对策略进行回测,以及参数的筛选和优化。可以利用不同的参数对策略进行回测,观察该策略的夏普比率、最大回撤、年化收益等。通过对策略的不断调试和修改,最终得到一个完善的量化交易策略。

比如,可以把2010年~2015年的历史数据作为样本内数据,2016~2020年的历史数据作为样本外数据。先用样本内数据优化出几组表现好的参数,再用这些参数对样本外数据进行回测。一般情况下,样本外的回测结果没有样本内的回测结果好,但是如果样本外与样本内的结果大相径庭,那么这个策略可能是无效的,就要观察分析,判断策略失效的原因。如果发现策略失效由于是样本外数据,某几次极端行情导致的大幅亏损,那么就可以增加一个固定止损条件来规避这种风险;如果发现策略失效是由于交易次数过多,那么就可以将交易逻辑收紧,降低交易频率。如果一开始交易逻辑本身就是错误的,再怎么修改也很难得到一个赚钱的策略,这个时候就需要重新审视自己的策略思路了。另外,在参数优化中,可用的参数组越多越好,说明策略的适用性广泛。

注意:核心的策略参数越少越好,如果参数过多很容易造成数据拟合。在回测时,交易次数太少的策略其回测结果可能是幸存者偏差。如果回测的结果是一个超级赚钱的资金曲线,很多情况下是策略逻辑写错了。

1.3.4 仿真交易

当交易逻辑正确,样本内外回测都赚钱时,先不要急着在真实账户上交易。尤其对于初学者来说,一定要先用仿真账户运行至少3个月,如果是中低频隔夜策略,则需要更长的仿真交易时间。在未来一段完全未知的仿真行情中,观察策略在仿真交易中表现,仔细核对回测信号与仿真交易信号是否吻合,下单时的价格与成交时的价格是否有偏差,如果表现与预期相符合,那么说明策略有效。

1.3.5 实盘交易

通过一段时间仿真交易检验之后,就可以将策略放入实战中进行交易了。不过在量化交易的过程中也要保持警惕,防范极端行情。在实盘交易中,策略的期望一般都要打折扣的,很难达到回测时的状态。

1.4 一个完整的策略有哪些要素

一个完整的策略,其实就是交易者给自己定的各种规则,它包括了交易的各个方面,并且不给交易者留下一点点主观想象的余地,每个买卖决定,策略都会给出答案。它至少包含策略选择、品种选择、资金管理、下单交易、极端行情应对、交易心态等等。

1.4.1 策略选择

从专业的角度讲,主流的交易策略可以分为趋势交易、配对交易、一揽子交易、事件驱动、高频交易、期权策略等等,当然,策略的分类方式不是固定的。对于刚入门的量化交易初学者来说,不必管这么多名词概念,一步一步从最简单的开始。趋势交易是一个不错的选择,其特点是策略逻辑简单,用有限的亏损换取无限的利润,长期来看是正期望策略。

1.4.2 买卖什么

做过交易的人应该知道,每个品种都有各自的性格。有些品种性格很“火爆”,流动性好、波动率高;有些品种性格很“温顺”,常年都在一定区间内震荡,波动率低。相比之下通常工业品比农产品波动率高。在选择交易品种时,需要考虑品种的波动率情况,波动率高的品种,往往很容易走出一波不错的趋势行情。如果是趋势跟踪策略,尽量选择工业品,从品种属性上来讲,工业品往往比农产品波动率要大。不同的策略适应不同的品种,选择合适交易品种,对期货交易这项大工程来说尤为关键。总的来说,没有绝对好的品种也没有绝对不好的品种。根据投资风格的不同,以及风险承受力的不同,需要针对自己的标准进行相应的调整。

1.4.3 买卖多少

交易是赔钱容易赚钱难的行当,当账户资金亏损50%后,挽回损失则需要100%的盈利。就算赚很多次100%,但只需要赔一次100%就全部亏光。所以成熟的交易策略应该包含资金管理。事实上,很多以传统技术指标构建的交易策略,最大回撤率会很大,甚至超过50%。但一个风险很大的策略完全不能用吗?显然不是,最大回撤率完全可以通过资金管理控制,也就是买卖多少。如果把仓位降低一半,那么风险也会降低一半,如果把仓位再降低一半,那么风险就会降低更多,这就是一个简单的资金管理方法。但是一味的降低仓位也不是较好的办法,因为降低仓位也就意味着降低了利润,如何取舍就要看交易者对风险的承受能力。

1.4.4 何时买卖

一个好的买点,是成功的一半,它能够迅速摆脱成本区。但是价格不是上涨就是下跌,从大数定律的角度讲,好的买点很难超过50%,一味的追求胜率反而是舍本求末。笔者认为开仓不是决定最终盈利的核心,对于趋势策略来说,交易的核心是开仓之后,如何尽可能优化处理持仓,达到赢冲输缩的目的。不管是短线策略,还是长线策略,比的不是看谁持仓时间长,而是风险收益比。换言之,影响策略绩效的最终结果是如何出场,出场方法又可以分为两种:止损出场和止盈出场,这两个部分也是关乎交易策略成败的分水岭。

1.4.5 如何买卖

如果说何时买卖是艺术,那么如何买卖就是技巧。在价格瞬息万变的环境中,酌情使用订单类型和下单方式,可以增加订单成交率,也可以降低滑点,减少交易成本。交易技巧通常需要考虑下列几种情况:

  1. 委托下单类型和方式: 委托下单的类型和方式有许多种,比如可以用:排队限价单、对手价、最新价、超价、涨停价、跌停价、买一价、买二价、卖一价、卖二价,或者先用排队价,再用超价,分批报单,或者把大单拆成一个个小单,或者干脆直接把单子全部报出去。

  2. 撤单 如果下单没有成交,就要考虑是继续等待还是撤单,继续等待意味着可能错失行情。如果撤单就要考虑是否继续追单。

  3. 追单 如果撤单后继续追单是按最新价去追,还是对手价,还是涨跌停价,如果追单仍未成交是否继续追单。当价格与最初的信号相差甚远时,是不限成本追单,还是放弃这个信号。

  4. 涨跌停价 有时候当下单信号出现,刚好是涨跌停价格。那么是否在涨跌停价挂单排队成交,如果没有成交怎么办,尤其是在持仓与行情反向的时候,如何对冲补救。

  5. 集合竞价 开盘集合竞价时,哪个报价最多就采用哪个价格开盘,盘面是不显示价格的,只能根据自己的预判进行申报,这里面充满不确定性,要不要参与,以及怎么参与。

  6. 夜盘 有些商品期货品种夜盘是从21:00至次日02:30,人的精力是有限的,这段时间做不做,人工做还是让电脑来做。

  7. 重大节日 重大节日的超长假期之前,仓位需不需要保留。如果保留的话如何控制风险。如果节后价格反向跳空后如何处理。

  8. 极端行情和突发事件 价格瞬间涨跌停、连续涨跌停、乌龙指事件、黑天鹅行情等价格踩踏事件发生时,或者突然断电、断网、电脑故障、软件宕机、银期转账暂停、自然灾害等,出现时如何应对。

1.4.6 交易心态

市场会无形中放大交易者的情绪,影响交易的负面情绪有很多种,其中贪婪、恐惧和侥幸是交易中常见的三种负面情绪。因此交易者需要一个强大的交易心理体系,在不同阶段对上述三种情绪加以控制甚至利用。

注意:交易不仅考察技术基本功,还考察交易者心态,可以说人性的弱点在交易过程中都会被展现无遗和放大。只有不断学习和总结经验教训,不断历练,才能克服人性的思维共性和心理弱点。

没有完美的策略,也没有更好的策略,只有更适合自己性格的策略。结合自身的性格和资金情况一起去衡量该策略是否适合自己,如果适合自己的话,要充分评估自己坚持下去的可能性有多大,最坏的结果要事先规划好,如果最惨的一面你都想好了,那么执行下去的可能性就相对较大。

1.5 认识商品期货

1.5.1 商品期货市场介绍

中国商品期货市场是一个多层次、多元化的市场体系,涵盖多个交易所和广泛的交易品种,涉及金属、能源、化工、农产品等多个领域。以下是对中国商品期货市场的简要介绍:

交易所

  1. 郑州商品交易所(郑商所):主要交易农产品和部分化工产品。
  2. 大连商品交易所(大商所):以农产品、化工原料和塑料制品为主。
  3. 上海期货交易所(上期所):交易金属、能源化工产品以及贵金属等。
  4. 中国金融期货交易所(中金所):提供股指期货和国债期货等金融期货产品。
  5. 上海国际能源交易中心(能源中心):专注于原油,国际铜等国际化产品的交易。
  6. 广州期货交易所(广期所):国内首家混合所有制交易所,目前上市品种有碳酸锂和工业硅。

品种种类

中国商品期货市场提供了丰富的交易品种,包括但不限于:

  • 农产品:玉米、小麦、豆类、棕榈油等。
  • 金属:铜、铝、锌、镍、锡、铅等有色金属,以及黄金和白银等贵金属。
  • 能源:原油、低硫燃料油、燃料油、沥青等。
  • 化工产品:塑料、PTA、PVC、PP等。
  • 建材:螺纹钢、线材、热轧卷板、玻璃等。

交易机制

  • 交易时间:各品种交易时间略有不同,通常包括日盘和夜盘交易时段。
  • 交易方式:期货合约的买卖可以通过电子交易平台进行。
  • 保证金制度:投资者需按规定比例缴纳保证金,以确保合约履行。
  • 涨跌停板:各品种设有涨跌停板限制,以控制风险。
  • 交易制度:期货交易实行T+0制度,风险较高,需谨慎参与。
  • 交割方式:期货合约可以采取实物交割或现金交割的方式。

1.5.2 商品期货代码设置

我们来了解一下期货合约的设置规范。由于商品期货合约连续的特殊性,为满足回测的使用需求,针对每一个品种提供主力连续合约和指数合约,其主要是根据当前时间段内有效的商品期货合约数据人工合成。其中:

  • 主力连续合约:由该期货品种不同时期的主力合约(价格和成交量)直接拼接而成,代码以888结尾,例如rb888。合约首次上市时, 以当日收盘同品种持仓量最大者作为从第二个交易日开始的主力合约。如果同品种其他合约持仓量在收盘后超过当前主力合约1.1倍时, 则在第二个交易日进行主力合约切换。
  • 指数合约:由该期货品种所有正在交易的合约,以持仓量加权平均计算。代码以000结尾。

在回测中,我们就可以使用主力连续合约或者指数合约设置不同的期货品种。这主要是在回测系统中使用更加方便。但是在实盘使用的时候,当我们使用主力或者指数合约下单,交易所是无法识别的,这里我们使用调试工具对接真实的市场进行仿真交易,当我们使用指数合约下单,会返回Not select symbol的错误。

在实盘中,我们需要设置具体的合约名称。针对于不同交易所的具体合约,期货合约代码规则可以总结为这张图中展示的这样。

交易所 具体合约规则 主力连续合约 指数合约 具体合约
中国金融期货交易所 品种代码(大写) + 交割年份(2位) + 交割月份(2位) IF888 IF000 IF2201
上海期货交易所 品种代码(小写) + 交割年份(2位) + 交割月份(2位) ag888 ag000 ag2201
上海国际能源交易中心 品种代码(小写) + 交割年份(2位) + 交割月份(2位) bc888 bc000 bc2201
郑州商品交易所 品种代码(大写) + 交割年份(1位) + 交割月份(2位) AP888 AP000 AP201
大连商品交易所 品种代码(小写) + 交割年份(2位) + 交割月份(2位) a888 a000 a2201
广州期货交易所 品种代码(小写) + 交割年份(2位) + 交割月份(2位) lc888 lc000 lc2405

中国金融期货交易所:合约代码由品种代码(大写)+ 交割年份(2位)+ 交割月份(2位)组成。例如具体合约为IF2201。

上海期货交易所,上海能源期货交易所,大连商品期货交易所和广期所,广期所是最新成立的,这四个交易所它们的合约命名的规则都是一样的:合约代码由品种代码(小写)+ 交割年份(2位)+ 交割月份(2位)组成。例如具体合约为ag2201。

比较特殊的是郑州商品交易所:合约代码由品种代码(大写)+ 交割年份(1位)+ 交割月份(2位)组成。例如具体合约为AP201。

根据不同的交易所和品种,合约代码会有一定的差异,但通常都遵循这种命名规则。关于其他类型的合约,比如套利合约,期权和股票合约,大家可以看一下这篇文档(优宽量化商品期货合约代码明细)。

1.5.3 K线概念

在期货市场中,每一个品种的价格都随着时间的推移而发生变化。金融量化就是利用计算机来分析这些期货品种价格变化背后的规律,方便来预测未来的价格走势并做出最合适的投资决策。在这个过程中,数据起着至关重要的作用。对于金融量化来说,我们需要收集大量品种价格的历史数据,并把它们转换成数字形式,然后方便用计算机进行分析。通过对大量的历史数据进行分析,我们可以找到隐藏在价格波动中的规律和趋势,并根据这些规律和趋势制定投资策略。

在量化的世界里,数据就是K线。我们首先来介绍一下K线,K线经常以蜡烛图的形式呈现,是一种广泛应用于股票、期货、外汇等金融市场的技术分析工具。它通过绘制价格走势、开盘价、收盘价、最高价和最低价等信息,它是按照时间顺序形成一根根“蜡烛形状”的图表,来描绘出市场的交易情况与趋势。

在趋势交易策略中,K线图可以用来确认和预测市场的趋势变化。通常使用较长时间周期的K线图,如日线、周线或月线等,判断市场是否呈现出明显的上升或下降趋势,并相应地制定投资决策。而在高频交易策略中,K线图常常被用于构建高频交易模型,预测实时的市场波动趋势并进行交易。同时,高频K线图也可以用于快速识别买卖机会,尤其在股票及期货领域中。高频交易的K线周期更短,一些投资者会通过以秒为单位或者分钟为单位的K线图发现价格的快速反弹或下跌机会。无论是趋势交易策略还是高频交易策略,K线都是一个重要的分析工具。投资者应该根据自己的投资风格、交易周期和市场情况选用相应的K线周期进行分析,并结合其他技术指标综合分析,这样可以获取更全面、准确的市场信息和交易信号。

我们看到的K线经常是蜡烛图的形式。从数字的角度,我们来了解一下K线数据是什么样子的。我们在优宽量化平台打开运行一个策略,设置周期时间为一分钟,使用以下代码,读取K线数据。

def main():
    exchange.SetContractType('rb888')
    records = exchange.GetRecords()
    Log('最新K线数据', records)

这里我们使用Python代码订阅期货品种,获取K线数据;可以看到这里看到返回的是一个数组的形式,这中间包含的都有时间戳(这是从1970年1月1日以来的毫秒数)、开盘价(open)、最高价(high)、最低价(low)、收盘价(close)、成交量(volume)和持仓量(OpenInterest)。这就是一根K线柱的样子。

第二章: 认识优宽量化

开发策略需要量化平台的支持,才能支撑起整个量化工程。量化平台一般包括策略编写、策略回测、策略分析、模拟交易、实盘交易等功能。在本章中,我们将深入了解优宽量化平台。

2.1 平台简介

优宽量化交易平台(原发明者FMZ)是国内最专业的量化社区之一,创建于2014年。在该平台可以学习、编写、分享、买卖量化策略,在线回测和使用模拟盘模拟交易,运行、公开、围观实盘机器人。支持商品期货 CTP、易盛接口。该平台适用于量化交易初学者,即使无基础也可以快速入门,平台功能强大灵活,也可以满足进阶需要。支持使用 JavaScript、Python、C++ 等主流编程语言,也支持可视化语言和 My 语言(兼容文华财经)实现策略。

2.1.1 平台架构

优宽量化交易平台系统,并不是单一的传统软件,而是一个集实盘、回测、分析工具、分布式部署、分享展示、社区交流等多元一体的量化交易平台软件系统。该平台的架构特殊,具有很多优势。

特有的量化交易实盘机器人,专门负责执行交易策略,实盘通常部署在用户自己的服务器或电脑的托管者程序上。另外托管者程序负责和优宽量化交易平台网站通信,进行传递日志、直接访问交易所获取行情和交易等任务。如果优宽量化交易平台网站出现短暂问题,也不会影响策略实盘的执行。用户可以将托管者部署到任何地方来提高交易速度,通过网站或者手机随时随地的管理实盘、查看日志、修改参数。

注意:优宽量化聚焦于实盘交易,通过将计算密集和高延迟的任务从交易关键路径分离,以保证平台内部最低的延迟、最好的性能和最高的吞吐。

2.1.2 平台功能

  • 控制中心:用户的操作界面,包含了经常使用的各个功能的快捷入门,方便浏览账户的状态和迅速的进行需要的操作。
  • 策略:策略广场,用户公开和出售的策略在这里,大家在这里学习不同类型和不同语言的各类成熟的策略,可以进行搜索,或者点击相应的标签筛选某一类的策略。
  • 围观:是优宽量化用户公开运行的实盘,大家可以对不同类型的实盘策略进行围观评论。
  • 文库:这是优宽量化官方和量化大佬出品的一些精品文章,涵盖了量化理论知识的深入介绍、最新热门策略的细致解析,以及关于量化策略编写的宝贵经验分享。通过阅读这些文章,新入门的同学可以迅速提升自己的量化知识水平,资深玩家也能从中获得新的启示和感悟。
  • 社区:用户发帖提问交流平台,大家在使用优宽量化平台如果遇到哪些问题,都可以在这里提出,我们的量化大佬都会热心回复。
  • API文档:这里也做了全新的改版。(1)第一部分是开发文档,具体包括用户指南,这是优宽量化平台功能和运行机制的介绍,可以帮助大家更加了解优宽量化的使用方法;语法手册包含编写策略所需要的API介绍,具体包括内置变量,结构体,和内置函数的介绍,这里提供了详细的API文档和常见问题解答。大家可以在这里搜索有关API的任何问题,并找到相关的解决方案和示例代码。Pine语言和My语言文档包含了这两种语言的具体的语法手册和使用指南。(2)第二部分是公开课的视频资源:这是优宽量化官方精心策划的一系列专业量化入门课程,旨在帮助不同背景和水平的学员从零开始掌握量化策略编写。这些课程提供多种语言选项,并分为基础级和实践级,确保学员在学习过程中得到全面而深入的指导。通过这些课程,学员将逐步掌握量化策略的核心知识,为未来的量化交易之路打下坚实的基础。重点是这些课程全部是免费的,大家可以自由的探索学习。(3)第三部分是文档中心,这种汇总整理了各种的教学帖子,大家可以熟悉一下,帮助大家解决在使用优宽量化平台时遇到的问题。

2.1.3 实盘

实盘是交易策略的执行者,一个实盘只能执行一个策略,但一个策略可以给多个 实盘执行。在优宽量化平台实盘页面,用来管理托管者上的实盘、显示实盘的运行状态。

2.1.4 策略库

顾名思义策略库是存放策略的仓库,同时策略库也是编程和回测策略的入口,不仅可以在策略库中新建策略,还可以分别对不同的策略进行分组。对于一些优质策略可以以出租或出售的方式授权分享给别人。 注意:可以在授权管理中,分别管理策略和实盘授权。

2.1.5 托管者程序

托管者是交易机器人的载体,是管理机器人的程序,主要负责处理底层数据、访问接口、通信等任务。托管者程序有适用于主流操作系统的各个版本,托管者如何和优宽量化交易平台通信?在部署运行托管者程序时,需要输入一个地址,该地址即为优宽量化交易平台通信的地址,这个地址中有一个用户唯一标识ID,地址输入完以后,还需要另外一个配置,配置上优宽量化交易平台账号的密码。使用这两样信息来让托管者程序和优宽量化交易平台上的账户对应起来。

2.1.6 策略编写界面

点击策略库就可以进入策略编辑界面,该界面主要包含两大功能:策略编写和策略回测。

1、 点此进入回测,关于回测的具体说明将在后续教程中讲解。 2、 策略使用的语言选择,策略创建后不可切换语言。 3、 笔记是编写策略的记录,仅自己可见;描述是策略说明,策略公开后其他人可以在策略页面看到;手册是策略的使用说明,购买或复制策略的可以看到。 4、 策略类型,分为通用策略和模板,关于模板以后教程会有详细说明。 5、 策略分组。 6、 远程编辑,包含常用的代码编辑器插件,可在本地编写策略,自动同步到优宽量化交易平台。 7、 保存,可在编辑状态使用 Ctrl+S 的快捷键。 8、 选择要引用的模板类库,要先在策略广场把模板复制下来。

2.1.7 其余板块功能

交易终端

这是优宽量化最新改版的手动交易和半自动交易的量化交易工具,依靠账号品种的分租绑定,功能模块的自由布局,和插件的自主编写三大特性可以方便的我们进行交易的操作。后续将重点展开讲解。

数据探索

优宽量化新版推出的量化金融数据分析系统,优宽量化官方这里为我们储存了海量的期货数据(包含宏观面,基础面以及宏观面),我们可以通过SQL查询数据,然后使用可视化界面配置出多种类型的图表,让分析数据变得简单又有趣。后续将重点展开讲解。

分析工具

Alpha因子分析工具可以方便的调取期货合约数据,进行相关数学统计分析。具体分析公式参考了worldquant公开的行情计算的方法, 基本兼容了其语法(未实现的有说明),并进行了增强。用于快速对时间序列进行运算、验证想法。

调试工具

调试工具页面提供了一个快速实盘测试代码的免费测试环境,目前仅支持JavaScript语言。调试工具测试代码时,代码直接在指定的托管者上运行,最长运行时间为3分钟。可以调用优宽量化交易平台的所有API函数,仅支持一个交易所对象。

账单

这里可以进行账号的充值和管理,帮助大家了解账户的消费记录和可用余额。

工单

大家在优宽量化平台有问题除了发论坛,也可以直接发工单,我们的量化大佬随时在线,帮助大家获得及时回复,进行问题解决。

消息中心

各种消息汇总,包括账户安全信息,论坛回帖、工单信息等消息。

账号设置

这里可以对自己的账号进行更多安全性的设置,另外当我们想要接收实盘的推送消息的时候,点击推送设置,这里可以绑定优宽量化移动APP,邮箱和webhook;同时也具有API 接口设置,基本上实盘的所有操作都可以通过 API 完成,提供了丰富的扩展性,我们后续将展开讲解。

授权管理

可以查看策略的授权状况。

推广返佣

当我们推广优宽量化平台,可以获得注册用户充值的返佣。

2.2 配置交易所和部署托管者

本节内容中,我们首先学习如何添加配置交易所和部署托管者程序。在优宽量化交易平台上做量化交易,运行量化交易实盘,需要三个必要条件,与之对应的操作就是:

  1. 部署托管者程序(托管者程序是实盘的载体,托管者程序负责和期货公司前置机交互,处理底层数据、负责和优宽量化网站通信等)。
  2. 在优宽量化交易平台上配置交易所(商品期货账号、密码、期货公司前置机信息)。
  3. 所需要运行的交易策略(包括交易策略代码,参数配置信息等)。

2.2.1 配置交易所

在控制中心页面,点击交易所就可以跳转到交易所页面。然后点击“添加交易所”按钮,即可添加期货账户信息。例如:选择CTP协议,选择宏源期货主席(看穿式监管),选择对应的网络节点后,系统会自动匹配行情服务器和交易服务器,以及Broker ID,剩下的只需要填入账号密码即可。

  1. 在选择了期货公司之后,行情服务器、交易服务器、Broker ID会自动填充,也可以根据自己的网络,选择期货公司其它的线路节点。通常不用设置,直接使用默认。
  2. 配置期货公司资金账号(CTP登录验证)。
  3. 配置期货公司资金账号的密码(CTP登录验证)。
  4. 设置标签,可以使用默认显示的,如果需要区分不同的账户,可以自行修改。

注意:如果需要配置自定义授权码,勾选配置即可,优宽量化交易平台已经对以下期货公司自动配置,就不用勾选了,只用配置对所在期货公司的资金账号和密码即可。或者可以直接在配置时搜索“看穿式”查询,选择对应的交易所。添加好期货公司配置信息后,在交易所页面会出现已经添加好的信息。

2.2.2 一键租用托管者

部署托管者有两种方式:即通过优宽量化交易平台一键部署到优宽量化平台为我们租用的服务器上。也可以手动部署在自己的设备、服务器、电脑上。在控制中心,点击“托管者”,跳转到托管者管理页面。点击按钮“部署托管者”,跳转到部署托管者页面。

相对于手动部署,一键部署托管者操作比较方便快捷。点击选择购买后,云服务器会自动的为我们进行托管者程序的安装和部署,并且对于python语言,也会安装一些量化交易常用的包和工具。稍微等待片刻,可以看到当托管者展示部署完成的时候,我们就可以直接使用。当我们不想使用的话,可以直接删除,扣费也会自动停止。

2.2.3 本地部署托管者

下面我们来看手动部署托管者。点击进入,可以看到托管者程序支持多种操作系统,可以部署到各种设备上。手动部署托管者可以在我们自己购买的云服务器或者本地的电脑。本地电脑部署托管者可以根据策略运行的需要,随用随停,不需要额外的花费。

首先展示一下Windows本地部署,Windows同时具有命令版和界面版部署。不熟悉命令行的朋友可以选择界面版,根据自身电脑系统点击下载程序,然后解压安装,打开输入地址node.youquant.com/数字串,数字串每位用户均不同,需要根据你的界面显示进行填写。这里很贴心的可以直接点击复制,然后输入本平台的密码,当界面出现“Login OK”的时候,windows界面版托管者就部署完成了。点击进入托管者界面,可以看到我们刚刚部署好的托管者。

对于命令行版,我们也要下载对应的安装包,然后进行解压,接着打开终端,打开安装包的地址,输入这段命令robot.exe -s node.youquant.com/数字串 -p 本平台登录密码。当命令行出现“Login OK”,代表部署成功。

然后,我们看下Mac系统本地布置,这里根据苹果系统下载对应的安装包,进行解压。解压完成打开终端,首先进入安装包所在的文件,这里我们进入桌面,然后输入第一行代码chmod +x robot,接着第二行./robot -s node.youquant.com/数字串 -p 本平台登录密码,这里会显示无法验证开发者,我们这时候需要进入系统偏好设置,安全性和隐私,点击解锁,然后点击仍然运行,再次输入这段代码,当出现“Login OK”部署成功。

2.2.4 云服务器部署托管者

当我们需要长时间运行一个策略的时候,相对来说云服务器是更加适合的。云服务器更新稳定,不容易受外部条件,比如硬件故障,断网或者停电的影响。关于云服务器的选择,一个初级入门,价格低廉的服务器就可以满足基本的策略运行需要。

下面我们使用云服务器进行一下Linux系统的部署。这里有一个托管者部署的帮助文档大家可以参考一下(https://www.youquant.com/bbs-topic/8290),我给大家展示一下。首先登陆云服务器,具体登录云服务器的方法,大家可以根据自己的习惯,这里我们选择在腾讯云直接登录:

  • 第一步,在服务器输入wget下载托管者程序。
wget https://www.youquant.com/dist/robot_linux_amd64.tar.gz
  • 第二步,输入这行代码进行robot解压。
tar -xzvf robot_linux_amd64.tar.gz
  • 第三步,测试托管者运行,输入这两行代码,然后添加优宽登录密码。
chmod +x robot
./robot -s node.youquant.com/数字串
  • 第四步,当出现Login OK就代表云端托管者设置成功。

当然Linux的托管者也是可以部署在本地的,大家也可以尝试一下。

2.2.5 Docker部署托管者

我们来看下使用docker部署托管者,这里我们示范使用云服务器进行部署,首先在云服务器下载安装docker。

  • 在确保docker安装完成后,按照教程首先下载镜像,运行这段代码。
docker pull fmzcom/docker:latest
  • 运行镜像,输入这段代码。
docker run -d --name FMZDocker -e UID=数字串 -e ZONE=CN -e PASSWORD=密码  fmzcom/docker
  • 输入这段代码查看docker日志。
FMZDocker logs

当日志出现Login OK,docker版的托管者也部署成功。

注意: 一个设备或者服务器上可以运行多个托管者,一个托管者上可以运行多个实盘。即使配置最低的阿里云服务器上,同时运行 6~7 个实盘也是没有压力的。部署托管者、配置交易所后,不要轻易修改优宽量化交易平台的账号密码,修改密码会导致配置的交易所配置失效, 需要重新配置交易所信息、重启托管者才能正常使用(已经运行起来的没有影响) 。

2.3 创建管理策略和实盘

当配置好交易所、部署好托管者之后,就只剩下选择所需要让实盘执行的交易策略了。本节学习如何创建管理策略和实盘。实盘可以理解为以托管者程序为底层支持,在托管者上运行起来的策略实例,操作控制配置好的期货账户(通过交易所配置信息)。

2.3.1 创建策略

策略创建方式有 2 种:新建策略和在策略广场中复制别人分享的开源策略。我们先来看创建一个新策略,点击“新建策略”按钮。填入策略名称,点击保存之后,会显示在“策略库”页面。也可以在页面右边选择策略类型和设置策略分组。

也可以从策略广场复制策略,创建到自己的策略库中。点击“策略”按钮会跳转到策略广场页面,可以选择相应策略复制到自己的策略库当中。复制完成的策略,我们可以根据自己的交易理念进行相应的修改和完善。

注意:复制的策略在实盘运行前请务必检测此策略代码的安全性。

2.3.2 管理策略

管理策略时,可以预先设置一些分组,例如设置一个名为“趋势策略”的分组,设置过分组后,就可以点击策略名称,拖动,放入设置好的分组标签中。创建分组既是创建策略标签,在这个分组中就可以看到刚才从策略广场复制创建的策略了。可以点击策略名称,进入策略编辑页面。也可以点击右侧“操作”,对策略库中的策略,编辑,复制、删除、更多(包括分享,出租和运行)。

点击“出租”可以以两种方式进行出售,内部出租:通过设置使用时间,并发个数等信息之后,会生成一个注册码和注册地址,租用该策略的用户拿到这个注册码、注册地址后,打开这个注册地址,输入注册码,即可获得该策略的使用权限,但是无法看到策略代码。公开出售:申请在策略广场上架,需要审核,并且具备上架条件。

其中,点击“编辑”选项可以跳转至该策略编辑页面。点击“公开”可以将策略以两种方式分享,内部分享:设置时间、复制次数等信息之后,会生成一个复制码和复制地址,可以通过打开这个复制地址,输入复制码获取策略。公开分享:点击公开分享后,策略会显示在策略广场中,其他用户可以复制获取。

注意:对于出租、分享等操作创建的注册码、复制码等信息可以从“授权管理”页面进行管理。

2.3.3 创建实盘

如果当前已经配置好了交易所配置信息,已经部署了托管者,策略库中直接创建或者复制过来创建了策略。打开“实盘”选项,点击“新建实盘”按钮,即可跳转至创建实盘页面。我们需要进行相应的“实盘配置”的填写:实盘名称,K线周期,运行策略,托管主机。具体的“交易设置”中:选择交易平台以及相应协议,点击“创建实盘”,就可以跳转到实盘管理页面,在这个页面显示了实盘的运行概况。也可以点击实盘名称,进入实盘运行页面,了解实盘详细情况。一般情况下在编写策略时,需要 Log 一些必要信息或数据,方便在实盘运行时查看。

2.3.4 管理实盘

对运行中的实盘可以开启监控功能:在实盘页面,可以显示每个机器人运行的状态,以及每个实盘具体的盈利额度。有时候策略会因为某些原因出现错误,导致机器人停止,错失开平仓机会,可以在创建机器人后,点击“监控”按钮,一旦出现机器人停止,邮箱与绑定的微信将收到通知。当点击停止按钮,实盘会停止,操作按钮也会发生变化。当点击重启按钮,可以重启该实盘。

注意:以上是手动管理机器人的使用方法,除此之外优宽量化还开放了扩展 API,可以使用程序批量自动管理机器人。

2.4 回测系统

回测就像沙盘推演,它是量化交易中不可或缺的环节。回测的目的是:过滤策略代码BUG、检验策略逻辑是否有效等等,本节将介绍优宽量化的两种回测方式。

2.4.1 模拟级别回测系统

优宽量化交易平台提供的模拟级别回测系统是基于on Tick回测机制运行,即:行情接口数据随着回测中时间序列上移动而逐个放出。把策略程序放在一个行情数据随着回测时间流动而实时变化的沙盒环境中运行。区别于on bar机制,即:新K线BAR出现时,才让策略程序运行一次。回测参数配置上可以设置:

  1. 回测时间范围:确定了回测时间区间。
  2. 默认K线周期:程序默认的K线周期大小。
  3. 日志、收益、图表条数:设置回测系统打印信息数量。
  4. 底层K线周期:模拟级别回测时用于控制回测数据粒度大小的周期参数。
  5. 滑点:成交撮合时的模拟滑点。
  6. 容错:在容错模式回测时,模拟发生错误的概率设置。点击开始回测按钮右侧小三角可以进行容错回测。
  7. 延迟:模拟网络延迟,让数据返回延迟一定时间。
  8. 柱长:K线数据的Bar数量上限。
  9. 手续费相关:手续费费率设置。
  10. 深度、市场成交数据:设置深度档位、是否需要分笔数据。
  11. 设置市场类型:设置回测市场类型。
  12. 添加回测配置按钮。

注意:以上设置,使用鼠标放置在页面控件上,会显示详细说明。

2.4.2 底层K线周期

模拟级别回测是按照回测系统的底层K线数据,按照一定算法在给定的底层K线Bar的最高价、最低价、开盘价、收盘价的数值构成的框架内,模拟出ticker数据插值到这个Bar的时间序列中。实盘级别回测没有底层K线选项(因为ticker数据都是真实的,不用底层K线来模拟生成)。模拟级别回测中,基于K线数据模拟生成的ticker。这个K线数据就是底层K线。在实际使用模拟级别回测中,底层K线周期必须小于设置的默认K线周期。否则,由于底层K线周期较大,生成的ticker数量不足,调用API获取指定周期的K线时,数据会有失真的情况。在使用大周期K线回测时,可以适当调大底层K线周期,以增加回测速度。底层K线如何生成模拟tick数据的相关链接帖子:链接。可以理解为底层K线周期控制着tick的粒度,底层K线周期1分钟或者5分钟,生成的tick数据粒度(密度)肯定是不一样的。粒度越小价格变动跳跃越小,回测精细度越高。但是回测时间会相对较长。如果比较追求回测速度,可以适当调大底层K线周期,以损失一点回测精细度,来加快回测速度。对于中低频趋势策略来说影响不大。

2.4.3 实盘级别回测系统

实盘级别回测使用真实的ticker级别数据。对于基于ticker级别数据回测的策略来说,使用实盘级别回测更贴近真实环境。实盘级别回测,ticker数据是真实记录的数据,并非模拟生成。在回测时逐个ticker数据放出,回测粒度较为精细。回测耗时也相对较多。适合交易频率相对较高的策略、基于盘口数据计算的策略等。实盘级别回测,


更多内容

by2022 企业微信加不上啊啊啊啊啊啊

雨幕(youquant) 您好,企业微信满了,您加这个微信: https://www.youquant.com/upload/asset/1780ac4e8b9064c9d7d9a.png