一.量化交易分类
- 量化交易(Quantitative Trading)
- 量化交易则通常是指使用数学、统计甚至机器学习的方法,去找寻合适的买卖时机。
- 所以,在这个维度的定义之下,算法交易、高频交易还有统计套利(Statistical Arbitrage)都可以算作量化交易。
- 程序化交易(Program Trading)
- 它通常用计算机程序代替交易员,来具体执行金融产品的买卖。
- 量化交易的下层通常是程序交易。
- 算法交易(Algo-Trading)
- 而算法交易通常用于高频交易中。
- 它指的是,通过算法快速判定买卖的时间点,快速买卖多个产品。
- 高频交易(High Frequency Trading)
- 和自动化交易平台(Automated Trading System)
二.电子盘交易
通常的电子盘交易(比如股票,数字货币),是通过券商或者软件,直接把买卖请求发送给交易所;而算法交易的底层,就是让程序来自动实现这类操作。券商或者交易所,通常也会提供 API 接口给投资者。比如,盈透证券(Interactive Broker)的接口,就可以支持股票、期权的行情数据获取和交易;而 Gemini、OKCoin 等交易所,也提供了对应的接口进行数字货币行情获取和交易。
获取最近的比特币(BTC)对美元(USD)的价格和最近的成交量。
########## GEMINI行情接口 ##########
## https://api.gemini.com/v1/pubticker/:symbol
import json
import requests
gemini_ticker = 'https://api.gemini.com/v1/pubticker/{}'
symbol = 'btcusd'
btc_data = requests.get(gemini_ticker.format(symbol)).json()
print(json.dumps(btc_data, indent=4))
'''
{
"bid": "50206.61",
"ask": "50215.34",
"volume": {
"BTC": "986.9718101738",
"USD": "48761547.749993690476",
"timestamp": 1629701700000
},
"last": "50216.30"
}
'''
交易系统结构
- 行情模块的主要功能是,尝试获取市场的行情数据,通常也负责获取交易账户的状态。
- 策略模块的主要功能是,订阅市场的数据,根据设定的算法发出买、卖指令给执行模块。
- 执行模块的主要功能是,接受并把策略模块发过来的买、卖指令封装并转发到交易所;同时,监督并确保策略买卖的完整执行。
三.Python 在算法交易中流行的原因
数据分析能力
第一个原因,是 Python 的数据分析能力。算法交易领域的一个基本需求,就是高效数据处理能力,而数据处理则是 Python 的强项。特别是 NumPy+Pandas 的组合,简直让算法交易开发者的生活质量直线上升。
大量专有库
除了强大的数据处理能力之外,Python 还有许许多多已经开发成熟的算法交易库可供使用。比如,你可以使用 Zipline 进行策略回测,或者用 Pyfolio 进行投资组合分析。而许多交易所也都提供了基于 Python 的 API 客户端。
便利的交易平台
第三个原因,是因为便利的交易平台。有一些算法交易平台可以执行自定义 Python 策略,无需搭建量化交易框架。算法交易平台,实际上等效于帮用户完成了行情模块和执行模块。用户只需要在其中定义策略模块,即可进行算法交易和回测。比如,Quantopian,就提供了基于 Zipline 的标准回测环境。用户可以选择 Python 作为开发语言,并且和社区的网友分享自己的策略。此外,国内也有诸如 BigQuant、果仁网等类似平台,提供不同市场和金融产品的交易。
广泛的行业应用
最后一个原因,则是 Python 本身广泛的行业应用了。目前,越来越多投资机构的交易部门,都开始使用 Python,因此也对优秀的 Python 开发者产生了更多的需求。自然,这也让学习 Python,成为了更有意义的“投资”。