AI 量化交易训练营 - 12周完整指南
基于「AI 量化交易训练营 第1期」课程大纲
本指南将带你从零开始,12周内掌握量化交易的核心技能。我们不追求速成,而是扎实地构建完整的知识体系。
第1周:量化交易入门与生存法则
什么是量化交易?
量化交易(Quantitative Trading)是指通过数学模型和计算机程序进行投资决策的交易方式。与主观交易相比,量化交易具有以下优势:
- 纪律性强:严格按照策略执行,不受情绪影响
- 回测可验证:可以在历史数据上验证策略有效性
- 覆盖面广:同时监控多个市场、多个品种
- 执行效率高:毫秒级下单,捕捉市场机会
量化交易的生存法则
- 永远不要 All In - 仓位管理是一切的基础
- 回测不等于实盘 - 历史表现不代表未来收益
- 低成本试错 - 用小资金验证策略后再放大
- 持续学习 - 市场在变,策略也需要进化
入门资源
- 阅读《量化交易之路》
- 了解 Inside Edge Traders 的研究
第2周:金融市场基础
核心概念
| 概念 | 说明 |
|---|---|
| K线 | 记录价格变动的基本单位 |
| 成交量 | 反映市场活跃度 |
| 市值 | 公司价值的 市场定价 |
| PE/PB | 估值指标 |
市场结构
- 一级市场:IPO、增发
- 二级市场:股票、债券、期货、期权
- 交易所:上交所、深交所、港交所、美交所
建议书籍
- 《金融市场技术分析》
- 《证券分析》
第3-4周:开发环境与数据工具
Python 环境搭建
推荐使用 Anaconda 管理 Python 环境:
# 安装 Anaconda 后创建量化环境
conda create -n quant python=3.10
conda activate quant
# 安装基础库
pip install numpy pandas matplotlib
pip install tushare akshare baostock
Tushare 使用
Tushare 是国内最常用的金融数据接口:
import tushare as ts
# 初始化
pro = ts.pro_api('your_token')
# 获取股票日线数据
df = pro.daily(ts_code='000001.SZ', start_date='20230101', end_date='20231231')
Baostock - 免费替代方案
import baostock as bs
# 登录
lg = bs.login()
print('login respond error_code:' + lg.error_code)
print('login respond error_msg:' + lg.error_msg)
# 获取K线数据
rs = bs.query_history_k_data_plus("sh.600000",
"date,open,high,low,close,volume",
start_date='2023-01-01',
end_date='2023-12-31')
第5周:回测框架 Backtrader
Backtrader 简介
Backtrader 是 Python 中最流行的回测框架之一。
简单示例
import backtrader as bt
class MyStrategy(bt.Strategy):
params = (('maperiod', 15),)
def __init__(self):
self.dataclose = self.datas[0].close
self.order = None
self.buyprice = None
self.buycomm = None
# 移动平均线
self.sma = bt.indicators.SimpleMovingAverage(
self.datas[0], period=self.params.maperiod)
def next(self):
if self.order:
return
if not self.position:
if self.dataclose[0] > self.sma[0]:
self.order = self.buy()
else:
if self.dataclose[0] < self.sma[0]:
self.order = self.sell()
# 运行回测
cerebro = bt.Cerebro()
cerebro.addstrategy(MyStrategy)
data = bt.feeds.YahooFinanceData(fromdate='2023-01-01', todate='2023-12-31')
cerebro.adddata(data)
cerebro.broker.setcash(1000000)
cerebro.run()
print(f'Final Portfolio Value: {cerebro.broker.getvalue():,.2f}')
关键指标
- 年化收益率 (CAGR)
- 夏普比率 (Sharpe Ratio)
- 最大回撤 (Max Drawdown)
- 胜率 (Win Rate)
第6周:技术指标 TA-Lib
TA-Lib 安装
# macOS
brew install ta-lib
pip install ta-lib
# Ubuntu
sudo apt-get install ta-lib
pip install ta-lib
常用指标
import talib
# 移动平均线
sma_20 = talib.SMA(close, timeperiod=20)
ema_12 = talib.EMA(close, timeperiod=12)
# MACD
macd, signal, hist = talib.MACD(close)
# RSI
rsi = talib.RSI(close, timeperiod=14)
# 布林带
upper, middle, lower = talib.BBANDS(close, timeperiod=20)
# KDJ
k, d, j = talib.STOCH(high, low, close)
指标组合策略
常见组合:
- 均线交叉:MA5 上穿 MA20 买入,下穿卖出
- MACD + RSI:MACD金叉且RSI<30买入
- 布林带突破:价格突破上轨买入
第7周:特征工程
什么是特征?
特征是模型的输入。在量化交易中,常见特征包括:
技术特征
def compute_features(df):
# 收益率
df['return'] = df['close'].pct_change()
# 波动率
df['volatility_20'] = df['return'].rolling(20).std()
# 价格动量
df['momentum_5'] = df['close'].pct_change(5)
df['momentum_20'] = df['close'].pct_change(20)
# 成交量变化
df['volume_change'] = df['volume'].pct_change()
# 高低价范围
df['hl_range'] = (df['high'] - df['low']) / df['close']
return df
因子特征
- 价值因子:PE、PB、PS
- 成长因子:营收增速、利润增速
- 动量因子:过去N天收益率
- 质量因子:ROE、资产负债率
第8周:机器学习与强化学习
机器学习模型
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
import xgboost as xgb
# 准备数据
X = features.drop('target', axis=1)
y = features['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# XGBoost
model = xgb.XGBClassifier(
n_estimators=100,
max_depth=6,
learning_rate=0.1
)
model.fit(X_train, y_train)
predictions = model.predict(X_test)
强化学习 (Q-Learning)
import numpy as np
class QLearningAgent:
def __init__(self, state_size, action_size):
self.state_size = state_size
self.action_size = action_size
self.learning_rate = 0.1
self.gamma = 0.95
self.epsilon = 1.0
self.q_table = np.zeros((state_size, action_size))
def act(self, state):
if np.random.random() < self.epsilon:
return np.random.randint(self.action_size)
return np.argmax(self.q_table[state])
def learn(self, state, action, reward, next_state):
current_q = self.q_table[state, action]
max_next_q = np.max(self.q_table[next_state])
self.q_table[state, action] = current_q + self.learning_rate * (reward + self.gamma * max_next_q - current_q)
第9周:论文复现与 QuantStats
论文资源
QuantStats 使用
import quantstats as qs
# 假设 returns 是你的策略收益序列
returns = strategy_returns
# 完整报告
qs.reports.full(returns)
# 夏普比率
sharpe = qs.stats.sharpe(returns)
# 最大回撤
max_dd = qs.stats.max_drawdown(returns)
# 收益统计
qs.stats.return_volatility(returns)
生成 HTML 报告
qs.reports.html(returns, output='strategy_report.html', title='My Quant Strategy')
第10周:智能报告与 RAG
RAG 在量化中的应用
检索增强生成(Retrieval-Augmented Generation)可以帮助:
- 策略解释:用自然语言解释策略信号
- 新闻分析:结合实时新闻做决策
- 研究报告:自动生成分析报告
简单实现
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
# 文档向量化
texts = [...] # 你的研报、新闻等
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_texts(texts, embeddings)
# 问答
qa = RetrievalQA.from_chain_type(
llm=OpenAI(),
chain_type="stuff",
retriever=vectorstore.as_retriever()
)
result = qa.run("这只股票最近有什么利好消息?")
第11周:实盘接入 XlQuant
XlQuant 简介
XlQuant 是国内流行的实盘交易接口,支持多家券商。
基本使用
from xiquant import XiQuant
# 初始化
xq = XiQuant(token='your_token')
# 查持仓
positions = xq.get_positions()
# 下单
order = xq.order(
symbol='600000',
price=10.5,
volume=1000,
direction='buy'
)
# 撤单
xq.cancel_order(order['order_id'])
风险控制
- 最大仓位:单票不超过20%
- 止损线:亏损8%必须止损
- 日间风控:收盘前检查仓位
第12周:部署与持续优化
部署方案
# Docker 部署
FROM python:3.10
COPY . /app
RUN pip install -r requirements.txt
CMD ["python", "main.py"]
持续监控
import schedule
import time
def job():
# 检查策略运行状态
# 发送监控报告
pass
schedule.every().day.at("09:30").do(job)
schedule.every().day.at("15:00").do(job)
while True:
schedule.run_pending()
time.sleep(60)
策略迭代
- A/B测试:新旧策略对比
- 参数优化:Grid Search / Bayesian Optimization
- 样本外验证:用未参与训练的数据验证
注意事项
- 模拟盘优先:实盘前至少跑3个月模拟盘
- 小资金试水:先用1-2万块验证
- 记录每一笔交易:方便复盘
- 不要迷信策略:市场在变,需要不断迭代
免责声明
本教程仅供学习参考,不构成任何投资建议。量化交易有风险,入市需谨慎。
本教程由 AI 生成,帮你快速搭建量化交易知识框架。