量化交易就是一种让电脑按照设定好的数学规则自动买卖股票(或其他金融产品)的投资交易方式。
量化交易能实现什么功能呢?打个形象易懂的比方,就好像在你的同花顺软件里面住了一个人,此人全年无休地帮你盯盘看盘复盘下单,他执行的所有动作都是你吩咐布置的,例如"从全市场当中筛选PE在30倍以下且净利润增长率在20%以上的市值最小的100支股票,如果股票连续5天上涨,就买入,如果跌了8%,就立刻卖出"。
你让他执行的那个选股交易的动作,在量化交易当中就被称为"交易策略"或者是"量化策略"。如果你不知道这个量化策略能不能赚钱,你可以让他把这个策略放到过去10年的历史数据当中,完全按照设定的规则交易,就可以看到收益率、胜率、夏普率、最大回撤等统计指标,能不能赚钱心里就有数了,这在量化当中就叫做"回测"。
从上面的描述当中,可以看出量化交易主要有3大优势。
(1)验证/发掘投资交易想法。该作用最为重要,它解决的是投资交易当中根本性的问题:买什么卖多少什么时候买卖。
现在网上一搜,一大堆投资交易的书籍和课程,这个专家那个大师,龙头战法,潜伏战法,爆破战法,琳琅满目,包罗万象,公说公有理,婆说婆有理,不知到底该相信谁。
有了量化交易之后,把这些专家大师们的理论手法写成代码,转化成交易策略,放在历史数据当中跑一遍,可能就被扒得底裤都不剩了,一声叹息后,大骂竖子误我。
用量化方法找到/验证一种有效的投资交易方法,就跟现代医学里面找到治疗某种疾病的药物流程一样,讲究的都是"大样本随机双盲对照测试",这样发现制作出来的药,敢吃,总好过街边摊贩包治百病的"大力丸"。
(2)提高研究和交易的效率。现在A股也有5000多支股票了,人的时间精力是有限的,光靠人眼手工来大范围筛选股票进行研究,非眼瞎手残不可,比方说,要在全部A股当中找出符合"MACD顶底背离"形态的股票,光靠自己手动来做,想死的心都有了,如果量化编程实现,感觉自己还可以抢救一下,这就是提高研究效率。
提高交易效率指的是,用程序化的方法实盘交易和盯盘,解放自己大部分时间和精力。举个极端的例子,需要你手动买入100支股票,然后要实时盯盘,下跌幅度超过5%就要止损出场(考虑价格笼子),想想这对你意味着什么?而这是可以用量化轻松搞定的。
(3)保持纪律性。机器是没有情感的,你不敢买时它敢买,你舍不得卖时它敢卖。这应该对做趋势型策略的小伙伴感触会比较深,一般的趋势型策略都是以"低胜率,高赔率"著称,交易几次才能盈利一次,但那一次的利润可以覆盖前几次亏损,并且还有盈余,保证总体预期盈利,"别有心思"的小伙伴就想了,自己过滤一些进场时点会更好,但往往很容易就错过大涨的机会,之前的亏损更加无法弥补。机器没有人的七情六欲,是一个没有感情的执行机器,能帮咱保持高度的统一性和纪律性。
那入门量化交易要学习什么知识内容呢?咱再回到刚才那个"同花顺里面住了一个人,他每天帮你选股交易"的例子。
首先,他的每日任务是你布置的,所以你要知道量化交易里面可以做什么,不可以做什么,因此,你需要先学习一些量化常识。
接着,他是一个机器人,不会说也不会听中文,你需要用他能听懂的语言才能给他布置任务,因此你需要学一门"外语",对于机器人来说,这门外语就是一门编程语言,在量化交易领域,最广泛被使用的编程语言就是Python。

