# KISS 2.4 construction fixes and signal experiment decision

September 7, 2026. Implements the authorized [signal review](/research/studies/kiss-signal-review-2026-09-07.md) under the frozen experiment register (repository record: `kiss-signal-experiment-register-2026-09-07.md`).

## Decision

The construction cleanup is approved for merging as **kiss-2.4.0**, containing four construction corrections. New investment hypotheses and confirmation changes are not part of this revision. The local candidate snapshot and compact feed were rebuilt and validated; deployment and final release remain separate from the source merge while the owner considers the confirmation decision.

1. Seven Neutral sector signals now aggregate to Neutral. Bullish and Bearish each require at least 60% of the same seven available sector proxies. Incomplete coverage remains Unavailable. The sector universe stays explicitly a subset, avoiding an untested universe expansion.
2. Cyclical/defensive and region baskets use equal-weight return indexes, rebalanced on each complete common observation date. Arbitrary constituent share-price units no longer change weights. Missing constituents cannot silently disappear from the denominator.
3. DBC uses adjusted ETF total return. It measures an investable commodity trend, rather than treating a distributing ETF's raw share price as an economic commodity index.
4. Coverage reflects the four equally weighted domains. An entirely unavailable domain makes classification Mixed. Signal counts, domain coverage, and ambiguity reasons remain available for inspection.

These choices are justified by signal meaning and invariants, not by selecting the best historical return. Their combined historical result is slightly worse than the previous construction. Keeping accidental share-price weights because they happen to backtest better would itself be fitting the model to history.

The existing VAMS formula, its native-observation calendar, state memory, macro quadrant selection, and 2-out/5-in target confirmation remain in the canonical allocation path. Calendar-consistent VAMS and hierarchical regime classification were implemented as isolated research alternatives and tested; they are not silently bundled into the construction release.

## Historical results

Same January 2, 2020–September 4, 2026 window, prices, cash proxy, confirmation, and declared costs. The control reproduces the legacy-policy production simulator. The corrected construction reproduces the rebuilt KISS 2.4 snapshot. The source dataset differs slightly in floating-point adjusted prices from the earlier captured diagnostic; full-precision source hashes are preserved.

| Candidate | CAGR | Maximum drawdown | Decision |
|---|---:|---:|---|
| Legacy KISS 2.3 control | 15.11% | -8.07% | Comparison control |
| Sector neutrality only | 15.32% | -8.07% | Construction correction |
| Equal-weight return baskets only | 14.54% | -8.69% | Construction correction despite lower historical return |
| Adjusted DBC only | 15.13% | -8.07% | Construction correction |
| Domain coverage only | 15.16% | -8.19% | Construction correction |
| All four construction fixes | **14.69%** | **-8.82%** | KISS 2.4 construction revision |
| Calendar-consistent sleeve VAMS | 14.77% | -9.61% | No historical case for replacement |
| Simple excess-return trend | 14.70% | -8.46% | No historical case for replacement |
| Hierarchical regime classification | 14.77% | -10.32% | No historical case for replacement |
| VIX stress-specific vote | 16.01% | -7.60% | Most promising isolated hypothesis; retain for shadow observation |
| Real-yield/breakeven decomposition | 14.79% | -8.97% | No historical case for replacement |
| OFR credit contribution plus CP | 15.33% | -9.47% | More return with more downside; no clear improvement |
| SOFR-minus-EFFR funding vote | 14.37% | -11.64% | Reject this specification as a replacement |

The seven investment hypotheses in the lower rows each modify the legacy control independently. The harness also runs all seven separately on the corrected construction, avoiding an optimized subset. Full metrics, subperiods, costs, capture, expected shortfall, exposure attribution, block-bootstrap results, and latest targets are in the saved experiment output (repository record: `research/kiss-signal-experiments-2026-09-07.json`).

The combined construction fixes lower CAGR by approximately 0.42 percentage points and deepen maximum drawdown by 0.75 points in the primary replay. Both versions have 144 rebalance events. Average cash changes from 41.38% to 40.84%. This is not a claim that KISS 2.4 improves historical risk-adjusted performance.

## Why the VIX candidate is not promoted

