真格量化入门课程——①量化策略思路入门
01
一、什么是量化交易策略
量化交易策略,是采用数量化手段构建而成并进行决策的交易策略。是将人的投资思想规则化、变量化、模型化,形成一整套完整、可量化的操作思路,并且这个思路可以用历史数据进行分析验证。程序化交易并非量化策略必备,但是程序化交易可以让策略执行中更少受人的要素影响。
在这样的界定下,量化交易策略既可以借助程序化的方式完成下单,也可以通过人工来执行。但交易频率较高的量化交易策略更倾向于采用程序化全自动下单的方式来完成。
有了上面的定义,我们可以举个简单例子来认识量化交易策略。如果有一个投资者的交易策略是“移动平均线看起来很好时买入,看起来不好时卖出”,这里就明显不是一个量化交易策略,因为这里的“看起来很好”和“看起来不好”不是一个明确规则化变量化的手段。
如果把上面的策略变成“5日价格均线从下向上穿过10日价格均线时买开1手铜,5日价格均线从上向下穿过10日均线时卖平1手铜”,这里的规则就大大接近明确而可量化的了。
02
二、当我们谈量化交易策略时,我们在谈什么
在第一部分里,我们知道了什么是量化交易,那么一个更完整精细的量化交易策略,不止上面的例子那么简单。
一个完整的策略构成,应该是包括交易信号、交易执行、资金管理三个方面。
依然以上面的例子来类比——
2.1 交易信号
交易信号是一个策略的核心思想,人们常说的策略idea其实主要就是指这个部分。它又可以包含下面2部分内容:
2.1.1 交易什么?
“均线上穿策略”案例中没有涉及到选交易品种的步骤,所以品种很简单,就是铜期货。
但这还不够。我们的例子是一个期货策略,期货是必须具体到合约的,而我们最常使用的是每个品种的主力合约。
于是我们清楚了,我们需要交易的是“铜期货主力合约”。
ps:更复杂的情况是,有时我们需要选品种,比如要开仓所有向上突破的品种,这也可以归入本部分讨论的内容。
2.1.2 什么时候交易?
这方面上面的案例写的还不错——“5日价格均线从下向上穿过10日价格均线时买开”、“5日价格均线从上向下穿过10日均线时卖平”,这都是非常明确的。
复杂一些的是加入止盈止损,当有持仓的情况下,盈利多少自动平仓,亏损多少自动平仓,乃至回落多少自动平仓。
更复杂的情况还有——“中证商品指数突破10日均线时才操作”、“美国非农指数公布前的一个交易日不操作”等等,也可以属于这个部分要包含的内容。
ps:股票策略常用的因子模型,会采用固定日期再平衡的模式,期货/期权市场比较少用,因此我们会单开文章讲述这种情况。
2.2 交易执行
交易执行往往被人们忽略,但我们作为“真格量化”这个策略实盘平台的设计者,可以负责任的说,这个部分才是专业quant和民间小散的最大区分所在,我们看到很多非常好的策略idea因为对这个部分的忽视,导致最终不赚钱的结果。这部分又包括:
2.2.1 用什么价格交易?
对于期货/期权类策略,尤其是偏日内的策略,什么价格买,什么价格卖,是个至关重要的问题。
比如挂单价、最新价容易不成交,对手价、对手价加1加2提高了成交概率同时也提高了交易成本,涨跌停价/市价下单则是不惜血本,极端情况会导致成本完全无法控制,所以专业的玩家会充分运用FOK、FAK等指令进行下单。
“均线上穿策略”案例中的策略描述完全没涉及到具体价格的选择,所以是不精准的。
2.2.2 交易成本是多少?
越是频繁的交易,越要关注自己的交易成本。包括佣金、保证金以及回测中的滑点设置,上文的例子还不是日内策略,我们这里可以不用考虑。
2.2.3 下单不成交怎么办?
随着我们越来越深入专业量化机构的研究领域,我们会发现对实盘和回测差别的处理方法导致了专业机构和业余量化爱好者投资表现的显著区别。通常的回测引擎都是见价成交,如果在策略代码中忽略这个部分,您很可能做出一条漂亮的回测曲线但在实盘交易中完全无法赚钱。
那么,实盘中一个委托单发出后,接着会发生什么呢?我们看看最常见的对话通讯模式:
真格量化的回测引擎并非见价成交的设计,而且我们API的最大特点就是基于事件驱动而设计。实际交易中会有非常多的事件场景,例如账户登录、开盘、委托、成交、查询、收盘等。交易所会发出各种通知和回报信息。
充分利用这些回报信息,可以写出最专业的投资策略。比如上文所述的委托不成交的问题,我们提供了丰富的api来应对,包括拆单、撤单、追单、智能单等等,我们强烈建议投资者重视这些功能,把交易过程精细化,追上机构的脚步。
在上文“均线上穿策略”的简单例子中,很遗憾,我们并没有看到下单不成交的应对方案,这在实盘中就会遇到很多问题。
2.3 资金管理
资金管理听起来高大上,但其实落地最重要的就是仓位。如果说交易信号、交易过程两部分决定了策略是赚钱还是亏钱,那么资金管理决定了最终是大赚大亏,还是小赚小亏。
2.3.1 下单数量
回到“均线上穿”的例子,我们终于看到了这部分的描述——“1手”,手数这个交易单位在期货/期权类比较常用,但固定手数的做法并不精细,更精细的模式是根据自己的账户的实际资金情况,动态变动交易的数量。
我们发现,在这里我们出现了“账户”的概念,构建策略尤其是实盘策略,账户中的可用资金、风险度、权益等各种信息是必须要关心的要素。策略实盘运行瞬息万变,我们需要最快速度得到这些信息并根据当下的情况作出最恰当的应对。在真格量化,我们云端实时计算这些信息,相比从柜台请求的速度快3000倍以上。
2.3.2 动态加减仓
期货市场采用的是逐日盯市的模式,即每天的盈亏都是清算完毕的,那么当策略运行良好,可以投入更多的资金,反之则需要减少投入的资金。
跟上面下单数量的区别是,动态调整交易手数往往是根据当时的可用资金的情况,而动态加减仓则是根据整个策略/账户的盈亏情况来设定。
OK,做好了这3个部分,我们也就建立了做量化策略的最基础的思路,再复杂的策略,都可以由这3部分组合、变化得来。
03
三、当我们有了策略,我们还需要什么
如第二部分,当我们已经有了自己的策略,交易信号、交易执行、资金管理三个部分都有了。
接下来需要做什么呢?当然是做回测。
正如我们第一部分提到的量化策略的定义,一个量化交易策略到底好不好,需要通过历史数据来验证。
去评估策略,我们需要关注这些因素:
3.1 样本大小
既然量化策略是可以用历史数据进行分析验证的,那么数据的样本集合有多大直接决定了这个回测是不是靠谱的,一般来说,样本小于200个,说服力是不够的。所以千万不要因为看到前几次交易赚到了钱就欢呼雀跃哦~
3.2 回测时间范围
一个好的策略,应该能经受住各种市场状况的考验,如果回测周期太短,没有经过单边、振荡等各种场景的检验,也是比较危险的。当然,如果是用tick数据回测,回测历史的要求就没必要很久。
3.3 回测和实盘的区别
一个实盘赚钱的策略往往回测也不错,但反之就未必成立了。回测中用的虚拟资金是无法像真实资金一样去影响市场的。一定要注意的是,下面这些问题都可能导致您的回测表现是“镜花水月”,空欢喜一场。比如:
A.用了未来数据。这是新手最常犯的错误。写一个“当天最低点买入最高点卖出”的期货策略,只需要几分钟就可以得到一条无比漂亮的曲线,但这是没有用的,实盘中绝对无法预知当天的价格最高、最低点。真格量化作为主打实盘交易的量化平台可不推荐你这样做。
B.实盘无法/很难成交。这个问题也经常发生。比如涨跌停的时候交易、用完全没有对手盘的巨量下单、挂买一卖一价交易等等。这样的代码逻辑用于实盘的时候就会差别巨大。当然,真格量化的逻辑已经做到非常精细,并不是简单的见价成交,帮投资者去掉了很多掉坑里的可能。
C.过度拟合。有的时候,专业的quant也会犯这个错误,甚至如何避免过度拟合是量化分析师们一直追求的目标。过度拟合往往表现在单纯追求最佳回测参数和完全抛弃金融逻辑方面。殊不知,参数的敏感性本来就是一个策略是否真正靠谱的重要衡量标准;而完全抛弃金融逻辑的后果,可能就是实盘交易的第一天,就是该策略失效,这个小概率、黑天鹅事件发生的日子。
好了,我们知道了在写一个量化策略之前,要做哪些思路上的整理,那么接下来的一篇,我们就看看如何在真格平台上做到这一切,敬请期待!
— — — — — — E N D — — — — — —
往期文章:
Numpy处理tick级别数据技巧
真正赚钱的期权策略曲线是这样的
多品种历史波动率计算
如何实现全市场自动盯盘
AI是怎样看懂研报的
真格量化策略debug秘籍
真格量化对接实盘交易
常见高频交易策略简介
撤单函数改进套利成交
真格量化可访问:
https://51zhenge.com
真格量化微信公众号,长按关注:
遇到了技术问题?欢迎加入真格量化Python技术交流QQ群 726895887
真格量化入门课程——①量化策略思路入门相关推荐
- python入门课程-最好的Python入门教程是?
Python教程领到手,学习不用愁!领! 作为一门编程语言,Python是属于入门比较简单的.所以身边不少人都选择了自学Python,而且网上相关资料也有很多,知识兔分享大量的Python教学课程,基 ...
- 零基础python入门课程-零基础 Python 入门
退款政策是如何规定的? 如果订阅,您可以获得 7 天免费试听,在此期间,您可以取消课程,无需支付任何罚金.在此之后,我们不会退款,但您可以随时取消订阅.请阅读我们完整的退款政策. 我可以只注册一门课程 ...
- python 量化分析 入门_量化入门-小白到菜鸟的学习路线
小白到菜鸟的入门学习路线,不要盲目以为多看策略就能学会,要注意学习方法. 本文的主要目的 很多新人面对多如牛毛的策略不知从何下手,在很多较难的帖子下面留言一些最基础的问题.小白不知道该先学什么,后学什 ...
- 量化投资python教程_零基础入门Python量化投资全套教程,30+经典教材打包送!暑期get新技能就靠它了!...
量化投资是指使用数理分析.编程.建模等方式,通过对样本数据进行集中比对处理,找到数据之间的关系,制定量化策略,并使用编写的软件程序来执行交易,从而获得投资回报的方式. 在如今的量化投资领域,已经有了无 ...
- 《量化投资与对冲基金入门》--量化投资--读书笔记(36)
作者:丁鹏 出版社:中国工信出版社 补充笔记 1.传统投资方法:基本面分析法和技术分析法 2.有效市场假说:在无效市场中,价格反映部分历史信息,采用技术分析法有效:在弱有效市场中,价格反映了全部历史信 ...
- 机器学习——Google 快速入门课程(综合版)
前言 本文参考 Google 谷歌官网机器学习的快速入门课程,整体课程比较好理解,供大家学习参考:文章也会结合自己的理解进行优化.看到官网的消息2021/7之后就不提供中文版的机器学习快速入门课程了, ...
- [量化学院]价值选股策略——基于机器学习算法
文献回顾 回顾价值策略 价值策略通俗地讲就是买入便宜股票,卖出昂贵股票,思想非常简单和直观.但是实际操作上这非常困难,因为我们没办法直接观察股票的真实价值.投资者可以从不同的视角采用不同的指标来估计股 ...
- CV入门赛最全思路上分技巧汇总!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:安晟,算法工程师,Datawhale成员 赛题数据及背景 http ...
- Apollo自动驾驶入门课程第⑨讲 — 控制(上)
目录 1. 简介 2. 控制流程 3. PID控制 4. PID优劣对比 本文转自微信公众号:Apollo开发者社区 原创: 阿波君 Apollo开发者社区 9月26日 上周我们发布了无人驾驶技术的 ...
- Apollo自动驾驶入门课程第⑤讲 — 感知(下)
目录 1. 卷积神经网络 2. 检测与分类 3. 跟踪 4. 分割 5. Apollo感知 6. 传感器数据比较 7. 感知融合策略 本文转自微信公众号:Apollo开发者社区 原创: 阿波君 Apo ...
最新文章
- MinkowskiEngine Miscellaneous Classes杂类
- 网站推广专员浅析网站建设实用技巧助力网站推广优化
- 浅谈配置文件:spring-servlet.xml(spring-mvc.xml) 与 applicationContext.xml
- php 获取文件最后几行,php获取文件的最后N行数据
- rocket mq 监听端口_浅谈业务流程中的mq使用方式
- 【转载】python两个列表获取交集,并集,差集
- Android学习小记-----监听并保存传感器数据,让service后台运行(保持CPU运转
- php的冒泡排序的意思,冒泡排序是什么意思
- .net MVC之表单的使用
- append()方法_超详细教程 | pandas合并之append和concat
- DOM获取元素、事件基础、操作元素、节点操作
- 西安电脑服务器维修电脑,西安苹果电脑维修
- Sphero SPRK+,和星战的 BB-8 一样,这个球也是机器人 | 新玩意 · Apple Store
- 设计模式(四) 策略模式
- 计算机是如何储存信息的,计算机是如何储存信息的
- springboot下,JedisPool getResource导致大量线程WAITING,服务假死
- opencc中文维基wiki百科简体繁体之间的转换解决
- sql中的判空操作keng
- 【Auto.JS】Autojs官方提取文档使用说明函数 (1)
- blender 2.8的基本使用和使用形态键(Shape key)做帧动画