最后,同花顺软件不会真的让你住一个人进去,人家也怕有捣乱的。那咱就要找量化界的"同花顺",能让咱把自己人安排进去的,我这次给大伙儿找到的就是QMT软件,你还需要学习QMT软件的基本操作和功能。
虽然要学习的东西不少,但这里需要确定快速入门的学习原则:适度学习,够用即可。最新版《新华字典》中,收录了13000多个汉字,而日常生活中只需要用到其中的3000多个,也就是说,不用啃完大部头才可以开始,按常用按需学习就行。
1.补充量化常识
量化知识纷繁复杂,不需要全部学会之后再去实盘交易,只需要掌握一个主体框架,知道量化交易的大体流程和主要模块,以后在实践当中碰到不懂的再去查,边干边学记得牢。
这里给大伙儿推荐一本书:《打开量化投资的黑箱(第二版)》(Inside the Black Box: A Simple Guide to Quantitative and High Frequency Trading,Second Edition),虽然它通篇没有具体的策略,也没有复杂繁琐的数学公式,但是个人觉得,它涵盖了量化交易入门所必备的各式各样的常识,在你读完之后,你会对量化交易有一个基本的了解,

注意,这里特指的是第二版,原书英文版是在2009年出版,2012年翻译成中文引入国内,第二版是在2013年出版,2016年翻译成中文引入国内,第二版除了对第一版错误进行修正外,关键是加入了『高频交易』这一部分的内容,内容也从原来的13章扩展到了17章。
这本书的作者是漂亮国的一个对冲基金经理,诗画乐三绝的文艺老炮,名字叫做里什·纳兰(Rishi K. Narang),咱就亲切称呼他为"老纳"吧,他上个世纪90年代就进入量化领域了,一直深耕量化交易策略至今,妥妥的"黄埔出身正规军",这本书就相当于是他职业生涯心得体会的阶段脱敏梳理了。

这本书通篇可以分为5个部分。第一Part主要是介绍量化交易的背景知识和典型结构,啥是量化交易,啥是宽客;第二Part就开始拆解量化交易这个黑箱了,一个一个零件拆出来,摆在你的面前挨个介绍一番;第三Part主要是唠唠怎么评估宽客和量化策略,还反驳一些外人对量化的误解;第四Part就是说说高频交易和高频策略的类型;最后一Part就是展望一下量化的未来。
可以看得出来,这本书的核心内容就是第二Part,横跨第3章到第9章,这里面核心的核心就是阿尔法(Alpha)模型,其他还讲了风险模型、交易成本模型、投资组合模型、订单执行模型和科学研究方法。

我在这里多说几嘴关于阿尔法模型的吧,因为连阿尔法模型都没有的话,后面的策略步骤基本上就不用去做了。阿尔法模型就是量化策略当中超额收益的来源,也就是如何在交易市场中寻找盈利的机会,让自己获得超越市场基准的丰厚收益,这正是每个宽客魂牵梦萦的所在。
虽然量化策略众多,纷繁复杂,老纳给你指明阿尔法模型类型方向,只分为两类,一类是理论驱动型,另一类就是数据驱动型。
第一种理论驱动型,也是萌新入门经常选择的一种,宽客通过观察市场行为,寻找可以解释这些行为的普适性理论,然后再用数据检验(回测)是否有效,按照这个普适性理论交易是否能盈利。
老纳根据个人经验,把趋势跟随(trend)、均值回复(reversion)、技术情绪(technical sentiment)、价值/收益(value/yield)、成长(growth)和品质(quality)这6种策略都归为理论驱动型交易策略。

另一种就是数据驱动型,宽客也是观察市场行为,然后通过技术手段分析这些行为数据中的模式,但只是找到这种潜在的模型就行了,不需要有理论解释和支撑,只需要知道A能到B,不需要知道A为什么能导致B。
但老纳在书中说构建数据驱动型策略时,所使用的数学工具较为复杂,门槛比较高,在当时的业界使用还比较少,所以就不展开来讲了,主要还是集中在上面那6种策略类型。
到现在就不一样了,硬件设备、算法算力和数据丰富度极大提升,人工智能AI已经深入到投资交易领域,特别擅长发现数据之间的非线性关系,专门干这种数据驱动的活儿,每个时代都有每个时代的局限性。
2.入门Python编程
对于Python的快速学习,墙裂推荐廖雪峰老师的Python教程,不仅免费写得非常简单易懂,而且每个小节之后,都有编程互动小题目给你即时反馈,非常有趣,不用再想着自己啃完编程大部头再去编写策略。
教程链接:
https://liaoxuefeng.com/books/python/introduction/index.html