VIX stress on the legacy construction improves primary results across the four reported subperiods. Its paired 63-session block-bootstrap interval for the annualized arithmetic mean-return difference is positive in this diagnostic. That statistic is neither a CAGR confidence interval nor an untouched holdout, and it does not account for selecting among multiple candidate hypotheses.

Execution and input availability change the conclusion:

| Scenario | Legacy control CAGR / drawdown | VIX candidate CAGR / drawdown |
|---|---:|---:|
| Primary simulator | 15.11% / -8.07% | 16.01% / -7.60% |
| Fill at a subsequent observed session close | 15.22% / -9.31% | 15.50% / -9.17% |
| Conservative macro publication lags plus delayed fill | 15.21% / -11.45% | 14.98% / -10.81% |

On corrected construction, the primary VIX variant returns 15.37% with an 8.47% drawdown, versus 14.69% and 8.82% for construction alone. But under the delayed-fill comparison its CAGR advantage shrinks to about 0.05 percentage points, and under the publication-lag sensitivity its CAGR falls below construction alone. The result is timing-sensitive. Capture actual publication vintages and prospective decisions before reconsidering it.

The lag sensitivity uses fixed conservative allowances: five calendar days for daily FRED rates, ten for the broad dollar, and seven for OFR. SOFR/EFFR always receive five days even in the primary experiment. Explicit `availableOn` dates override assumptions. These are stress tests of availability, not reconstructed release calendars. Current revised FRED/OFR history cannot establish point-in-time performance.

## Confirmation was evaluated separately

After the isolated signal comparisons, the earlier single-stage, two-close exposure-level rule was replayed on the corrected construction, using raw sleeve states. It returned **14.42% CAGR with an 11.07% maximum drawdown**, versus 14.69% and 8.82% for the current confirmation on that same construction. Rebalance events increased from 144 to 238. This does not support changing confirmation now.

The earlier findings about stale pending purchases and target-strengthening resets remain valid design concerns. This particular replacement did not demonstrate an improved historical tradeoff. Its research implementation is retained rather than discarded or retuned around the bad outcomes.

### Argument for changing confirmation

The proposed replacement uses the same raw market evidence and allocation map, but gives each sleeve one confirmation process. Ordinary increases and decreases require two portfolio-session closes supporting the exposure level. The extra two-close VAMS state-memory gate no longer controls allocation.

- **Earlier participation and reductions.** A stable ETF state change currently takes six closes to confirm an increase and three to confirm a reduction, counting the overlap between the two gates. A single two-close process reduces those to two, before the separate execution delay. This better expresses the retirement portfolio's intention to react without a capital-gains constraint.
- **Stronger evidence cannot delay a smaller purchase.** If gold targets are 15% then 30%, both observations support at least 15%. Exposure-level confirmation can authorize that partial allocation rather than restart an exact-target counter.
- **Worsening evidence cannot restart all reduction progress.** If a held 30% gold sleeve receives targets of 15% then 0%, both observations support reducing to at most 15%, even though the exact requested targets differ.
- **A new purchase needs current support.** The proposal avoids completing a buy solely because remembered Bullish VAMS survived the first fresh Bearish reading. The August gold sequence in the original review shows that this is an actual sequencing concern.

These are logical arguments for coherent behavior. Faster reduction could help in an abrupt, persistent decline, and earlier entry could help in a fast recovery. Neither outcome is guaranteed: the next observation may reverse, and the model cannot avoid an overnight loss before it can trade.

### Argument against adopting the full replacement now

The current stack also filters transient reversals. Removing a filter and shortening entry confirmation accepts more weak recoveries. The tax-deferred account avoids a capital-gains realization penalty, but it still bears whipsaw losses, transaction costs, and implementation burden.

On the **same corrected construction**, January 2, 2020–September 4, 2026:

| Metric | Existing stacked confirmation | Single two-close exposure-level confirmation |
|---|---:|---:|
| CAGR | 14.69% | 14.42% |
| Maximum drawdown | -8.82% | -11.07% |
| Rebalance events | 144 | 238 |
| Mean cash weight | 40.84% | 36.26% |

The faster model participated more, but did not improve the measured downside/return tradeoff. Its drawdown was 2.25 percentage points deeper and it generated about 65% more rebalance events. This matters directly to the stated left-tail objective. It is not evidence that the old delays are optimal forever: the history has already influenced design choices, uses current-vintage inputs, and the primary simulator has the documented execution limitation.

