今天和朋友聊天,他说套利的本来就厌恶亏损。这句话真妙。
每种策略亏钱的方式不一样。做趋势的,胜率不高,经常小亏,偶尔一次大赚把前面的都赚回来。做套利的,胜率很高,平时稳定赚小钱,但风险藏在某一次很大的亏损里。这两种分布,对人的心理要求完全相反。损失厌恶决定了你能扛住哪一种。
心理学里有个概念叫损失厌恶:亏一块钱的痛苦,大概是赚一块钱快乐的两倍。而且每个人的程度不一样。损失厌恶强的人,很难忍受趋势策略那种连续的小亏,每一笔止损都是一次折磨,往往在大行情来之前就放弃了。他们会自然被套利中性这些吸引,曲线平滑,天天在赚。
身边还有一些朋友,干什么都要对冲。我觉得他们怕的不只是亏钱,更怕“本来可以避免却没避免"的那种后悔。对冲给的不只是风险控制,还有一种心理上的确定感。
所以,是策略在选人。能长期坚持下来的多是跟自己心理结构匹配的那一种。
以前做研究,基本是自己想、自己试。想到一个因子就去回测,效果好就很兴奋,以为发现了什么。其实很多我"发现"的东西,别人十几年前就研究过了。有的早就被证明有效,有的早就被证明只是数据巧合,还有的已经被用到失效了。闭门造车最大的问题,不是慢,是我不知道自己站在哪。我以为在往前走,其实可能在别人走过的路上绕圈,还会重复踩别人已经写清楚的坑。
论文让我看到一个问题已经被研究到了哪一步,哪些方法是靠得住的,哪些结论只在特定条件下成立。站在这些基础上再往前想,才有可能想出一点真正新的东西。当然论文也不是答案。市场在变。
最开始读得很吃力。从第一页读到最后一页,公式看不懂就跳过,读完觉得好像懂了,过几天什么都不记得,更别说用上。现在我会先让 AI 帮我梳理论文结构、解释看不懂的公式、整理变量定义,这省了很多时间。学的越多,越觉得自己知道的太少。每篇论文背后,都是一个人或者一个团队花了很长时间去证明一件很小的事。
我一直觉得学术的魅力之一是学会怎么严谨地提出一个问题,再把它证明出来。
刚开始做因子的时候,我也主要看回测曲线和 IC 均值。后来踩了一些坑,慢慢会多看几件事,记录一下自己现在的理解。
一、预测力:不只看 IC 均值
看 RankIC 而不是 Pearson IC,避免被少数极端值主导。
看 ICIR,均值高但不稳定的因子,实盘体验会很差。
看 IC 衰减曲线和半衰期,它决定了调仓频率,也决定了换手和成本。
看分位数收益是否单调。IC 不错但只有头尾两组有效,说明它可能是非线性的,线性组合会浪费它。
二、纯度:它是不是别的东西换了个名字
加密市场里,大部分"新因子"本质上是 BTC beta、市值、流动性或波动率的变体。
先对这些风格做中性化,再看残差 IC 还剩多少。
再对你已有的因子库做正交化,看边际贡献。一个跟现有因子高度相关的因子,单独再好看,放进组合里也几乎没有增量。
三、显著性:你试了多少次
这是最容易被忽略的一关。
如果你试了一百个因子,挑出最好的一个,它的 t 值是被选择偏差抬高的。有一篇文献说考虑到整个学术界的数据挖掘,新因子的 t 值门槛应该提到 3 左右,而不是传统的 2。
Sharpe 也一样,要用 Deflated Sharpe Ratio,把试验次数、收益的偏度和峰度考虑进去。
回测本身的过拟合概率,可以用组合对称交叉验证(CSCV)估计 PBO。
四、验证方式:时间序列不能随便切
标签有持有期的时候,普通 K 折交叉验证会让训练集和测试集在时间上重叠,等于偷看答案。
要做 purging 和 embargo,把重叠的样本剔掉,再留一段隔离期。
五、可交易性:扣完成本还剩多少
看换手率和成本调整后的 IC,而不是毛收益。
看容量:因子信号集中在小币上的,往往纸面最漂亮,实际最做不进去。
加密市场还有一个特殊问题:幸存者偏差。下架和归零的币如果不在样本里,所有做多弱势币、做空强势币的逻辑都会被高估。
六、寿命:它会怎么死
McLean 和 Pontiff 研究过,因子在论文发表之后,收益会明显下降。公开的逻辑最终都会拥挤。
所以我会持续监控因子收益的滚动表现、和其他因子的相关性变化,以及能观察到的拥挤度。不是找一个永远有效的因子,而是知道它什么时候开始失效。
我从七月下旬开始在推特上发内容。7 月 24 号这个账户有170 个人关注。我没有什么粉丝基础,也没有找人互推。三个月过去,现在5237。很大一部分是运气。赶上 X 现在的算法更看内容本身,白号写的东西也有机会被看到。一开始写做市写高频基建,有人因此关注到我。但后来写得越来越干,自己都不太想看。中间删了不少以前的帖子,回头看有些写得太急,有些理解是错的。写多了才发现,很多事以为自己懂,写出来才知道没想清楚。也有不少朋友在评论区帮我补充和纠正,学到了很多。也认识了新的朋友。我觉得去分享这件事本身就很好。永远学习。永远热爱生活。
最近在读《股票大作手回忆录》。书里反复出现一个意思,市场永远不会错,错的只有人的观点。主观交易表面上是在跟市场博弈,其实一直在跟自己博弈。市场只是一面镜子。
你急躁,它就让你追高。你贪婪,它就让你不肯止盈。你固执,它就让你一路补仓。
所以我觉得做得好的主观交易员太牛了。反人性而为之。强大。
时间在策略里不算一个独立的模块,但它通常以几种身份出现。
1. 状态划分(regime)
最常见的用法。把一天切成几个不同的"市场状态",比如盘前、盘中、盘后、夜盘、休市,每个状态下流动性和波动都不一样。策略先判断"现在处于哪个状态",再决定怎么做。这在研究里叫按时段做条件化(session conditioning)。
2. 风控和执行的开关(gating)
比如重大数据公布前缩量。这类用法不预测方向,只决定"现在能不能交易、该用多大仓位",属于风控层或执行层。给每个时刻打一个时段标签,策略根据标签决定照常报价、停报价,还是平仓。
3. 参数调整
同一个策略,不同时段用不同参数,比如流动性低的时段把价差拉宽、下单量减小。这属于参数随状态变化。
4. 信号本身
时间也可以直接当因子,叫日内季节性(intraday seasonality)或日历效应,比如某些时段波动或方向有规律、月末效应、周一效应。这时它属于alpha 层。
5. 数据和基础设施
交易日历、假日表、夏令时换算、不同市场的时区,属于数据层。这一块不起眼,但错了上面全错。
最近在研究TradFi 永续:美股、韩股、黄金、白银,全都能 7×24 小时交易。
听起来很美好,但这些资产的真价格,是有下班时间的。
美股只在纽约交易时段真正定价。黄金白银跟着 CME 走,每天还有一小时维护。周末,整个传统市场都关了。
但加密不关。
所以在传统市场下班的那些时间里,盘口上的价格到底是谁定的?
没有现货在动,没有期货在动,只有一群人在一个镜像市场里互相猜。
这带来几件很现实的事:
1.同一个标的,一天里是好几个不同的市场
盘前、盘中、盘后、夜盘、休市,流动性和波动完全不一样。用同一套逻辑跑全天,基本等于在某些时段送钱。
2.最危险的是重新开盘那一刻
周末两天,传统市场积累的信息全部压在周一开盘那一下释放。镜像市场的价格可能已经漂了一个周末,开盘瞬间一次性跳回去。
3.日历比想象中复杂
美股按纽交所日历,金银按 CME,韩股按首尔时间,而且只有美国有夏令时。假日也各不相同,比如有的节日美股休市,金银照常开。
把每个标的属于哪个市场、哪天开哪天关全部理清楚,本身就是一项工程。
4.宏观事件是另一套时钟
CPI、FOMC、非农公布的那几分钟,传统资产的波动会集中爆发。
所以时间决定了市场处于什么状态,以及在这个状态下该不该交易。
写了一阵子高频基建,最近注意力更多放在 AI 和链上,尤其是 Hyperliquid。
之前一直在 CEX,自己接触到的只是区块链很小的一部分。最近认识了不少新朋友,每个人的领域和研究都不一样,越聊越觉得不能闭门造车。
很多东西还在学,接下来会多写点这些,学到哪写到哪。
高频基建大致可以分成这几层,从底层硬件一直到上层运维
1. 硬件与网络
机房选址和托管:服务器放在离交易所撮合引擎最近的地方(比如 AWS 东京)
服务器配置:CPU 绑核、关超线程、大页内存、网卡选型
网络:内核旁路(kernel bypass)、多网卡分离行情和下单、专线
2. 时钟与延迟测量
时钟同步(NTP、PTP)
全链路打点:从收到行情到发出订单,每一段花了多少时间
延迟分布统计:看的是 p50、p99,而不是平均值
3. 行情层
连接管理:WS 订阅、断线重连、心跳
解析与归一化:不同交易所格式统一成内部格式
本地订单簿重建:快照加增量、序号断档检测和补数据
数据质量:乱序、重复、丢包、延迟异常的识别
4. 交易接口层(连接层)
交易所适配:每家 API 的差异抽象成统一接口
限频管理:按 API Key 或按 IP 的令牌桶
下单通道:WS 下单、批量下单、撤改单
5. 订单管理(OMS)
订单状态机
成交回报处理与持仓计算
状态对账:本地和交易所的订单、持仓核对
6. 策略引擎
事件驱动框架:行情、成交、定时器事件的调度
低延迟设计:无锁队列、预分配内存、避免 GC
策略和基础设施的接口解耦
7. 风控
事前风控:下单前的仓位、金额、价格偏离检查
实时风控:回撤、库存、敞口监控
熔断与 kill switch:行情异常、延迟超标、交易所故障时停止报价并撤单
8. 数据与研究
行情和成交的全量落盘存储
回放系统:用历史 tick 数据重放
回测与仿真:撮合、队列位置、延迟模型
9. 监控与运维
监控面板:延迟、成交率、PnL、系统资源
告警:分级告警,谁接、多久响应
日志、部署、灰度发布、故障恢复
10. 资金与账户
多交易所、多账户资金调度
费率档位和做市协议管理
回测曲线很漂亮,怎么知道它不是在骗你?
昨天有人问我一个策略会不会过拟合。这个问题问得很好,因为几乎每个做量化的人都被自己的回测骗过。
过拟合最难的地方在于,它看起来和好策略一模一样。曲线平滑,夏普很高,回撤很小。区别只在于,一个找到了规律,一个只是记住了历史。
我自己会看这几件事:
没参与优化的数据上,表现是不是还在。样本内样本外差得越多,越可疑
测试集只能看一次。看完回去调参再看,它就不再是测试集了
参数挪一点,结果塌不塌。好参数是一片高原,过拟合是一根针,参数个数和交易次数的比例。十个参数配五十笔交易,拟合的大概率是噪音
能不能讲清楚它为什么赚钱。换个品种、换个周期还成不成立。只在一个币、一段行情上有效,要打个问号。
样本有没有覆盖完整的牛熊和震荡。没经历过单边大跌的策略,只是还没遇到它的坏日子。收益是不是集中在少数几天。
实盘和同期回测对不对得上。对不上的那部分,就是你的回测在说谎的地方
没有哪一条能单独证明策略没问题。它们只能一条条排除"它在骗你"的可能。
回测不是用来证明策略能赚钱的,是用来找它会在哪里亏钱的。
高频做市基建七:订单状态对账
之前说过行情口径,这次说订单状态。
做市跑久了会发现,最难的不是算价格,是搞清楚自己手里到底挂着什么。
你以为的订单状态,和交易所里的真实状态,存在时间差。下单发出去超时没回 ack,这单到底挂上没有?撤单发了回一个"订单不存在",是已经成交了,还是压根没挂上?
这种不一致会养出两种东西。
幽灵单:盘口上挂着,本地不知道。
僵尸单:本地以为还挂着,其实早成交或撤掉了。
两种都会让库存算错。库存错了,后面所有报价都是错的。
第一,显式状态机。每个订单的状态全部建模,只允许合法转移。超时没回的单不当失败处理,标成 unknown,单独追查。把 unknown 当失败重发,就是幽灵单的主要来源。
第二,持仓只认成交回报。用私有流的 fill 算库存,不用订单回报去推算。私有流也会丢包和乱序,按序号或更新时间去重排序。
第三,clientOrderId 自己生成,保证幂等。重发不会重复挂单。断线重连第一件事,按 clientOrderId 把未决单全部查一遍。
第四,定时对账。拿交易所的真实持仓和挂单跟本地比。上次说 REST 是给你查余额用的,就是用在这里。偏差小,以交易所为准修正本地;偏差超阈值,直接停报价、全撤、重建状态。不要在脏状态上继续做市。
做市的盈亏是用库存算的,库存是用状态算的。
说说 beta 策略的好处
beta 策略有很多中性策略给不了的东西:
一、收益结构
收益天花板高:中性赚的是价差和偏差,天花板被市场结构锁死;beta 的上限跟着行情走,一轮趋势可以抵中性跑一整年
右偏分布:好的趋势类策略,大部分时间小亏小赚,少数几次大行情贡献主要收益。
长期正期望:持有风险资产本身就有风险溢价,beta 是这份溢价最直接的载体
二、容量与成本
容量大:不依赖盘口深度和排队位置,资金规模可以做得很大,而中性和做市的容量往往很快碰到天花板
低换手:交易频率低,手续费、滑点和冲击成本对收益的侵蚀小得多
低基建门槛:不拼微秒级延迟,不需要做市协议和费率档位,对交易所资源几乎没有依赖
三、可解释与可扩展
逻辑透明:赚什么钱、亏什么钱,一句话能讲清楚,归因简单
跨市场可迁移:同一套趋势或动量逻辑,在不同资产和市场上通常都成立
可作为 alpha 的载体:在 beta 敞口之上叠加择时、仓位管理和风控,同样能做出超额收益
四、组合层面
与中性策略低相关:放在同一个组合里,中性提供稳定的底仓收益,beta 提供尾部的上行弹性,两者互补
所以 beta 从来不是坏东西。
它只是需要一个能承受方向波动、资金周期足够长、愿意为收益等待的持有者。
说实话,我个人其实很喜欢研究趋势和 beta。看一轮行情怎么启动、怎么加速、怎么衰竭,看资金怎么从一个叙事流到另一个叙事,这些东西本身就很迷人。我做主观交易吃的大部分也是这份钱。

