Archive

17 threads

PinnedPinnedPrivate

A 股量化实盘之路(连载)

把「回测里好看」变成「真金白银能下单」是另一场战争。这个 Thread 记录从信号到实盘的全过程,分多次更新。

架构上拆成两个节点:一个香港的信号节点(自动跑信号),一个执行节点(接券商 QMT 下单)。信号和执行的 IP 分离,双节点各自绑 MAC。

PinnedPinnedPrivate

里程碑:真金试单通了。 在国金证券的 QMT 上,用最小仓位跑通了真实下单链路(Phase D)。到这一步,从环境过滤 → 信号 → order 生成 → 券商执行的整条线是活的了。

下一步(Phase E)是接真信号 + 配 cron 自动化。资金约束下的建仓研究先关闭:20 万的现状下 order 生成能覆盖到 TOP60,补位和 top20 变体都试过,不采纳。


PinnedPinnedPrivate

TIL:SIWE 登录里 EIP-55 大小写校验和 ABNF 的 ASCII 洁癖

做 Sign-In with Ethereum(SIWE)时踩到两个协议级细节。

一是地址必须做 EIP-55 混合大小写校验和,不能只做小写比较,否则合法地址会被判非法。二是 SIWE 消息体走的是 ABNF 文法,对 ASCII 有洁癖——非 ASCII 字符会让消息解析失败。这类协议实现的坑,错误信息通常不直接告诉你是大小写或编码问题,得回去读规范。


PinnedPinnedPrivate

TIL:淘宝 MCP 搜索页的价格是骗你的

用淘宝 MCP 自动比价时发现:搜索页显示的价格是起步价,不是真实成交价。 实测某商品搜索页价和进详情页点了 SKU 之后的真实价差了 2 倍。

所以脚本不能信搜索页价,必须进详情页选完 SKU 再读价。另一个坑:搜索关键词要短,太长会让结果退化成推荐流,搜不到你要的东西。


PinnedPinnedPrivate

TIL:pandas 3.0 没有破坏结算引擎

把一个渠道分损结算引擎从 pandas 2.x 升到 3.0,原本担心 copy-on-write 之类的破坏性改动会算错账。实测:selftest + 两期端到端对拍,数字一致,pandas 3.0 没破坏它。

附带一个环境坑:brew 装的 python3 是 externally-managed,直接 pip 装不进去。得用独立 venv(~/.venvs/settlement/bin/python)跑引擎。


PinnedPinnedPrivate

vocab:一个 macOS 菜单栏背单词 app 的离线内容流水线

在做一个个人用的 macOS 菜单栏背单词 app,SwiftUI 的 MenuBarExtra + SwiftData,学习状态走 CloudKit 同步。

有意思的部分在后端:一条 Python 离线内容流水线,ECDICT(812MB)做事实层,韦氏 MW Collegiate 第 11 版 mdx 做可选增强(补 respelling 和音节),配 schema + QC + validate,已经端到端跑通、出了 35 词的样例包和 14 个单测。前端等有付费开发者账号再上,CloudKit 先 stub。


PinnedPinnedPrivate

WC26:一个赛前冻结、每日闭环的世界杯预测器

2026 世界杯预测器,已经上线在 wcelo.com。技术栈是 Elo + Dixon-Coles + 蒙特卡洛(495 个对位),赛前把预测冻结、赛中每日 cron 拉赛果更新。

它同时是一个「现场实验」:预注册了三个命题,包括 LLM 预测 vs 纯统计模型谁更准。关键工程决策是预注册评分——评分规则在开赛前就写死,避免赛后挑一个对自己有利的口径。前端后来换过一版「预测仪器」皮肤(示波器磷光风)。


PinnedPinnedPrivate

这个博客本身:用 Jant 自托管在 tt.hn

tt.hn 跑在开源博客引擎 Jant 上,Docker 自托管在阿里云,数据库是 SQLite,数据完全自己掌控。

选 Jant 而不是传统博客,是因为它的内容模型对我更合适:不是「憋长文」,而是 Note(随手写)/ Link(转发带评注)/ Quote(摘录)三种轻量格式,用 Thread 追一个课题、用 Collection 做分类。它还带 HTTP API 和 MCP——所以这些开篇内容,是我让 Claude 直接调 API 灌进来的,不是手敲的。

关键决策:发布走 API + 脚本而不是后台手填,这样内容可版本化、可批量、可复现。


PinnedPinnedPrivate

白盒渗透审计作业手册的几条铁律

把跨项目的白盒审计沉淀成一份作业手册,几条不能破的铁律:

  • 隔离:审计动作要在沙箱化的子代理里跑,不在源码环境里跑。

  • 靶子边界:任何 -u 之类的参数只指向 docker 靶子,不指向真实生产。

  • 脱敏 + 闸门:值级脱敏 + gitleaks 作为出库闸门,产物里不许带真实密钥。

  • 方法论纪律:读原始日志再下结论,别信中间层的摘要。

  • 收尾清理:每次跑完按 checklist 收回临时凭证、靶子、密钥。

一类漏洞的白盒审计成本大约 20 美元。下一个项目从头按它做。


PinnedPinnedPrivate

Anthropic API 封香港:判断法与绕法

Anthropic 的 API 走 Cloudflare,而 Cloudflare 对香港区做了地域封锁——所有香港节点直连必然 403,响应头里能看到 cf-rayHKG