The combined experiment also changes several things at once: state memory, entry delay, exposure-level confirmation, and Bitcoin's confirmation clock. It does not establish which individual change accounts for the result. Broader trend-following research likewise finds that responsiveness can have different effects in abrupt and prolonged, choppy declines; those diversified strategies are not direct validation of this KISS rule. [AQR research on risk-mitigation design](https://www.aqr.com/-/media/AQR/Documents/Alternative-Thinking/AQR-Alternative-Thinking---Key-Design-Choices-when-Building-a-Risk-Mitigating-Portfolio.pdf?hash=43D2CF59742FB29906A368F8AE472831&sc_lang=en).

### Recommendation before final release

Merge the construction cleanup with the existing confirmation policy. Keep the full single-stage replacement research-only. The strongest next confirmation experiment is narrower: preserve the existing waiting periods while testing exposure-level progress and fresh-support checks independently. The poor combined result is a reason to separate those hypotheses, not to ignore the sequencing concerns or to pick another number of days until the backtest improves.

Those narrower variants are **not implemented in the production confirmation engine and have not been separately validated**. They should be specified before replay, evaluated with realistic execution, and recorded prospectively. A subsequent compatible change would receive another minor KISS 2.x bump; it need not be rushed into 2.4. No final-release decision is inferred from the authorization to merge the construction cleanup.

## Data acquisition and remaining dependencies

The research collector now captures raw and adjusted DBC independently, the existing market inputs, real ten-year yields, breakevens, SOFR/EFFR, and OFR's credit contribution. It records source coverage and retrieval metadata and archives complete input captures by content hash. Historical source revisions remain visible between future captures.

