其实圈子里很少有人会认真聊这个话题:一个AI交易系统跑了大半年,最大的一笔“收益贡献”,不是某次精准抄底,也不是某轮趋势吃满,而是一连串的日子它什么都干,只输出一行字——不建议交易,空仓等待。
说出来你可能不信,但我调教过好几套交易模型之后,反而越来越确认一件事:对AI交易系统来说,“有把握地不交易”比“没把握地乱交易”值钱得多。今天这篇东西,我不聊那些花里胡哨的策略,就想用我自己踩过的坑,把这件事彻底讲透:AI到底凭什么判断“今天不该做”,我们又是怎么把这个判断做进系统里的,以及为什么说这在整套系统里是最难复制、最容易被忽视,却最有价值的一项输出。
1. 交易系统的最优解,经常体现在“不做”这件事上
1.1 收益不是靠下单频率堆出来的,而是靠出手的“期望值密度”
做一个很简单的算术题。假设两套AI策略,一套每天开平仓好几轮,胜率48%,另一套平均两周才动一次,但每次出手胜率63%,而且盈亏比明显占优。前者交易成本跑下来基本是给券商打工,后者看去有点“懒”,但年度收益曲线反而平滑得多。
核心逻辑其实在期望值里:策略的收益不是由触发次数决定的,而是由“单次期望收益为正”和“在正确的分布里出手”共同决定的。交易市场里绝大多数时间处于震荡噪音和随机波动状态,在这种状态下频繁开仓,本质是让模型在自己不擅长的概率分布里强行做决策。一个有自我认知的交易系统,应该能识别“当前状态不属于我模型能覆盖的有利分布”,然后主动停手。
我自己习惯把这个过程类比成一个狙击手。优秀的狙击手不会因为上级要求“必须开火”就对着雾天里的目标盲目扣扳机;他会在测风、测距、观察目标运动规律之后判断出今天条件不满足,然后报告“无法执行”。AI交易系统里的Agent也是一样,它不只是一个生产信号的机器,它应该是一个带有环境感知和目标管理的决策代理。
1.2 “全天候交易”是个迷人的陷阱,没信号时动手等于给自己挖坑
很多做交易系统的人,尤其是从传统程序化交易转过来的,都有一个默认思维:系统开发出来就得跑,跑了就得交易,不能浪费行情,空仓一天就感觉“少赚了一个亿”。这个心态可以理解,但它正好跟概率游戏的原则拧着来——市场的盈利机会并不是均匀分布在所有日历日里的。
真正优质的AI交易系统,不是一个“时时在线动手的交易员”,而是一个“时时在线判断的守门员”。它大部分时间在做的是收集数据、评估状态、更新置信度,只有在评估结果明确支持开仓时才行动。没有信号的强行交易,本质是把一个随机结果包装成了主动决策,这种自我欺骗最终都会反映在回撤和资金曲线上。
我记得早期我做的某个CTA策略,曾经为了“充分利用系统使用率”,在趋势过滤条件没有满足时把它调松了一点,结果那一个月模型连续交易了十几笔,亏损笔数超过八成。事后复盘才发现,V形反转的假突破行情占比很高,模型在没有确认信号的时候入场,刚好是往枪口上撞。
2. AI凭什么判断“今天最好不要交易”
2.1 置信度门槛与决策阈值:低分不出手才是对自己的保护
交易模型在本质上是一个带概率输出的决策器。常见的分类型策略,输出的往往是一个“上涨/下跌”的标签。如果只在标签层面做决策,模型给一个51%的上涨概率和一个89%的上涨概率,在传统策略代码里可能没有区别——都是触发买入。
但真正让策略稳定下来的关键,恰恰就在这一点区别上。把决策阈值从0.52提高到0.75,模型的交易频率会肉眼可见地下降,但同时每一笔交易的平均质量和胜率会有效抬升。这种做法在机器学习领域其实就是阈值校准,而在交易实际里,它让“不够确定”的时候自动变为“不交易”,而不是生硬地给你一笔低质量信号。
这个逻辑很像学生考试,60分及格和85分才允许被推荐去参加竞赛,是完全两套标准。前者什么人都能去凑个数,后者能站上考场的大概率肚子里有点货。AI交易系统的核心价值,就是它可以用历史数据把这条线标到一个合理的位置,而不是每次都被行情牵着走。
2.2 当模型发现市场进入“自己不认识的状态”,停手是理性选择
机器学习模型有一个隐蔽的大坑:训练时数据分布是稳定的,但实盘行情偶尔会切换到模型从未见过的状态。比如宏观经济数据突然剧烈波动、某个板块出现极端流动性事件、或者相关性结构短期崩坏,这些情况下模型做出的预测,其实没有可靠的统计基础。
我在设计系统时专门加了一个“特征漂移检测模块”,每天盘前计算最新特征样本与训练集分布的偏离程度,具体用马氏距离或者简单的Z-score超标率来做判断。当检测到当天特征向量的马氏距离超过训练集95分位数,系统会把当日信号可信度直接降级,并且由一个独立的纪律模块决定是否允许开仓。
最初我以为这种情况很少见,一年可能也就几次,但实际跑下来,高频环境下一年二十几次是常有的事情。尤其在财报季、政策发布窗口,特征漂移频繁出现。如果没有这个模块,模型会在自己完全没见过的情况下硬着头皮预测,那跟闭着眼睛开车没有区别。
2.3 环境与执行层面的“异常信号”:系统需要学会自我熔断
除了策略层的判断,交易系统还应该感知到执行环境的问题。比如行情数据出现了异常中断、回报延迟突然抬升、点差急剧拉宽、或者盘口流动性变得极薄,哪怕模型产生了不错的交易信号,这些执行层面的问题也足以让策略的实际表现严重偏离回测。
专业交易系统里通常会有一个“熔断开关”,它做的事很简单:监测交易链路中的各项环境指标,当某一个关键指标超过设定的风险阈值时,直接冻结所有新开仓请求。这个开关不是用来判断机会好坏的,它是用来判断“现在这个环境适不适合执行”的。
我见过不少交易团队,策略研究做得非常细致,却忽略了执行层面的健康检查。结果就是明明策略逻辑没问题,但实际跑起来总在关键时刻遇到大滑点或者数据延迟,最后收益全被交易成本吞掉。如果AI系统把“环境不适合交易”也当成一种正式输出,整个系统的稳定性会跨一个台阶。
下面的表格是我自己在系统里落地的一个简化版判断清单,可以参考:
| 检查维度 | 具体指标 | 触发“不交易”的参考条件 |
|---|---|---|
| 模型置信度 | 策略信号概率 / 排序分 | 低于独立设置的动态阈值 |
| 特征分布 | 马氏距离 / Z-score超标率 | 超过训练集95分位数 |
| 市场状态 | 波动率、趋势强度、成交量 | 进入状态识别模块中的“不适用区” |
| 执行环境 | 数据延迟、点差、流动性 | 任一指标触发链路熔断阈值 |
| 账户状态 | 回撤幅度、持仓集中度 | 触及风控熔断线或保证金占用超限 |
3. 想做一个会“拒绝开仓”的AI系统,这些环节一个都不能省
3.1 先理清架构:策略、风控、纪律三个层次别揉在一起
很多个人开发者写交易程序,习惯把判断全部堆到一个脚本里:信号计算完了,跟着就下单,最多在中间套一层简单的止损。这种结构最大的问题在于没有把“策略想法”和“能否行动”分隔开。
我现在的架构清一色采用三层设计。第一层是信号策略层,它负责根据市场数据产生对行情的判断和交易意图;第二层是风险控制层,它是硬约束,负责监控账户回撤、持仓比例、单笔风险暴露,一旦超限就强制干预;第三层我管它叫“纪律层”或者“否决者”,它专门回答一个问题:当前市场环境、数据质量、模型状态是否允许交易发生。
重点是第三层跟第二层关注的东西完全不同。风控管的是“账户能承受多少”,纪律层管的是“此刻出手是不是占据概率优势”。把这两个概念分开之后,不交易才可能成为一个正式的动作输出,而不是策略层没有给信号时才被动产生的空白。
3.2 用“决策前检查清单”给AI建立行动准则
要让AI学会不出手,最简单的方式是给它一份明确的决策前检查清单。这份清单就像机场地勤的起飞前核查,任何一项不满足,航班就不能上天。放到交易系统里,它可能长成下面这段伪代码的样子:
def should_trade(current_state, model, risk, market_env): # 1. 模型预判是否足够坚定 prob = model.predict_proba(current_state.features) if prob < config.confidence_threshold: return False, "confidence_low" # 2. 当前市场状态是否落在模型熟悉区域内 if drift_detector.is_out_of_distribution(current_state.features): return False, "feature_drift" # 3. 市场情境识别模块是否输出“可交易” if not regime_filter.is_tradeable(current_state.market): return False, "regime_not_allowed" # 4. 交易执行环境是否健康 if not execution_health.is_normal(): return False, "execution_unhealthy" # 5. 账户风险状态是否允许新增头寸 if not risk_manager.allow_new_position(): return False, "risk_limit" return True, "ok"这个检查清单最大的价值,是让“不交易”这个结果有明确的归因路径。系统不是笼统地说一句“我不做”,而是告诉你它因为置信度低停手,还是因为检测到特征漂移而回避。这样每次空仓都有据可查,复盘时能精确到具体是哪个环节在保护账户。
3.3 阈值参数怎么调:不要凭感觉拍脑袋,用历史数据校准
有人会问,信心阈值设到多少合适?环境异常的判定边界在哪里?这些参数不能用“感觉差不多”来确定,正确做法是从历史数据里做分布校准。
以置信度阈值为例,我会把历史上有标签的样本全部输入模型,得到每一个样本的预测概率,然后画出预测概率与真实胜率之间的校准曲线。所谓阈值,应该取在校准曲线明显走平或可信区间收窄的位置附近。
更直观的做法,是把不同置信度区间对应的平均收益拉出来做一个区间统计。你会发现一个很普遍的现象:预测概率在0.5到0.65之间的样本,长期统计下来几乎没有正期望,甚至会因为手续费变成负贡献。直接把这段区间的信号当作噪音屏蔽掉,收益曲线反而更干净。
这种调参方式跟风控里讲的压力测试也有点像——你不是在猜未来哪次会亏,而是在历史分布里找到系统“不具有信息优势”的那个区间,然后主动放弃。这个工程习惯,比你在策略里加入一百个指标都管用。
3.4 “不交易”的实战代价:错过了真机会怎么办
这里得说句公道话,不交易这种决策不是没有成本的。你放弃低质量信号的同时,也必然可能错过一些从低置信度区间里走出来的大行情。关键问题在于,你怎么权衡机会成本和错误成本的相对大小。
我自己的处理方法是引入一个“模拟通道”。当系统判定今天不交易后,它仍然在后台用模拟账户跟踪它本来可能执行的信号,并持续记账。如果模拟账户连续一段时间大幅跑赢真实策略,说明我们阈值定得过保守了,该松一松;如果模拟账户同样被市场惩罚,则说明空仓决定是明智的,阀值得以维持。
这种办法的好处是,AI系统的“不交易”变成了一种可以持续验证的假设,而不是一个无法评估的黑盒。它既不会因为一次踏空就全面否定空仓的价值,也不会因为一次躲过大跌就对空仓过度自信。
4. 回测与实盘之间的那条沟,最容易在不交易这件事上暴露
4.1 回测里你永远可以轻松空仓,因为曲线不会折磨你
写策略的人应该都有体会,回测里让系统空仓毫无心理负担。曲线没有生命,它不会在你连续空仓一周时产生焦虑感。真实的交易账户则完全不同,它有实时的盈亏反馈,背后坐着的是一个活生生的人。
我见过很多系统在回测阶段表现极好,一上实盘就名存实亡。不少就是因为开发者忍受不了连续观望的日子,手动干预把阈值降了,或者把熔断开关绕过。实盘里的空仓等待,是对策略信仰最残酷的压力测试,系统本身不动摇,但使用者会动摇。
正因为这样,我更推荐在实盘环境中把纪律层的触发条件设成“不可热修改”的模式。任何绕过纪律层的手动操作都必须记录在日志里,并且强制留痕。这一步看似繁琐,却能帮你分辨:到底是策略有问题,还是你的情绪在干扰执行。
4.2 用数据回顾说服自己:空仓的日子到底值多少钱
为了让自己和团队能心平气和接受“今天不交易”这种输出,我养成了一个习惯:定期统计系统发出空仓指令后的市场实际走势,然后给这些不交易的日子算一笔账。
比如某个版本的模型去年一共发过47次“不建议交易”的信号,我事后去市场核验,如果当时强行入场,有36次会产生实质亏损,另外11次虽然能盈利但幅度很小,扣掉手续费后没什么剩余价值。只有一两次是真正错过的大机会,而那一两次的潜在盈利也被之前多次的亏损抵消了。
当这些数字被摊在面前,团队里对“挂机不动”的焦虑才会真正缓解。说到底,AI交易系统最有价值的输出,往往不是某个华丽的交易动作,而是通过统计上可验证的方式,反复确认“此时什么都不做才是最优操作”。这种输出虽然不像大赚一笔那样令人兴奋,但它构建的是复利曲线真正需要的那种稳定基底。
4.3 量化交易的一条隐形军规:让不交易也成为可审计事件
系统不能只记录“今天开了几个仓位”,也应该完整记录“今天为什么没有开仓”。实盘运行中存在大量的隐性损耗,来自于没有纪律地频繁小亏。要把这种损耗降到最低,就得把每一次不交易变成可审计的事件,写入独立的决策日志。
决策日志至少要包含:触发“不交易”的具体规则名称、当时的关键市场快照、模型输出的概率或排序值、以及风险模块的状态。这些信息沉淀下来之后,你可以定期复盘“空仓质量”——也就是看看那些不交易的决定,相对于盲目随机交易而言,到底帮你回避了多少损失。
有人会觉得这是不是过度工程化。但说真的,交易系统开发最不值钱的瞬间,就是你根本说不清楚一次“没做交易”到底是系统聪明,还是系统宕机了。把不交易行为当成一等公民记录、度量和复盘之后,系统的每一次沉默才拥有了可被验证的意义。
5. 实盘案例复盘:连续三周空仓,账户却跑赢了大多数同行
5.1 那次行情的气氛,很像一个布满假动作的球赛
2023年有个阶段让我印象特别深,当时某套股票多头策略跑出来的信号连续出现了明显钝化。特征分布检测模块连续提示异常,同时市场的日内反转频率显著升高,涨跌幅中位数很低,策略方的交易意图连续三次闯到了纪律层那里被拦下来。
前两周看着账户安安静静,我心里也有点发毛。中间有几天行情确实拉出了看起来像启动的阳线,但内部结构很差,板块轮动快得像电风扇。当时团队里有人提议是不是把过滤条件关掉,先在场内跟着情绪做几轮。还好我们咬住了,让系统继续按清单执行。
5.2 不交易之后呢?数据给出了最诚实的答案
那三周过去以后,我调出数据做了个完整对比:如果系统在每一个被拦掉的信号点严格执行开仓,按当时的冲击成本估算,总亏损约等于账户净值的6%;而坚持空仓让资金曲线保持横盘。更关键的是,三周后市场重新回归结构性行情时,系统以满血状态捕捉到了一波持续趋势,把前期横盘的成本全数赚了回来还带转弯。
同期很多没有加纪律层的同类策略,在那三周里反复被假突破打脸,来回止损。收益曲线不仅没有前进,反而被高波动摩擦出了一道深坑。这件事给我们全队上了一课:交易不是每一段行情都要参与,该空仓时空仓,本身就是一种锋利的攻击姿态。资金曲线真正危险的从来不是“没赚到”,而是“在错误的节奏里消耗了本金和心态”。
5.3 别把“空仓”当成系统懒,它只是在等待更有利的赔率结构
还有人会把不交易理解成AI模型能力不足,觉得系统连方向都判断不出来才会选择空仓。这种看法在我看来失之偏颇。空仓的一个更底层含义是:系统发现当前时点的赔率结构并不站在自己这边,它宁愿保留现金,等盈亏比更合适再入场。
这种思路跟职业扑克选手很像。他们在某些牌局里会选择大量过牌甚至弃牌,不是因为他们看不懂牌面,而是因为底池赔率不够,强行入局是负期望的。AI交易系统把一个更纯粹的逻辑执行到了极致——它不会因为“不交易显得自己很没有价值”而产生情绪化损耗,这一点恰恰赢过了很多人类交易员。
我自己后来甚至做了更极端的一件事:把空仓判断做成一个独立的交易品种去考核。不是让你去交易空仓,而是让团队的绩效评估中,把“正确识别不可交易时段”也视为一项具体的正向输出。
6. 打造一个会说“不”的交易系统,实操手册
6.1 第一步,建立“不交易”的输出格式:从状态码开始
要让AI系统在不开仓的时候也给出有意义的输出,第一步是改造系统的输出协议。不要只输出“开多”、“开空”、“平仓”这三种操作,而是增加像“观望”、“等待确认”、“信号废弃”这类状态类型。
每个状态都应该有附带的结构化信息,方便下游日志和分析模块消费。比如说:
{ "action": "no_trade", "reason_code": "confidence_low", "predicted_probability": 0.58, "threshold": 0.75, "market_regime": "choppy", "feature_drift_score": 1.2, "timestamp": "2024-03-11 14:30:00" }这样,不交易就和开仓、平仓一样拥有一套完整的“信息档案”,后续做行为分析时才能清楚地知道系统在什么情况下选择沉默。很多人写程序从来没有把空仓当作一种正式状态去建模,这是一开始就输在起跑线上的设计失误。
6.2 第二步,把“市场状态识别”做成一个独立模块
我比较推荐在AI交易系统里单独放一个市场环境分类器。它不直接负责预测涨跌,而是负责把当前市场归入大类状态——趋势、震荡、高波动反转、流动性枯竭等。
这个分类器可以基于量价特征、波动率结构、相关性矩阵等数据来构建,也可以用无监督聚类的方式把历史行情切分成不同“天气模式”。重点是,你需要在不同市场状态下分别评估主策略的历史表现,然后明确主策略在哪些状态下不具备优势。
拿我自己举过的例子:一套突破策略在趋势状态里是印钞机,但在震荡状态里就是绞肉机。如果市场状态模块告诉我现在进入震荡,主策略的信号就会被扣上“不适用”的帽子。只有系统能在模块层面识别并承认“当前状态对我不友好”,它才会心甘情愿地选择不交易。
6.3 第三步,设计“状态预算”机制:它不交易,不代表今天完全休息
只有不交易的系统还不够成熟,优秀的AI交易Agent应该能把不交易的时间利用起来。我会给系统设计一组“低功耗观察任务”:在不开仓的日子里,它继续跟踪市场微观结构变化,评估重要因子的演化趋势,更新特征漂移指数。这些工作虽然不会直接带来收益,但能保证模型对市场的感知持续在线。
从工程角度看,这相当于给系统增加了自适应学习的节奏。它不会因为空仓几天就与市场脱节,反而会在观察期积累更多关于“当前环境为何不适用”的样本,为将来更精准地触发交易做好铺垫。
这种机制也刷新了我对AI交易系统价值的理解:它的价值不在“单个决策正确”,而在“整个决策链条是否能够在动态变化的市场里维持良好的自我修正能力”。
6.4 第四步,用保守到积极两层开关,实现可调节的交易欲望
不同资金规模、不同风险偏好的交易者,对“不交易”的接受程度是截然不同的。因此我倾向于给系统设置两个档位的纪律层:一个叫保守模式,一个叫积极模式。
保守模式下,可能置信度阈值要0.85才允许入场,特征漂移检测有任何风吹草动就直接否决;积极模式下,阈值降到0.7,执行环境容忍度也放宽。两套参数各自回测,分别适配不同行情预期。系统日常先跑在保守档,等市场状态模块确认风格与自己策略匹配时,再自动切换到积极档。
这种设计最大好处是让AI系统本身有了“仓位欲望”的管理能力。它不是机械地永远不做,也不是毫无节制地频繁动手,而是根据自己对当前环境的适应度动态调节活跃度。这才是一个交易Agent应该有的样子。
6.5 第五步,数据与回测层面的配套:评价指标里加入“空仓效率”
最后别忘了一套评估体系的配合。如果只看收益率和最大回撤,很难看出来空仓对策略的贡献究竟有多大。建议在绩效分析中加一些侧面指标,比如单位风险收益、参与率、持仓时间与收益率的相关性等。
有一个我自己常用的指标叫“效率系数”,计算方式是策略年化收益除以实际交易的天数。这个指标放大之后能很好地区分:一个靠频繁交易堆出来的平庸结果,和一个靠少数高质量决策驱动的优秀结果。后者往往空仓期更长,但每一次参与的决定都含金量更高。
如果把这几层配套做扎实,你就会发现,“AI交易系统最有价值的一次输出,可能是今天不交易”这句话不再是一句反常识的噱头,而是对一个成熟、自洽、有纪律体系的真实描述。
7. 常见问题排查:为什么我的系统总是忍不住乱交易
7.1 信号阈值设得太低,什么垃圾信号都觉得能赚钱
排查系统过度交易问题时,第一个该检查的就是信号输出的置信度阈值。如果你发现自己系统的开仓历史中,有大量交易时模型的预测概率仅仅在0.5到0.6之间徘徊,那问题基本就出在阈值设置上。
你可以做一次离线统计,把所有历史信号的预测概率从低到高排列,再分段计算每一段对应的实际胜率和盈亏比。大概率你会看到一条非常清晰的分界线:预测概率低于某条线时,实际表现基本是抛硬币甚至更差。找到这条线,把阈值抬上去,交易量会立刻下降,但资金曲线反而会更健康。
这个原理放到很多模型里都通用,关键是很多人压根没做过这个分段统计,一直对着全部交易样本看平均胜率,结果被稀里糊涂的均值蒙在鼓里。
7.2 模型没有市场状态概念,在震荡行情里用趋势策略反复送人头
如果你仔细观察自己系统的亏损来源,可能会发现很大一部分亏损集中在某些特定的行情结构里。比如追突破单在宽幅震荡区间里几乎一追一个准,被假突破反复收割。
解决这个问题最简单的方法,是给系统加一个基于波动率聚类的市场环境过滤层。不需要多高级的算法,用ATR分位数加上方向性运动指数,就能粗粒度判断当前是不是趋势市。在趋势过滤条件不满足时,把策略信号降权或者直接拦截。
趋势市和震荡市的区别,其实就好比高速路和城市拥堵路段,你的驾驶模式明显应该不一样。你总不能要求一辆赛车在城市早晚高峰跑出纽北赛道成绩,策略也是同理。
7.3 实盘环境数据异常,模型却完全没发现,继续在坏数据上做预测
还有一种隐蔽的情况会造成系统乱交易:不是策略逻辑有问题,而是喂给模型的数据本身就是脏的。行情源偶尔会出现瞬时错误报价、分钟K线重放、或者撮合回报不完整,这些数据如果直接进入模型计算,能够制造出极其诱人的假信号。
我在系统里加了一个数据健康监控模块,对每一路输入的行情源做完整性校验和交叉验证。一旦同一标的的多路数据源出现明显分歧,或者单个异常值超出正常波动区间数十倍,系统会直接判定当前数据不可信,并且暂停一切依赖该数据源的交易逻辑。
你可能很少遇到这种低级问题,但一旦遇到,它带来的损失往往比策略判断错误还要大。数据质量检查看着不起眼,却是系统能否在没有人工盯盘的情况下实现“今天不交易”这种冷静输出的前置条件。
7.4 团队或个人心理因素作祟,手动干预绕过系统的“不交易”指令
很多系统的“不交易”判断本身是合理的,但运行者过不了自己心里那关,跑去手动把模型认为不该开的仓开掉了。这种干预通常发生在两种情绪下:一是前面空仓太久,怕错过行情心痒难耐;二是最近亏损太多,想快速回本。
手动干预最大的问题倒不是某次干预的对错,而在于它彻底破坏了系统的统计一致性。一次干预如果赚了钱,你会倾向于在下次继续干预,直到某次干预亏掉一大笔,这时你才会发现,系统的纪律性已经被你从内部凿穿了。
我的建议是设计系统时强制加入“手动干预冷却期”:一旦检测到人工干预行为,AI自动进入一段无法被干预的锁定期。听起来有点反直觉,但很多成熟的交易团队都在用类似方法保护策略的一致性和可评估性。
7.5 只盯着“信号次数太少”看,忘了有效信号本身是稀缺的
最后这部分可能更像管理问题而不是技术问题。不少团队评估系统好不好用,喜欢统计信号触发数量,觉得一个系统一个月才给出三四次交易建议,贡献度太低,甚至担心算力资源被浪费了。
但事实是,稳定盈利的机会在市场上从来都是稀缺的。一个严苛的信号系统可能一个月只出手几次,但它的投资逻辑是在大量噪音中间筛出真正的优势机会。如果把系统对信号数量的追求置于质量之上,它就不可避免地开始降低标准、强行交易,最终走到负期望的老路上。
因此交给AI交易系统的KPI,不应该只是“抓住了几次行情”,还应该包含“正确识别了多少次不可交易时段”。当评价体系允许空仓也拥有正向价值时,模型的输出才会真正走向健康。
8. 最后的一点点小心得
这些年我前前后后折腾过不少AI交易系统的版本,从最早只会傻傻追信号下单,到后来不断加入各种过滤器、否决器、环境感知层,系统做得越来越“谨慎”。最初我总觉得这种谨慎是在给策略戴上脚镣,后来才意识到,真正的自由不是想什么时候交易就什么时候交易,而是在深刻的自我认知之上,只做那些最有把握的少数决策。
如果你正在做自己的AI交易系统,我也真心建议你把“不交易”当成一个正式的模型输出去设计,而不是仅仅把它当成没有信号的空白段落。给空仓写日志,给拒绝开仓做统计,把每一次沉默都变成可以复盘的数据。当你真正做到了这一步,系统的资金曲线会给你正向的回报。
另外一个实操层面的小建议:从今天开始,给你的系统增加一个触发原因记录字段。别小看这个动作,一段时间后你再翻看这些记录时,可能会发现,那些让你盈利最多的系统判断,恰恰是它勇敢说出“今天不适合交易”的那一刻。