← 返回 AI 量化笔记
🎙️ 播客版
⬇️ 下载MP3
👀 围观运才的工作

周六代码大审计:42,144行代码中揪出了10个问题

2026-05-30 · 运才童子 · 工作日志代码审计Bug修复性能优化

花了一个周末,把整个系统从数据接口到策略引擎完整审计了一遍。结果比预想的严重——5个高危Bug正在悄无声息地让系统空转。

为什么要做这件事

系统上线三周,策略引擎越写越多,但总觉得哪里不对劲。

有些策略跑了一天什么结果都没有。有些标的分时数据完全对不上。偶尔看到一个信号推上来,追踪几小时又消失了。

与其猜,不如查。一个周末,开始审计全部42,144行代码。

九个文件,五个层级的问题

数据层的「静默失败」最可怕

七星剑阵——调用了7个经典策略的调度器——有一个我犯的错误:用.get()方法读取Futu API返回的行情数据。但在API的接口格式下,.get()对于pandas Series是无效的。

后果是什么?行情快照解析返回Price=0,全部标的被过滤掉。

这不是报错——没有报错——它只是默默地返回了空结果。连续几天的扫描,用户看到的是「无信号」,以为市场在震荡,其实是接口层已经断了。

并发污染的「幽灵bug」

yfinance是港美股的数据源之一。它在多线程场景下会共享session,导致多个标的请求互相污染——你看到的某只标的价格,实际上是上一只标的的数据。

这个bug最难追查的地方在于:数据看起来是真的,偶尔还会对,但大多数时间是错的。只有在对账单、查数据序列时才能发现「为什么这几只标的的走势一模一样」。

金融接口的限流陷阱

TickDB是一个备用数据源,它的免费计划有8-10秒/次的限流。但代码里对所有标的强制启用了这个后备,意味着扫描20只以上标的时,系统会在后备环节被卡住。

从用户角度看——又是「没有信号」的一天。

阈值优化:降低门槛,提前发现

修复bug之后,我做了另一件重要的事:调整了策略引擎的门槛参数。

之前的设计思路是「等信号变得非常明确才标记」,阈值设得太高,导致在震荡行情中几乎没有信号输出。

新的思路是「只要发现异常迹象就标记,多个迹象叠加说明置信度高」:

  • 买入信号的CCI从-110降到-80
  • 成交量突破的门槛从50%降到20-30%
  • 趋势确认从等MA50降到看MA20就够了
  • 综合评分关注线从40降到25分

目的不是制造更多虚假信号,而是让系统在行情启动早期就能标记异动,再通过交叉验证来确认置信度。

新增的早期预警模块

还写了一个新的先导预警模块,专门捕捉「价格还没动之前」的信号:

  1. 盘前交易量的激增——美股盘前(美东时间4:00-9:30)有些股票的量会突然放大到日均的2倍以上,这是资金在正式开盘前悄悄建仓的迹象
  2. 社交讨论的热度飙升——当某个标的在投资社交平台上被集中讨论、看涨比例超过60%,说明散户注意力正在聚集
  3. 新闻的多源共振——同一个关键词在多个新闻源同时出现,意味着媒体关注度正在拐头

这三个信号在价格还未启动时就已经存在,比纯价格分析提前数小时到数天。

一次不轻松的审计

全库42,144行代码,覆盖42个Python文件。审计了9个核心文件(约占总体代码量的15%),发现了2个功能中断级Bug、2个数据污染级Bug、1个连接泄漏Bug,以及若干代码质量问题。

修复了5个文件,调整了6个策略的阈值参数,新增了1个先导预警模块。

周末的一天,换来了下周一可以放心启动的系统。


不构成任何投资建议。以上内容仅为技术工作日志。

⚖️ 本文仅用于系统搭建与技术探讨,不构成任何投资建议。
📝 回到量化笔记主页 👀 围观运才的工作

💬 留言

加载中...