神经网络的神话与实盘真相
来自ATC 2010选手的六年踩坑经验谈
谁是 Leonid Velichkovsky
Leonid Velichkovsky(社区ID:LeoV)是MQL5社区中少数长期将神经网络用于实盘交易的交易者。他并非程序员,而是一位交易员,借助多位专业程序员(如bstone、YuraZ、Vinin、Integer)将想法实现为EA。在2008年自动交易锦标赛(ATC 2008)中,他的多货币神经网络EA一度浮盈11万美元,但因激进资金管理最终回撤至14749美元。2010年ATC前夕,他接受了关于神经网络交易误区与认知的访谈,本文基于此整理。
他使用的工具链包括MetaTrader 4(后期尝试MT5)、NeuroShell作为神经网络建模核心,以及MTFeed作为MT4与NeuroShell之间的数据桥接。他认为神经网络在金融市场中的应用与其他领域差异极大,许多常规认知在交易场景下并不成立。
最大神话:神经网络能带来超盈利
Leonid指出,围绕神经网络最普遍的神话就是“超盈利性”,但这不仅关乎神经网络,更是整个外汇市场的错觉。初入市场者往往觉得买卖很简单,但随后才会遭遇未曾预知的因素。神经网络最吸引人的“对任意曲线拟合与寻找隐藏模式”的能力,在金融市场中恰恰成为最大劣势:能完美适应历史数据的网络,常无法识别未来已变化的市场结构。
他强调,神经网络本质与普通交易系统(TS)无异,只是用神经元网络替代了常见指标。真正决定成败的是资金管理,也就是交易者的“贪婪”。在小账户上,交易者天然渴望快速翻倍,从而跨越可接受风险,导致爆仓;而大账户者因责任感更强,反而更重视风险控制。
过拟合:神经网络特有的训练怪圈
由于神经网络强非线性与对任意数据的适应能力,仅含少量隐层神经元的网络就能记住数千根K线的历史。所谓“过拟合”在金融市场的神经网络应用中尤为典型:市场随时间演变,过去存在的模式在未来不会百分百重演。若网络在训练期把历史样本学得太透,未来新出现的、已发生变异的模式便无法被识别。
避免过拟合主要有两种方法,但均有严重缺陷。其一是“提前停止训练”:何时停?以误差、利润、回撤哪种标准为界?没有百分百保证的准则,只能依赖交易者经验。经验规律是:训练误差随时长渐降,而样本外(OOS)利润先升后降,形成首个峰值——捕捉该峰值即最佳干预点,后续峰值通常更低。
其二是“增大训练区间”:给网络更多数据。但在金融市场,区间过大反而使网络无法识别其中具体模式,因为模式随时间变形,大区间内同质模式被稀释。Leonid的实践训练样本量约为500至2000根Bar,取决于周期与市况。他提醒,这两种方法同样适用于无神经网络的普通EA优化,过度优化(fitting)也是金融市场独有难题,根源即“市场非平稳”。
输入数据预处理中的非线性扭曲
新手常犯的错误是直接用未归一化的价格时间序列作输入,试图预测下一根Bar价格,这本质即“明天像今天”的过拟合。由于外汇价格相邻差异仅约0.7%,训练误差极小,网络迅速陷入局部最小。
Leonid从不使用纯时间序列作输入,而是先经指标转换为归一化序列(如-1至1或-100至100),且尽量少的变换,因为任何变换都会引入非线性扭曲,误导网络学习到失真信号而非真实规律。以随机指标(Stochastic)为例:价格上涨时它触顶走平,价格横盘时它却从顶到底剧变——这些肉眼可见的扭曲会负面干扰训练与实盘。
他强调,所有指标都引入扭曲,只是程度不同;特定参数组合可在某市况下最小化扭曲,但市况变则需手动或自动重调参数。这再次说明交易者经验的核心作用。
如何评估训练与优化结果
Leonid几乎不看训练(优化)区间内TS结果,因为该阶段结果无法区分是有效还是过拟合,只能在OOS或实盘验证。他分析TS时统一使用杠杆1:1(即关闭资金管理),以真实回撤为准,避免加杠杆后表面利润掩盖真实风险导致意外 Margin Call。
在杠杆1:1下,若训练区间利润因子极端高,即为过拟合铁证。图中权益曲线平滑上行代表系统稳健;若改用激进资金管理,利润可倍增,但取决于交易者可接受回撤。他认为,评估必须基于样本外真实表现,而非历史拟合优度。
ATC 2008的惨痛教训与资金管理
ATC 2008中,Leonid的EA因过度激进资金管理,三个月浮盈近50%却回撤92%,从11万跌至14749。后来用合理资金管理重跑同周期,获相似绝对收益但回撤仅约25%——这才是实盘可接受结果。锦标赛规则逼人冒险,但实盘不可追逐超额利润而忘却风险。
他总结:市场本质不变,性格在变,经验交易者须跟踪调整TS参数以适应新条件。其EA核心逻辑数年未大改,仅参数优化。他拒绝使用神经网络委员会(多网络组合),因复杂系统并不能保证比简单系统更稳定,且难维护。
多货币与实战配置
Leonid的EA采用多货币对冲,以熨平权益曲线并提升系统稳定性。ATC 2010计划交易EUR/USD、USD/JPY、AUD/USD,具体视临近赛时市况而定。多货币分析可互验,降低单币种结构性风险,但需更强调度与参数协同能力。
整体而言,他将神经网络视为普通TS的一种实现,重点不在网络结构炫技,而在市况认知、输入净化、训练节制与资金纪律。这一认知对今天中文社区盲目追捧“AI交易”者尤具清醒价值。
// 示例:以简单归一化输入避免价格直输(概念片段,非原文代码)
#property strict
double NormalizeInput(double price, double min, double max)
{
if(max == min) return 0.0;
return (2.0 * (price - min) / (max - min) - 1.0); // 映射到 [-1,1]
}
int OnInit()
{
// 实际中应使用指标缓冲而非裸价格
return(INIT_SUCCEEDED);
}