← Back to Blog

AI 量化交易训练营 - 12周完整指南

基于「AI 量化交易训练营 第1期」课程大纲

本指南将带你从零开始,12周内掌握量化交易的核心技能。我们不追求速成,而是扎实地构建完整的知识体系。


第1周:量化交易入门与生存法则

什么是量化交易?

量化交易(Quantitative Trading)是指通过数学模型和计算机程序进行投资决策的交易方式。与主观交易相比,量化交易具有以下优势:

  • 纪律性强:严格按照策略执行,不受情绪影响
  • 回测可验证:可以在历史数据上验证策略有效性
  • 覆盖面广:同时监控多个市场、多个品种
  • 执行效率高:毫秒级下单,捕捉市场机会

量化交易的生存法则

  1. 永远不要 All In - 仓位管理是一切的基础
  2. 回测不等于实盘 - 历史表现不代表未来收益
  3. 低成本试错 - 用小资金验证策略后再放大
  4. 持续学习 - 市场在变,策略也需要进化

入门资源

  • 阅读《量化交易之路》
  • 了解 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)

策略迭代

  1. A/B测试:新旧策略对比
  2. 参数优化:Grid Search / Bayesian Optimization
  3. 样本外验证:用未参与训练的数据验证

注意事项

  1. 模拟盘优先:实盘前至少跑3个月模拟盘
  2. 小资金试水:先用1-2万块验证
  3. 记录每一笔交易:方便复盘
  4. 不要迷信策略:市场在变,需要不断迭代

免责声明

本教程仅供学习参考,不构成任何投资建议。量化交易有风险,入市需谨慎。


本教程由 AI 生成,帮你快速搭建量化交易知识框架。