
量化回测到底在做什么
量化回测就是把你的交易想法扔进历史数据里跑一遍。股票、期货都行,十年的K线数据,每天开盘收盘、最高最低,全拿来测试。你的策略说“均线金叉买入,死叉卖出”,回测就告诉你:按这个规则,过去十年赚了多少,亏了多少,最大回撤多深。
没有回测,你就像闭着眼睛开车。有回测,你至少知道这条路以前有没有坑。

盾牌的第一层作用 挡住随手交易
很多人做股票期货,凭感觉。今天看新闻说大豆要涨,冲进去;明天听朋友说螺纹钢要跌,赶紧跑。这种交易十有八九亏钱。量化回测逼你把规则写清楚:什么条件买,什么条件卖,仓位多少。规则写出来,跑一遍历史数据,结果惨不忍睹。你就知道,这想法不行,省下了真金白银。
回测是过滤器,把不靠谱的念头挡在外面。
盾牌的第二层作用 暴露策略的致命伤
回测会告诉你最大回撤。股票策略回撤30%,你受得了吗?期货带杠杆,回撤50%可能直接爆仓。回测数据摆在那里,你就不会在实盘时被吓懵。
回测还会告诉你胜率和盈亏比。胜率40%,盈亏比3比1,这策略能赚钱。胜率70%,盈亏比0.5比1,赚小亏大,迟早完蛋。这些数字只有回测能给你。
盾牌的第三层作用 避免过度拟合
量化回测有个大坑:过度拟合。你把参数调来调去,让历史收益曲线漂亮得像艺术品。实盘一跑,亏成狗。为什么?因为你拟合的是历史噪音,不是市场规律。
真正的盾牌用法是:样本内回测,样本外验证。用2010到2018年数据优化参数,拿2019到2023年数据检验。样本外表现不崩,策略才靠谱。
股票和期货回测的差别
股票回测要考虑分红、停牌、涨跌停。期货回测要考虑保证金、杠杆、换月。这些细节不注意,回测收益虚高。
期货回测还要处理连续合约。主力合约换月时价格跳空,直接拼接会产生假信号。用前复权或后复权价格,或者做价差调整。
股票回测注意幸存者偏差。退市的股票不能从数据库里消失,否则回测结果偏乐观。
代码示例 一个简单的均线回测框架
import pandas as pd
import numpy as np
def backtest_ma(data, short_window=5, long_window=20):
data['short_ma'] = data['close'].rolling(short_window).mean()
data['long_ma'] = data['close'].rolling(long_window).mean()
data['signal'] = 0
data.loc[data['short_ma'] > data['long_ma'], 'signal'] = 1
data.loc[data['short_ma'] <= data['long_ma'], 'signal'] = 0
data['position'] = data['signal'].shift(1)
data['returns'] = data['close'].pct_change()
data['strategy_returns'] = data['position'] * data['returns']
cumulative = (1 + data['strategy_returns']).cumprod()
max_drawdown = (cumulative / cumulative.cummax() - 1).min()
return cumulative, max_drawdown
跑这段代码,你就知道均线策略在历史数据上赚不赚钱,最大回撤多少。
回测不是万能 但没有回测万万不能
回测不能保证未来赚钱。市场会变,过去有效的策略未来可能失效。回测是盾牌,不是水晶球。它帮你挡住明显的坑,提高生存概率。
实盘前必须回测。股票期货都一样。没回测就上实盘,跟赌博没区别。回测让你有底气,知道最坏情况是什么。
盾牌的作用不是进攻,是保护。量化回测保护你的本金,让你在市场上活得更久。活下来,才有机会赚钱。