量化交易介绍

2023/2/15

# 量化交易的定义

量化交易是一種依靠數學和統計模型來辨別市場交易的策略。 量化交易通常需要大量的數據與演算法邏輯,一般會對包括基本面、籌碼面、技術面、經濟面、事件、時間週期等等數據資訊進行分析,並根據合理的邏輯設計及驗證策略,最終根據數據與策略進行交易決策。

量化交易大多會需要程式語言進行資料分析與執行,一般都是大型機構投資人、對沖基金使用的交易策略,它們的交易量通常很大。 但是目前也逐漸有越來越多個人投資者開始使用量化交易策略。

# 量化交易的优点

  • 可以被验证
  • 可以克服情绪
  • 藉由数据可以发掘出肉眼和经验无法找到的超额报酬机会
  • 可以管理更大规模的策略与资金

# 量化交易的缺点

  • 进入门槛高、数据取得困难且高成本、需要编程能力、许多策略需要大资金才可执行
  • 每个人使用的資料或策略可能都一樣、竞争使利润变少
  • 可能对逻辑和參數過度最佳化而不自知
  • 金融市场规则变化、短期失灵,或参与者变化,都有可能会让过去有效的策略失效
  • 任何数据本身必然有限制、有极限,不可能永远保持创造超额报酬的能力
  • 无法规避一些特殊的人为影响,例如战争、政变等等,市场变得不效率时量化策略如果分析的数据信息不足,不一定能及时反应。

# 量化交易的流程

# 步骤1:取得资料和数据

量化交易策略的第一步,就是整理数据资料,一切的策略都源自于数据资料。
资料可能是买的,也可能是自己写爬虫抓资料、收集、存进数据库。
当然,最初的版本,也可以用Excel做纪录和计算。

# 步骤2:清理资料

许多数据商提供的资料,往往有些应用上的限制(例如不同国家的日期字段不同、不同国家的财报字段名称不同等等), 或者有些数据商提供的资料有误(两家厂商提供的数据不一样、缺漏资料、某天资料有误等等),这都必须先进行整理。 在数据统计领域有一句话叫做 Garbage in, garbage out,意思是垃圾进、垃圾出, 拿有问题的数据,自然就会做出有问题的策略。

# 步骤3:设计策略

就是必须找到一个有利可图的事情,也许是统计上有优势,或者是别人还没有发现的事情,逻辑上说得通、有办法获利的市场。 我们会对市场进行一些假设,认为市场可能会因此产生超额报酬,并且去寻找对应的数据, 取得相关的数据来测试这个策略,并试图优化策略以获得更高的报酬、更低的风险。 由于市场通常非常效率,大多策略是呈现随机性、无利可图、没有超额报酬,或者报酬/风险不如大盘及一些基准指数的。 10个策略通常有一两个略有一点用处就算有收获。 这一步要提醒的是,我觉得应该是先有策略,再找对应数据,或至少先知道数据的意义,进而思考它的应用, 不应该用数据去应凑出策略,我个人目前并不赞同像是机器学习或者类神经语言的方式产出策略。

# 步骤4:回测、分析策略

有策略和数据后,会进行验证,根据策略逻辑与数据,进行回溯测试(简称回测),分析同样的策略在历史上的有效性、在各种行情下的变化。

进行回测程序,必须使用一些软件的回测程序,或像是Python、C++... 等程序语言,进行运算,
回溯测试的目的是提供证据,证明通过上述过程确定的策略,应用到历史和样本外资料时是可以获利的。

回测分析的重点除了看绩效、风险,也包括:

  • 厘清超额报酬的逻辑:如果逻辑说不出来或说不通,即使数据有用,也可能只是巧合。
  • 了解数据假设与限制:任何数据和分析逻辑都有限制,厘清限制,未来数据失效时才有能力识别出是短暂失效还是长期失效。
  • 观察一些剧烈波动的时间点:看看策略在那些时间点的变化,是否符合自己预想。
  • 参数验证:参数理论上要能经得起调整、位于参数高原、避开参数孤岛,小幅的调高、调低参数,成果都不该有过于剧烈的变化。
  • 讯号时间性验证:如果把讯号提前或延迟,得到的结果理论上要更好/更差一些,如果不符合的话,可能参数或逻辑存在过度优化。

# 步骤5:可行性验证

当量化交易策略有可行性之后,和一般做实验一样,会经过几个比较关键的验证,包括:

  • in-sample test 样本内测试:也就是回测的步骤,会使用历史数据做验证。
  • out-of-sample test 样本外测试:一般会保留一段时间的数据,在样本内测试时不使用,等样本内测试结束、决定参数后,再套到样本外测试,确认设定参数可行。
  • paper trade 纸上交易:根据最新的交易做纸上交易,只模拟并纪录损益,但不用真钱操作。 等确认可行才进入下一步。 一般纸上交易短则1~3个月,长则不一定。
  • 正式上线:实际资金投入,初期也会观察一段时间看看成果是否符合回测及讯号符合预期。
    这些主要是衡量策略在历史数据与实际执行的差异,如果是被过度优化的策略,很可能历史回测像一条龙、实际交易像一条虫。

# 步骤6:自动化执行策略

如果验证完觉得可行,就把这个策略自动化去运作自动交易并尽量减少交易成本。

考虑到许多商品可能24小时交易,或者开盘时间跨时区,以及减少人为因素,
一般会让程序自动执行,或聘请专门的下单(称为打单)人员来下单。

系统化的执行,也是量化交易的一个重点。
即使需要人为干预,也需要逻辑十分明确(例如根据某些数据,判断市况已经不符合当初假设),而非任意干预。

# 步骤7:风险控管

衡量风险就是管理风险,并且去调整自己的部位做好资产配置。 量化交易的最后步骤就是要管理风险、衡量风险,风险来源有很多,会涵盖几乎所有可能干扰交易的因素,底下列举几个:

  • 数据风险:例如数据商提供的最新数据有误。
  • 执行风险:例如保证金没算对、导致资金不足。
  • 人为疏失:例如程序或交易员下错单、该下单没下、或者没换仓等等。
  • 技术风险:例如位于交易所的服务器突然出现故障、网络中断、当初写的程序有bug等等。
  • 券商或交易所风险:例如交易所破产。

了解风险后还要组成资产配置,因为多个策略同时进行,每个策略该放多少钱、跑多大规模金额,也是个问题。
例如,有些策略有容纳资金量的上限,超过后就会流动性不足,或者影响市场波动。又或者同一类型策略太多,或者同一风险源的策略太多,藉由控制部位规模,来让风险得到控制。
另外,虽然在量化交易中,受到心理影响、认知偏误的风险会减少,但仍会受到一些干扰,像是损失规避(Loss Aversion),也就是心里不愿意接受损失,就算亏损了也不平仓,因为必须承受损失的痛苦。
量化策略不会是完美无缺的,但如果个人过度手动干预量化成果,那么量化很可能会失去意义。

# 步骤8:策略管理

策略管理包括决定上架新策略、下架旧策略策略,以及决定各策略的规模和比例。

一个新策略从开发到运作,经过漫长的过程和验证,只要不是有bug,通常不会随便失效, 但凡事没有绝对,策略看久了你会知道,没有策略是可以永远有效的。

竞争者增加、法规或市场特性改变、数据计算规则改变、新替代商品出现、市场流动性改变等等,都会让一个策略可能未来某些时间失效、趋于随机。 (记得,策略失效不是赔钱,而是变的随机)