- **OFR:** the direct public data feed supplied 6,751 observations beginning in January 2000. The experiment uses its credit category, leaving the credit domain's aggregate weight unchanged. Publication delay and revisions are material. [OFR source](https://www.financialresearch.gov/financial-stress-index/).
- **SOFR:** obtained through FRED; subtraction requires matched underlying observation dates and excludes the pre-publication era. It was evaluated as a within-domain funding signal, not another 25%-weighted domain. [New York Fed source](https://www.newyorkfed.org/markets/reference-rates/sofr).
- **Licensed high-yield OAS:** blocked on sufficient historical access and appropriate usage rights. FRED's three-year ICE window cannot cover the registered sample. The specified transformation is implemented in the research module; no short sample is substituted for the full test. [FRED/ICE restrictions and coverage](https://fred.stlouisfed.org/series/BAMLH0A0HYM2).
- **True constituent breadth:** blocked on historical membership, delisted prices, coverage, and entitlement. The research signal adapter accepts a properly constructed historical breadth series. It does not reconstruct breadth from today's constituents. [Norgate historical membership capabilities](https://norgatedata.com/data-package-faq.php).
- **Bitcoin reference clock:** an actual public Coin Metrics API query requested New York-close daily history from January 2016 but returned only September 1–5, 2026, five observations. The API returned success, so checking HTTP status alone would have missed the coverage failure. The matched-history comparison remains blocked on sufficient access. [Coin Metrics reference-rate documentation](https://gitbook-docs.coinmetrics.io/market-data/reference-rates-overview/reference_rate).

No subscriptions were purchased, vendors contacted, or restricted histories republished. The broader risk-budget overlay, gold Inflation-cap adjustment, expanded sector universe, and slower macro/crypto features remain deliberately deferred until these signal and data questions are resolved; the review did not recommend applying them all as additional live gates.

## Continue the research

```sh
npm run collect:kiss-research -- 2026-09-04
npm run analyze:kiss-signals -- .cache/tmd-signal-research/inputs.json 2026-09-04
npm run test:kiss-signals
```

Use an explicitly completed date for future captures. The collector archives each distinct input dataset under `.cache/tmd-signal-research/vintages/`; the analyzer writes content-addressed research decisions under `.cache/tmd-signal-research/shadow/`. These files are private, ignored research artifacts, not an Agora feed. The initial observation is a September 7 capture of September 4 signals, not a backdated live decision. No claim of prospective performance can be made yet, and no automatic schedule was installed.

The complete date-by-date target-change and daily-return-difference ledger is `.cache/tmd-signal-research/change-ledger.json`. Keep the exact captured inputs with the saved result hash when reproducing this run; re-fetching can produce revised history. The saved report contains summaries rather than redistributing source time series.

Blocked data experiments must be rerun only after supplying adequate licensed inputs and documenting availability. The current harness records these as blocked; it does not fabricate observations or award a pass. Before activating another source, add its coverage/entitlement contract to the runner and verify its historical availability with the same causal tests.

## Compatibility and verification

### State and allocation presentation

The KISS and extended VAMS pages now distinguish the latest raw signal from confirmed VAMS. Pending state changes show the actual observed/required close count, the remaining requirement, and what cancels or restarts it. The KISS cards also separate the current allocation, the target from confirmed VAMS, and the conditional target if the pending raw state confirms with the same regime cap. Existing allocation counters remain visible even if raw VAMS disagrees with the remembered state. This presentation does not alter either confirmation engine or the JSON contract.

For September 4 gold, the display reads raw Neutral versus confirmed Bearish, with one of two Neutral closes observed. The confirmed allocation and current signal target are both 0%. If Neutral confirms with the 30% regime cap unchanged, the signal target becomes 15% and requires five portfolio target-confirming closes; the VAMS-confirming portfolio close can count as the first. The homepage and allocation summary link to this explanation instead of hiding pending VAMS behind an “aligned” status. Input labels and raw trigger conditions are identified separately from confirmation.

Presentation tests cover gold's transition, the overlap between counters, a weakening raw signal during a pending increase, zero regime caps, missing metadata, and policy periods supplied by the snapshot. Rendered HTML for both pages was checked against the rebuilt September 4 candidate. Browser access was unavailable during this session, so desktop/mobile visual inspection remains unverified.

### Consumer and publication checks

Agora's local `ResolvePortfolioTargets` consumer accepts stable `kiss-2.*` methodology versions by default. Its payload requirements still receive the same four asset keys, symbols, numeric weights, exposure multipliers, state meanings, and revision format. Dashboard schema version 2 and compact-feed schema version 1 remain unchanged. Taxable KISS remains `taxable-kiss-5.3.0`, referencing the new source methodology in a rebuilt payload. This is a minor release under the versioning policy (repository record: `kiss-versioning-policy.md`).

The local rebuilt candidate has 1,678 history rows and the same latest confirmed September 4 allocation as the prior snapshot: stocks 60%, gold 0%, Bitcoin 10%, cash 30%. It passes both dashboard and compact-feed validation. Research artifacts retain a separate identity and are not consumed by the production publisher.

Agora's actual PHP portfolio-consumer method was also invoked against both rebuilt portfolio payloads, using its documented default methodology settings in an isolated process. It accepted `kiss-2.4.0` and `taxable-kiss-5.3.0`. This exercised payload parsing and version compatibility without changing Agora configuration, contacting its remote provider, or accessing its database.

Verification includes sector symmetry, missing inputs, known equal-weight compounding, constituent-rescaling invariance, prefix/no-future-data behavior, month-end and leap-year boundaries, complete excess-return lookbacks, matched funding observation dates, missing-domain ambiguity, delayed execution, legacy replay parity, and the existing model/provider and feed-contract checks. Publication still requires the normal isolated history rebuild and atomic deployment procedure in the runbook (repository record: `build-deploy.md`); the locally constructed contract fixture must never be published directly.

Completed checks: `npm run verify` (static checks, the complete test suite, and build), a build using the local rebuilt snapshot, and `MACRO_FRED_ALLOW_CSV_FALLBACK=1 npm run publish:dry-run -- --rebuild-history`. The dry run fetched inputs, rebuilt and validated an isolated candidate, and completed its build without deploying or notifying subscribers. The collector also completed a separate 41-series capture and wrote its immutable input archive. Build output contains existing archived-blog link and SEO metadata warnings; the builds completed successfully.

The CI benchmark initially retained its KISS 2.3 golden hash. An isolated replay of the prior source reproduced that hash, and a field-level comparison attributed the KISS 2.4 changes to domain-weighted coverage, missing-domain sensitivity, additive diagnostics, and methodology provenance. The synthetic fixture's VAMS, current allocation, and return series did not change. The reviewed golden hash was updated, and `npm run verify` now includes this existing benchmark gate so future methodology changes are checked locally before merge.
