ETF Gard · Methodology

方法论:我们怎么算、怎么防作弊 Methodology: how we compute, and how we prevent cheating

这页把方法讲清楚到「一个懂行的怀疑者可以自己复核」的程度。流程公开,参数与内部工艺不公开——怎么做公开,调到多准保密。

This page explains our method in enough detail that a sceptical practitioner can re-derive it independently. The process is public; the tuned parameters and internal tooling are not: how we do it is open, how precisely we tuned it is not.

规则版本 Rules v0.4.1 规则哈希 Hash fb72f74ec46f7d11 更新 Updated 2026-10-05 语言 ZH / EN

1 · 我们做什么、不做什么 1 · What we do, and what we never do

我们做三件事:记录历史、计算统计、公开方法。所有输出都是历史统计与结构性风险说明,动作永远留给用户。

We do three things: keep records, compute historical statistics, and publish our method. Every output is a historical statistic or a structural risk disclosure. Decisions always remain with the reader.

我们不做:推荐买卖、建议买入或卖出、给目标价、承诺收益、发出任何动作指令(含止损、逃命类表述)、提供一键跟单、发布策略信号、预测抄底或必涨稳赚。

We never: recommend securities, suggest buying or selling, set a target price, promise outcomes, issue action instructions, offer copy trading, publish trading signals, or predict market bottoms.

2 · 数据从哪来 2 · Where the data comes from

每条事实记录带两个时间戳:event_time(数据对应的市场时间)与 available_at(该数据真正可得的时间)。所有查询按 available_at 过滤。

Every fact row carries two timestamps: event_time (the market time the data refers to) and available_at (when the data actually became available). All queries filter on available_at.

为什么这是生死线:不按可得时间过滤,就会在历史回测里用上「当时还看不到的数据」——那会让任何方法看起来都很好,却毫无意义。 Why this is the line between meaningful and meaningless: without point-in-time filtering, a backtest silently consumes data that did not exist yet at decision time. That flatters every method, and proves nothing.

We do not redistribute raw price series — our data agreements do not permit it.

3 · 我们算哪些因子(18 个) 3 · Which factors we compute (18)

ETF 是资产包,针对个股的财务报表类因子在 ETF 层面天然失效,所以我们只用「量价 + 宏观状态 + 事件 + 结构」四组。因子只列出名称与方向含义,权重与参数不公开。

An ETF is a basket, so stock-level financial-statement factors do not survive at the fund level. We therefore use four groups: price/volume, macro state, events, and structure. Names and direction only — weights and parameters are not published.

组别 Group因子 Factors(名称与方向 name & direction)
量价组
Price / volume
动量 12-1(剔除最近一个月的中期趋势)· 动量 3-1 · 短期反转 5 日 · 波动率 60 日年化 · 下行波动率与最大回撤 · 90 日日均成交额 · 换手与份额趋势 · 200 日均线偏离 Momentum 12-1 (excluding the most recent month) · Momentum 3-1 · 5-day short-term reversal · 60-day annualised volatility · downside volatility and max drawdown · 90-day average dollar volume · turnover and share-count trend · deviation from the 200-day moving average
宏观组
Macro
收益率曲线斜率(10 年 − 2 年)· 美元指数动量 · 实际利率变化 · CPI 同比动量 · VIX 水平及变化 · 高收益信用利差 Yield-curve slope (10Y − 2Y) · US dollar momentum · change in real rates · CPI year-over-year momentum · VIX level and change · high-yield credit spread
事件组
Events
议息会议日效应 · 通胀/就业数据公布日效应 Policy-meeting-day effect · CPI and payrolls release-day effect
结构组
Structure
资产类别分组(组内相对排名的基准)· 上市年龄(由历史长度推算)与流动性代理(90 日成交额、换手与份额趋势) Asset-class grouping (the basis for within-group relative ranking) · listing age (derived from history length) and a liquidity proxy (90-day dollar volume, turnover and share-count trend)

因子池是活的:新因子必须先通过预注册与检验(见第 5 节)才可能进入,被淘汰的因子会留下记录。 The factor pool is alive: a new factor must pass pre-registration and validation (section 5) before it can enter, and retired factors leave a record.

4 · 怎么裁决 4 · How we adjudicate

我们不看「谁回测最好看」。我们用滚动的前进式竞技场(walk-forward)来判一个因子是否算数:

评分形式(λ 为换手惩罚系数,其取值属内部参数):

S(W) = t( Top 组 − Bottom 组 的月度超额收益 ) − λ × 换手率
S(W) = t( monthly excess return of Top minus Bottom ) − λ × turnover

We do not rank factors by how good a backtest looks in isolation. A factor only counts if it survives a rolling walk-forward arena with a frozen, never-retuned test window.

5 · 怎么防作弊(四道工序) 5 · How we prevent cheating (four gates)

6 · 怎么查账 6 · How you can audit us

承诺:对任意历史时点 T,你可以用公开数据源独立重算,再与我们的结果比对。我们提供的是转换后的统计值与哈希指纹——不提供原始行情序列(数据协议限制)。

Our commitment: for any historical date T you can recompute independently from public sources and compare against our published result. What we publish are transformed statistics and their hash fingerprints — not raw price series, which our data agreements forbid us to redistribute.

重算接口 /verify 随 M1 上线;届时本页会更新说明与用法。当前版本的承诺只到「方法与口径公开」这一层,我们不假装接口已经存在。 The /verify endpoint ships with M1; this page will be updated with usage details then. Until that exists, our commitment stops at "the method and definitions are public" — we do not pretend the endpoint is already live.

6.1 · 关注列表里看得到什么 6.1 · What a watchlist entry shows

你在关注列表里可以放进任意 ETF 代码,不只是我们池子里的。但每只标的在页面上带的身份标签不同,看到的字段也不同——这一点我们写在页面上,而不是等你发现:

两条我们主动说清楚的自我限制:① 池外标的不打风险分层标签——分层区间是用池内成员标定的,外推不成立;② 池外标的不给单只的历史事件统计——样本太薄,给了是假精确。宁可写「样本不足」,也不给一个看起来很精确的数。

另外,关注与盯守是两件事:关注看得到什么,与是否收到主动提醒,是分开的。

You may add any ETF ticker to a watchlist, not only the ones inside our screened universe. Each entry is labelled with its own status, and the fields it shows depend on that status. Two limits stated up front: we never apply pool-calibrated risk tiers to out-of-pool funds (the calibration does not transfer), and we never show single-fund event statistics for them (the samples are too thin — we would rather say "insufficient sample" than print a falsely precise number). Watching and alerting are separate things.

7 · 版本与免责 7 · Version and disclaimer

规则版本 v0.4.1 · 更新日期 2026-10-05。规则每次变更都会更新本页版本号、更新日期与规则哈希,变更内容可追溯。

Rules version v0.4.1 · updated 2026-10-05. Every change to the rules updates the version number, the date, and the rules hash on this page, so any change can be traced.

规则摘要哈希(SHA-256,覆盖数据口径、合规禁词与全部闸门定义共 5 段规则本体;不含版本号、更新日期与部署配置):

RULES-HASH:00343063c85aed5413d1b59f636f9a961b98d4db78e858f4bb4338a8fe192ec6

Rules digest (SHA-256) over the five rule sections that define data semantics, restricted terms, and every internal gate — excluding the version label, the date, and deployment configuration. Any change to those rules changes this hash; a machine check in our build pipeline fails if this page and the live rules disagree.