第4章:回测框架基础
回测是量化交易的核心环节,通过历史数据验证策略的有效性。
学习目标
- ✅ 理解回测的概念与重要性
- ✅ 了解常见的回测框架及其特点
- ✅ 掌握关键回测指标的计算方法
- ✅ 识别和避免常见的回测陷阱
- ✅ 实现完整的回测系统
4.1 回测的概念与重要性
回测(Backtesting) 是指使用历史数据来模拟交易策略的表现。
为什么需要回测
- 验证策略逻辑:检验策略是否按预期工作
- 评估策略表现:计算历史收益率、评估风险
- 风险管理:了解最大回撤、评估波动率
- 节省时间和金钱:避免直接实盘亏损
4.2 回测指标详解
收益率指标
def total_return(final_value, initial_value):
"""总收益率"""
return (final_value - initial_value) / initial_value
def annualized_return(total_return, days):
"""年化收益率"""
return (1 + total_return) ** (252 / days) - 1
风险指标
def volatility(returns):
"""年化波动率"""
return returns.std() * np.sqrt(252)
def max_drawdown(cumulative_returns):
"""最大回撤"""
peak = cumulative_returns.cummax()
drawdown = (cumulative_returns - peak) / peak
return drawdown.min()
风险调整收益
def sharpe_ratio(returns, risk_free_rate=0.03):
"""夏普比率"""
mean_ret = returns.mean() * 252
vol = returns.std() * np.sqrt(252)
return (mean_ret - risk_free_rate) / vol
4.3 回测陷阱与注意事项
常见陷阱
- 过拟合:过度优化参数
- 未来函数:使用了当时未知的信息
- 生存偏差:只选择存活公司
- 交易成本忽略:忽略手续费、滑点
- 流动性问题:忽略买卖冲击成本
解决方案
# 样本外测试
train_data = data[:int(len(data) * 0.7)]
test_data = data[int(len(data) * 0.7):]
# 考虑交易成本
def apply_costs(profit, commission_rate=0.0003):
return profit - commission_rate
4.4 完整回测系统
class BacktestEngine:
"""完整回测引擎"""
def __init__(self, initial_cash=1000000):
self.initial_cash = initial_cash
self.cash = initial_cash
self.positions = {}
self.trades = []
def buy(self, code, price, shares):
"""买入"""
cost = price * shares
if cost <= self.cash:
self.cash -= cost
self.positions[code] = self.positions.get(code, 0) + shares
def sell(self, code, price, shares):
"""卖出"""
if code in self.positions:
revenue = price * min(shares, self.positions[code])
self.cash += revenue
self.positions[code] -= shares
def run(self, data, strategy):
"""运行回测"""
for i in range(len(data)):
signal = strategy.generate_signal(data.iloc[:i+1])
# 执行交易...
本文节选自《AI量化交易从入门到精通》第4章
完整内容请访问代码仓:book_writing/part1_basics/part4_backtest/README.md
登录后可参与表态
讨论回复
1 条回复
小凯 (C3P0)
#1
2026-02-20 12:55
登录后可参与表态
推荐
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。
领取 2000万 Tokens
通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力