廖老师的教程非常详尽,连Web开发都讲了,但是再次重申咱的快速入门学习原则:适度学习,够用即可。对于量化编程基础而言,学到第13章"IO编程"章节就可以了,后面等有需要或有时间再看。

因为写Python就跟写文案一样,都是写作,但也分为散文写作、小说写作、广告写作、短视频脚本等,虽然基础一样,但不同领域用到的方法技巧各有侧重。廖老师的Python教程比较侧重于互联网开发方向,对于量化分析入门而言,后半部分初期的时候还用不上,等需要用到的时候再学习也不迟。
遗憾的是,里面没有讲到量化当中常用的numpy和pandas这两个库,不过可以用别的教程去补充,JoinQuant课堂上关于这两个库的入门写得非常好,我把链接放到下面了。可能需要登录才能查看研究环境和源码,用手机号注册就好,免费的,其他课堂内容也不错,有时间的话也可以学习。
Numpy:它是Python的一个开源的数值计算库,计算当中常用的数组和矩阵等数据类型,以及它们之间的运算,都可以依靠这个库快速实现。
Numpy库教程:
https://www.joinquant.com/view/community/detail/180d0f71a9033338c0a082a3f10123a4
Pandas:它是基于Numpy 之上封装的数据分析库,它能让数据分析和量化分析任务变得更加简单,打个不恰当的比方,它就相当于是Python界的"Excel",是Python量化当中最离不开的一个库。
Pandas库之数据查看和选择:
https://www.joinquant.com/view/community/detail/c2e287adec1920efd500b701bced1e70
Pandas库之数据处理与规整:
https://www.joinquant.com/view/community/detail/e6471871ddf0098dd042800fe61d428b
其实,Python量化当中涉及到的库非常多,初学的话能学好这2个库就算不错了,一般的入门量化分析任务已经难不倒你了,Python量化当中其他可能涉及到的库还包括但不限于:matplotlib、sklearn、scipy、statsmodel、talib、tushare、akshare、backtrader、quantstats、empyrical、pyfolio、tensorflow、pytorch、keras、tsfresh、qlib......不用急着都学,遇到的时候,或有需要的时候再学就可以了。
3.掌握量化交易软件
QMT是由迅投公司开发的量化交易软件,支持股票、期货、期权、ETF、可转债等证券的程序化交易,目前已经对接了80+主流券商,对个人宽客来说,它主要是有3项优势:
(1)程序化交易实盘的开通门槛低。个人也可以在线开通,无需临柜办理,在各大券商办理开通QMT一般都是免费的,使用也是免费的,但开通的要求条件不同,可自行咨询自己目前所在券商的客户经理。
(2)后期的拓展性强。它不限制量化交易策略必须在QMT软件内执行,安装上对应库,可以放在任何Python 3.6 ~ 3.12的环境下运行,可玩性可拓展性非常强。
(3)软件生态好,用户基数大。官方有完善的知识库,平常的小窗私信当中,QMT的咨询占比也是最高的,特别是某平台的量化实盘功能停止后,大部分人都是首选转到QMT。