判断法:直连 403 + cf-ray 落 HKG,基本就是地域封锁,不是你的 key 或网络的问题。

绕法:在一个非封锁区起一台机器做 nginx TLS 透传代理(SNI 透传,不解密),用自签证书(IP 写进 SAN)、只放行你自己的源 IP。香港的业务机器把请求指到这台代理即可。这个坑对所有部署在香港的项目通用。


PinnedPinnedPrivate

一服务一机器:别让新服务搭车

一条用真金白银换来的运维原则:新服务一律新开机器,不往正在跑别的服务的机器上搭车。

实害有两个。一是数据污染:一台机器上同时跑网站和一个每 5 分钟轮询的任务,结果网站的访问统计被同机任务的自访问污染到 88%。二是安全面耦合:两个服务共用一台机器,一个的攻击面就是另一个的。

复用网络(VPC / 安全组)可以,复用机器不行。有云 CLI 能自助开机器,这点成本远低于事后拆解的代价。



PinnedPinnedPrivate

Anthropic web_search 的版本陷阱

接 Anthropic 的 web_search 工具时踩到一个隐蔽的版本坑。

web_search_20260209 引入了 dynamic filtering,会在中间插一层 code_execution。副作用:你的 query 不再出现在流式 input 里,如果你按「query 出现次数」统计搜索数,会恒定数到 0。而且在代理链路下容易触发 900s 超时或 pause_turn。

对策:简单场景强制用老版本 web_search_20250305;搜索计数一律改看 web_search_tool_result 块,别数 query。附带教训:credit 余额 400 报错容易被误诊成没搜到,其实是配额问题。


PinnedPinnedPrivate

本地 LLM 驱动安全审计:能力边界在上下文,不在模型大小

想用本地模型(LM Studio 跑 Qwen)驱动一套白盒审计 rig,省订阅钱。结论:Claude 路径能跑通并产出真实漏洞,本地 qwen 的真正硬墙不是智力,是上下文

真模式下,子代理(Task)去读一个 37 文件的服务,输出直接撑爆约 131k 上下文,在很早的一步就崩——和仓库总大小无关,分解也救不了,因为单个子任务本身就装不下。大上下文还慢。

配置层面全都能修通:thinking 必须关(否则输出空 / 不合规)、provider 走 lm_studio、ctx 拉到 131k、温度 0.2。修通之后经 LiteLLM 能正确吐 Anthropic 的 tool_use。

还纠正了自己两个操作错误:计数正则写坏了误判「qwen 不记录工具调用」(其实调了 9 次);以及在 111 turn 手动停掉就下结论——实际 Claude 也要 100~150 turn 才开始记录。别带着预判去验证,会自我实现。


PinnedPinnedPrivate
回测里最贵的一课:一个在 daily 频率上夏普漂亮的策略,接上真实的执行审计后,收益虚高了 6.7 倍。频率越高,你越是在拟合成本没算进去的幻觉。
A 股 E2A 执行审计手记

PinnedPinnedPrivate

永续合约强平价:一个能对拍到小数点后两位的公式

逐仓正向永续的强平价,可以写成闭式:

P_liq = P₀ · (1 ∓ IMR ± MMR) / (1 ∓ fee)

其中 P₀ 是开仓价,IMR 是初始保证金率(= 1/杠杆),MMR 是维持保证金率,fee 是平仓手续费率(取 0.0005)。多头取上面一组符号,空头取另一组。

真正的坑在三家交易所的口径差异:

  • MMR 挂在哪 — 有的挂杠杆档位,有的挂仓位价值。

  • 维持保证金按哪个时刻算 — 开仓时刻 vs 强平时刻。

Continue →

PinnedPinnedPrivate

A 股量化的五层方法论

做了两年 A 股回测,沉淀成五层,任何一个策略都往这个骨架上挂:

  1. 环境过滤 — 先判断当前是不是能做的市场状态。实验反复证明,这是唯一的大杠杆,信号层再怎么调都不如它。

  2. 结构信号 — 趋势 / 截面因子给出候选。

  3. 回踩确认 — 不追高,等回踩再确认入场。

  4. 排序组合 — 多标的按分数排序,等权持有(逆波动、复合倾斜都试过,不采纳)。

  5. 制度审计 — 用 E2A 执行审计对拍,揭穿过 daily 频率虚高 6.7 倍的假象。

从趋势策略撞到天花板后转做截面多因子:动量在 A 股基本无效,size / 低波 / 换手 / 反转有信号。这是当前的主方向。


PinnedPinnedPrivate

可公度法在真实数据上不超随机:一个决定性的负结果

「可公度法」声称能靠周期的整数比预测大事件。我搭了一个统一的证伪框架:同一个 Predictor,配三类零模型(锚点随机 / 比例随机 / 全随机)+ walk-forward + 预注册判定,先在合成数据上验证引擎本身(负控不出假阳性、正控有灵敏度,11 个测试全过)。

然后接真实数据。全球 M≥8 地震(USGS)、沪深 300 的顶底(15% ZigZag 标注)——在可公度法下,两者都不超过随机基线。用它做 A 股择时翻仓,入场点落在随机入场分布的第 3 百分位,没有经济价值。

最有意思的发现:可公度公式唯一稳定的不动点是周期 -2,而这个周期极容易被随机公式重现。换句话说,它「看起来有规律」的部分,恰恰是随机也能给出的部分。

先把引擎在合成数据上验干净,再让真实数据判生死——这套纪律比结论本身更值钱。