Testing whether earnings context improves chart comparisons
The finding
The event state changed the selected analog sets but not their forward coherence. Coarse fiscal-period, timeframe and reporting-lag similarity stays inspectable with zero ranking authority. The sample is spent and is not tuned.
The research question
Does adding a deterministic earnings-event state (fiscal period, timeframe, reporting lag) to chart similarity make the selected analogs' forward paths more coherent than chart similarity alone?
Decision criteria
500-query walk-forward holdout over 2025 to Q1 2026, exact top-50 prior-event shortlist, 365-day same-company exclusion, chart-only versus 50/50 chart-plus-event K = 10 sets frozen before any path. Pass requires a mean path-energy improvement of at least 3% with the date-block interval clear of zero.
Result document
Repository source: research/results/earnings_event_chart_pilot_v0_2026_08_19.md
Date: 2026-08-19
Verdict: NO_EVENT_PILOT_SIGNAL; exact result replay passed
Bottom line
The coarse deterministic earnings event state did not materially improve five-session path coherence over chart similarity alone. It changed the selected top-10 analog set for 489 of 500 queries, so the test had a strong structural contrast, but the changed analogs were not meaningfully better matches for what happened next.
The mean energy score moved from 0.888317624876 for chart-only to 0.886910960983 for
chart plus event. That is a relative improvement of 0.1584%, far below the preregistered
3% gate. The date-block 95% bootstrap interval for mean paired delta was
[-0.007402114342, 0.010041945901], crossing zero.
V0 event similarity therefore remains inspectable metadata and receives zero ranking authority. This result does not reject richer point-in-time event memory; it rejects this specific date-only earnings representation, 50/50 policy, and setup as a promoted ranking component.
Frozen receipts
- Structural manifest:
3a32ad47992da88f9b2441547c78d26cf53cb721f51ee6a8184041cdf68f93c9. - Path batch:
3296e70b0e1c9c8122c82cb430b3117b16611d3c026cb1da093290087e6ccefc. - Ordered path hashes:
f042fe4b4dd27e29b9b8f8b15efa476d762e440e134659270eac2c990676710d. - Evaluation:
53ae1fdad9e2f3f85045f95bc02a3b5f931381f310fe67ae0651653fdbb3caeb. - Exact committed evaluator bundle:
c1dbb3cd683d6063799d73944d19a0c47dac1f842b35291f4de5d75877c26c56. - Structural source commit:
3cbe4c5a. - Locked evaluator commit:
3e702b72. - Indexed exact-path reader commit:
36a83e31.
The runner reverified the registered structural manifest before path access. It then resolved only the preregistered query and selected-candidate paths; it did not rerank, replace a missing selected candidate, or scan farther down the 50-candidate shortlist. An identical second completed run reproduced the path-batch, ordered-path, evaluation, coverage, metric, interval, gate, and verdict receipts exactly.
Power and coverage
| Metric | Result | Gate |
|---|---|---|
| Structurally powered queries | 500 | fixed 500 |
| Queries with different selected sets | 489 | at least 100 |
| Paired usable queries | 452 | at least 400 |
| Paired event dates | 132 | at least 100 |
| Paired coverage | 90.4% | at least 80% |
| Chart-usable queries | 460 | diagnostic |
| Chart+event-usable queries | 460 | no >2% loss |
| Resolved required paths | 5,468 / 5,516 | diagnostic |
| Coverage-failed paths | 48 / 5,516 | no replacement |
| Pending paths | 0 | diagnostic |
All power and coverage gates passed. UNDERPOWERED is therefore not an available
interpretation of the result.
Fixed effect gates
| Gate | Result | Pass |
|---|---|---|
| Relative energy improvement | 0.1584% vs 3% required | No |
| Bootstrap lower bound above zero | -0.007402 | No |
| Combined coverage loss within limit | 0 queries lost | Yes |
Because two effect gates failed, the registered verdict is NO_EVENT_PILOT_SIGNAL.
Operational audit
The first locked run stopped in structural phase when the outcome-blind population scan
hit its original 120-second statement timeout. No path query ran. After a timeout-only
correction, the manifest reverified and the first large compressed-daily_bars path query
timed out before producing a receipt. A fixed 500-event batching attempt also timed out.
The repository's existing production forward-path implementation documents that bulk
VALUES joins cannot push Timescale chunk predicates reliably. The final committed reader
therefore used the same proven 16-worker indexed per-symbol range pattern, while joining
the returned closes back to the unchanged frozen global-session calendars. No population,
query, selected set, path date, transformation, bootstrap, or pass threshold changed.
Interpretation and next action
This is useful negative evidence. Fiscal period, annual-versus-quarterly status, reporting lag, and a conservative date-only age clock are enough to move rankings aggressively, but not enough to select analogs with more coherent outcomes. Structural difference is not the same as useful similarity.
Do not tune the event weight, lag scale, shortlist, or K on this spent sample. A future event experiment needs genuinely richer evidence—such as auditable point-in-time surprise, estimate revision, exact release timing, guidance, or event-content attributes—and a new temporal holdout registered before outcomes. Until then, Chart Library remains chart-first and this event lane stays descriptive.
Study specification
Repository source: research/specs/earnings_event_chart_pilot_prereg_v0_2026_08_19.md
Status: completed with NO_EVENT_PILOT_SIGNAL; sample spent and V0 event ranking
weight remains zero
At registration, only the exact-replayed earnings population, source clocks, research session calendar, V5 embedding coverage/distances, and outcome-free event grades have been used. No price path, forward return, excursion, barrier, or attractive example has been opened for this experiment.
Question
Within one deliberately coarse setup—date-only Q1/Q2/Q3/FY earnings records—does adding point-in-time event-structure similarity to pre-event chart similarity produce a more coherent distribution of subsequent five-session paths than chart similarity alone?
This tests whether even a rudimentary event state adds information to the Chart Library substrate. It is not a directional forecast, trading backtest, universal event ontology, or production-ranking test.
Frozen population
- Population schema:
earnings-event-population/v0. - Exact-replayed population hash:
b248653963dcf5869f9b9e6b0b0d418732657719f3a463981fa2a6660cc3d68f. - Population: 41,723 CIK/event-date identities, 1,517 symbols, 1,928 event dates.
- Event types: Q1/Q2/Q3/FY earnings only; Q4 and TTM excluded.
- Instruments: current common stock and ADR records; ETPs excluded.
- Chart state: V5 daily embedding from the final completed session strictly before the source event date.
- Event clock: conservative next-local-calendar-day 00:00 ET for date-only backfilled evidence.
- Source confidence: fixed visible engineering prior of 0.75.
- Known-through/freeze clock:
2026-08-19T20:00:00Z.
The query holdout contains event dates from 2025-01-01 through 2026-03-31. Exactly
500 queries are chosen without outcomes by taking the lowest SHA-256 values of
20260819:event_id, then restored to event-date/event-ID order. Each query must have a
calendar-complete fifth path session by the freeze clock. A count other than 500 stops
the run.
Walk-forward candidates and common shortlist
For each query, a candidate must:
- have an information clock strictly before the query information clock;
- have its fifth-session path resolution strictly before the query information clock;
- not share the query CIK within 365 calendar days; and
- retain its exact point-in-time event profile and pre-event V5 anchor.
The database computes exact V5 1-day L2 distance over the eligible structural population. Both policies receive the same nearest 50 candidates. No event field participates in shortlist generation. Distance ties break by event ID. A query with fewer than 50 eligible candidates is structurally unpowered; the frozen 2025–2026 population is expected to have none.
Frozen similarity policies
Both policies select K=10 candidates before outcomes:
earnings-chart-only-pilot/v0: chart weight 1.0.earnings-chart-plus-event-pilot/v0: chart weight 0.5 and event weight 0.5.
The chart component is endpoint-ranked within the common 50-candidate shortlist: nearest
is 1, farthest is 0. The event component is
deterministic-earnings-event/v0, containing only exact event family, fiscal period,
annual/quarterly timeframe, reporting-lag distance, and information-age distance. Feature
weights and the 50/50 component weights are engineering priors. Event source confidence
reduces the common composite confidence; it does not become structural similarity.
Both chart and event evidence are required for the combined policy. A material event-family mismatch is a hard gate. Ranking ties break by raw V5 distance and event ID. The manifest commits every query, the full shortlist-grade digest, both selected candidate sets, selected evidence hashes, and the two policies before paths may be requested.
If fewer than 100 of 500 queries have different selected candidate sets under the two
policies, the experiment is STRUCTURALLY_UNDERPOWERED and no paths are opened. A mere
reordering of the same ten candidates is not a treatment contrast.
Frozen path and primary score
For every query and selected candidate:
- baseline = split-adjusted close of the final completed global research session strictly before its information clock;
- path = cumulative split-adjusted close return from that baseline to each of the next five global research-session closes;
- transform each cumulative return as
clip(log1p(return) / 0.10, -3, 3).
The baseline is already knowable at the state clock. The pre-event chart embedding remains the declared structural chart evidence; the evaluator may not replace it with the baseline session's chart.
For selected analog paths x_j and query path y, the primary multivariate energy score is:
mean_j ||x_j - y||_2 - 0.5 * mean_jk ||x_j - x_k||_2
Lower is better. The paired per-query delta is:
chart-only energy score - chart+event energy score
Positive favors event conditioning. If the query path or any of a policy's ten selected candidate paths is incomplete, that query-policy is unusable. The evaluator may not scan farther down the shortlist to repair missing data.
Frozen gates
Uncertainty uses 5,000 bootstrap resamples of whole query-event-date blocks with seed
20260819; all same-date queries stay together. EVENT_PILOT_SIGNAL requires every gate:
- the exact structural manifest replays with identical hashes;
- at least 100 queries have different chart-only and chart-plus-event selected sets;
- at least 400 paired queries are usable;
- paired queries span at least 100 distinct query event dates;
- paired coverage is at least 80% of the 500 frozen queries;
- aggregate relative energy improvement,
mean(paired_delta) / mean(chart_only_energy), is at least 3%; - the 95% date-block bootstrap lower bound for mean paired delta is above zero; and
- chart+event loses no more than 2% usable-query coverage versus chart-only.
Failure of gates 2–5 is UNDERPOWERED, not a null result. If those power gates pass but an
effect gate fails, the verdict is NO_EVENT_PILOT_SIGNAL. Fiscal-period, reporting-lag,
symbol, and individual-example breakdowns are diagnostics only and cannot override the
primary verdict.
What the verdict licenses
EVENT_PILOT_SIGNALlicenses one independent temporal confirmation with revised or richer event evidence frozen in advance.NO_EVENT_PILOT_SIGNALleaves V0 event structure inspectable and assigns it zero ranking authority for this setup.UNDERPOWEREDlicenses no outcome claim and identifies either insufficient policy contrast or insufficient complete path coverage.
No verdict licenses API exposure, scheduling, alerts, email, paper/live trading, directional claims, or a production event weight. Outcomes validate a frozen similarity policy; they never define query-time similarity.
Structural execution receipt
The production structural build exact-replayed on 2026-08-19:
- 500/500 queries structurally powered across 141 event dates;
- 489 queries with different chart-only and chart-plus-event top-10 candidate sets;
- manifest hash
3a32ad47...93c9; - ordered query hash
54afdc5b...284; - ordered selection hash
2949c643...178d; and outcomes_attached=falseon both executions.
The full unopened receipt is
research/results/earnings_event_chart_manifest_v0_2026_08_19.md.
Registered result
The fixed evaluator completed after the exact structural hash reverified. It produced 452
paired queries across 132 event dates with 90.4% paired coverage. Chart-plus-event improved
mean energy by only 0.1584% against the required 3%, and the date-block interval
[-0.007402, 0.010042] crossed zero. The registered verdict is
NO_EVENT_PILOT_SIGNAL.
An exact completed replay reproduced path batch 3296e70b...ccefc, ordered path digest
f042fe4b...710d, and evaluation 53ae1fda...caeb with identical metrics and gates.
The complete result and operational audit are frozen in
research/results/earnings_event_chart_pilot_v0_2026_08_19.md. The sample may not be used
to retune V0 weights, scales, K, or shortlist size.