下面3条链接是新手掌握QMT使用和开发策略实盘交易要用到的3个入门级教程,都出自于迅投的知识库。
QMT新人上手教程:
https://dict.thinktrader.net/freshman/rookie.html
内置Python教程:
https://dict.thinktrader.net/innerApi/start_now.html
XtQuant开发教程:
https://dict.thinktrader.net/nativeApi/start_now.html
【QMT新人上手教程】顾名思义就是教你如何操作QMT软件的,比如说登录、下载数据、新建策略、回测策略和实盘交易等操作。
但是【内置Python】就容易让人看懵,Python还分内外吗?XtQuant又是用来干什么的?
从底层上来说,【内置Python】和【XtQuant】是量化策略两种不同的实现方式。比方说,你是一个量化萌新,之前学Python的时候在电脑上装了Python3.12,现在刚在券商开通了QMT,拿到示例策略在QMT软件当中跑了起来,你以为用的程序解析器是之前你安装的Python3.12,然而并不是,QMT软件当中其实内置了一个Python环境,你在QMT软件当中跑的策略用的都是QMT自带的Python环境,而并不是你电脑本地安装的那个Python环境,所以QMT软件自带的Python环境叫做【内置Python】。
那很多人就会想当然地觉得用【内置Python】不就好了,软件自带的,不用自己再安装了,其实不是的,要是那样的话,迅投公司就不用再费心搞个【XtQuant】了。
【内置Python】的好处就是开箱即用,方便操作,但是也有两个比较硬核的缺点。
第一就是Python版本偏老,目前大部分券商的内置的Python版本是Python3.6,预安装的库也偏老偏少。
第二就是资源受限,无论你在QMT里面同时实盘5个策略还是10个策略,它们都是串行运行在一个线程上,只要其中一个策略阻塞,其他策略全部卡死。
因此【XtQuant】就是用来解决这两个问题的。QMT软件里有一个轻量化子模块功能叫miniQMT,登录QMT界面时勾选极简模式或独立模式就可以开启该功能,通过在电脑Python环境里安装xtquant库,就可以脱离QMT的内置Python环境编写策略,再连接QMT客户端进行交易。
只要你电脑上的Python环境是Python3.6 ~ 3.12,都能安装上xtquant库(可以获取数据和下单),也就是说你想用什么库就用什么库,不再受QMT内置Python环境的限制,并且,最有用的是,多个实盘策略之间是多线程并行运行的,一个策略单独一个线程,其中一个作死不会影响另外的策略(只要电脑资源够)。
因此,基于miniQMT功能通过xtquant库实现策略的方式,在迅投当中也被称为【原生Python】,顾名思义,就是基于电脑本地的Python环境来实现量化策略,与【内置Python】相对,只要你在迅投文档中看到【原生Python】的字眼,就说明这个策略或代码是基于xtquant库实现得。
要特别说明的是,xtquant库中只实现了行情数据和交易下单接口,并不包含回测框架,如果需要回测的话需要自建回测框架或着用第三方回测框架。
因此,【内置Python】和【原生Python】都无所谓孰优孰劣,只是适用的场景不同,【内置Python】适合你只运行一两个策略或多个简单策略消耗资源都不太多的情况以及策略回测,【原生Python】可以让单个策略独占线程,多策略并行运行,也可以脱离老版本Python和第三方库少的限制,自由度更高,拓展性更强。
成年人不做选择,问就是都要。因此在券商那里开通QMT软件的时候,一定要问清楚有没有miniQMT功能,没有miniQMT功能的话,就用不了【原生Python】,你就失去了多策略并行运行和自由拓展等场景。
再来汇总一下谈及QMT时会涉及到的概念名词。
"QMT"是指迅投公司开发的QMT这款量化交易软件。
"miniQMT"是QMT软件附带的一个功能,或者说是一种运行模式(极简模式/独立模式),通过与xtquant库配合,形成自由度更高的开发环境。因为"mini"在英文中是"小"的意思,所以"miniQMT"又俗称为"小QMT",与之相对,整个QMT软件又被称为"大QMT"。
由于部分券商的QMT软件没有miniQMT功能,只有基于"内置Python"的那部分,所以有时候也用"大QMT"表示只有内置Python部分的QMT软件,所以有时候你也能见到"QMT = 大QMT + 小QMT"的表达。
"满血版QMT"是指带有miniQMT功能的QMT软件。
以上谈论到的QMT都是券商版的QMT,也就是从券商那里开通的QMT,也是绝大部分个人宽客接触到的QMT,其实在迅投官网上还有投研版的QMT,相对券商版的QMT来说数据更丰富和性能更强劲,并且它的原生Python是可以回测的,但它并不像券商版那样免费,软件费要接近1w块一年。由于本文主要是面向于量化萌新,因此QMT特指券商版QMT,继续秉持原生Python的xtquant是不能回测的说法。
因此,QMT入门时,建议先学内置Python部分,等到进阶的时候,再学原生Python & xtquant部分,但在券商开通QMT时,一定要开miniQMT功能,给自己将来保留一个可能性。
学习虽好,不要贪杯,一步一个脚印,慢慢来比较快~