

凌晨两点盯着回测曲线,我发现一个反常识的事实——技术指标不是越复杂越好。
过去30天,我跑了三组隔夜算法策略:RSI超买超卖、MACD趋势跟踪、多指标共振。每天开盘前自动调仓,收盘前清仓。结果出来后,我删掉了半个代码库。
数据不会撒谎,但会误导
RSI策略最终胜率47%,夏普比率0.8。MACD更惨,胜率跌到38%,最大回撤直接干到19%。最稳的反而是\"共振策略\"——RSI+布林带+成交量确认,胜率52%,回撤控制在12%以内。
这里有个陷阱:我最初用2020-2023年数据训练,2024年实盘测试。看起来是\"样本外验证\",实则踩了时间穿越的坑。2023年底的模型参数,早就偷看了2024年的答案。
修正方法简单粗暴——按月份滚动回测,每月初用过去24个月数据重新训练。胜率数字掉了8个百分点,但可信度翻倍。
四个偏见差点让我交学费

第一,幸存者偏差。我最初只保留\"成功\"的指标组合,删掉失效的变体。这相当于只给老板看赚钱的PPT,亏损项目集体消失。
第二,前视偏差。代码里有个隐藏bug:布林带用当日收盘价计算,但交易信号却在盘中触发。等于用\"明天的报纸\"指导今天的买卖。
第三,过度优化。我在RSI参数上做了网格搜索,14天、9天、21天都试了一遍。选中的最优参数,恰好是历史噪音的拟合结果。
第四,交易成本幻觉。回测时按万分之一手续费计算,实盘发现隔夜仓位还有融券成本、冲击成本。小数点后三位的精度,被小数点前两位的摩擦吃掉。
修正后的规则:任何策略上线前,必须在三个未参与训练的市场周期里跑通,否则就是曲线拟合的幻觉。
代码里的真相
技术实现上,我用pandas-ta库做快速验证。比如这段布林带计算:

```python import pandas as pd from ta.volatility import BollingerBands df = pd.DataFrame({ 'price': [100, 120, 90, 110], 'rsi': [50, 70, 30, 60] }) bb = BollingerBands(df['price'], window=20) print(bb.bol_upper) ```
看起来干净,实则埋雷。默认参数用20日简单移动平均,但隔夜策略的持仓周期只有16小时。用20日均线判断16小时的波动,就像用年度K线指导日内交易——尺度错配。
改成5日指数移动平均后,信号频率上升,但假阳性也多了。最终妥协方案:双轨验证,短期均线触发信号,长期均线过滤噪音。
市场给的上了一课
最意外的发现来自\"无效\"的日子。有11个交易日,三个策略同时亏损。复盘发现,全是美联储讲话、CPI发布、地缘冲突的窗口期。技术指标在宏观事件面前,像用体温计量海啸。
现在我加了一层过滤:VIX(波动率指数)高于25时,策略自动降仓50%。这规则让年化收益少了3个百分点,但最大回撤从22%压到14%。
另一个反直觉的点:胜率最高的策略,往往不是最终赚钱的策略。RSI胜率47%但盈亏比1.8,MACD胜率38%盈亏比只有0.9。低胜率+高盈亏比的策略更难坚持,但数学期望更优。
30天跑完,我的交易日志里多了条备注——\"回测是历史剧的重播,实盘是直播事故\"。
你现在用的策略,有没有在2018年10月、2020年3月、2022年6月这三个时间点活下来的记录?
富灯网提示:文章来自网络,不代表本站观点。