QuantKernel 6.2 ships with a fifth strategy: Project Convexity. It is not an incremental feature. It represents a fundamentally different class of signal — one built on a data standard and a screening methodology that the overwhelming majority of retail systematic frameworks cannot replicate. This post is a full technical walkthrough of every architectural decision.


I. The Survivorship Problem

The single most common error in systematic fundamental strategy development is invisible to most practitioners: the universe they test on is not the universe that existed when the strategy would have fired.

Most retail quant frameworks — and a surprising number of professional ones — pull their universe from the current S&P 500 or NASDAQ-100 constituent list. The problem is structural: that list already excludes every company that went bankrupt, got delisted, or was acquired over the lookback period. You are, by definition, testing only on the survivors.

Survivorship bias in fundamental backtests is not a minor correction factor. In universe-construction studies, it can inflate apparent returns by 1–3% per year and compress apparent drawdowns by material amounts. Any strategy screened on a survivor-only universe has an unknown and unquantifiable forward bias.

Sharadar's Point-In-Time (PIT) database solves this at the data layer. Every financial data row is tagged with an announcement_date — the exact calendar date on which that data was publicly available. This includes delisted tickers, bankrupt entities, and acquired companies. The universe is constructed at each screening date from every company that existed on that date — not from the list of companies that survived to the present.

// announcement_date gating — the most common look-ahead error

There is a second, subtler form of look-ahead bias that affects even practitioners who know about survivorship bias: using fiscal_period_end instead of announcement_date as the gating timestamp.

A company with a fiscal quarter ending March 31 typically reports earnings between late April and mid-May — a delay of 30 to 90 days. If your pipeline gates on fiscal_period_end, you are implicitly assuming that the revenue and margin data was available to you on March 31 — weeks before the actual 10-Q filing. This is the single most common error in systematic fundamental strategies, and it produces results that look excellent in backtest and degrade in live trading for reasons that are genuinely difficult to diagnose post-hoc.

The PITFilterPipeline gates all fundamental data exclusively on announcement_date. No row of financial data is visible to the pipeline until its announcement_date has passed the current screening date. This is non-negotiable.

// Fig 1 — Look-Ahead Bias: Fiscal Period End vs Announcement Date
Fiscal Period End
+45 to +90 days gap
Announcement Date
❌ Naive screens
gate on fiscal_period_end → uses data not yet public → look-ahead bias
✅ PITFilterPipeline
gates exclusively on announcement_date → zero look-ahead → institutional standard
Survivorship-free universe includes delisted tickers. Every screen is as-of the screening date — no future knowledge leaks in.

II. Three-Gate PITFilterPipeline

The pipeline runs three sequential gates. A candidate must pass all three to become a signal. There is no scoring or ranking within the pipeline — it is binary at each gate.

// Gate 1 — Fundamental Acceleration

The first gate does not screen for revenue growth. It screens for the second derivative of revenue growth — acceleration. This distinction is load-bearing.

A company compounding YoY revenue growth at 40% for three consecutive years is well-known. That rate is already priced into the multiple. The opportunity is in the company that grew at 15%, then 22%, then 31% — where the growth curve is visibly bending upward. The market hasn't fully repriced the acceleration yet. That is the signal.

Formally: we compute the YoY revenue growth rate for each of the last three reported quarters (all gated on announcement_date). We require the 2nd difference — g[t] - 2*g[t-1] + g[t-2] — to be positive. Flat or decelerating growth, even at high absolute rates, fails Gate 1.

Gate 1 also requires operating-margin inflection: the operating margin must be expanding quarter-over-quarter on an LTM basis. This is the leverage point — where revenue growth converts to profit growth non-linearly. A company with accelerating revenue but contracting margins is still in investment mode; the economics haven't yet proven themselves.

// Gate 2 — Technical Validation

The second gate ensures we are not buying fundamental strength into technical weakness. Three sub-conditions must all pass.

// Gate 3 — Universe Construction

The third gate applies liquidity and size floors: $1.5B market capitalization minimum and $15M average daily trading volume (ADTV) minimum. These are not arbitrary round numbers.

The ADTV floor is the critical one. At $15M/day, a $150K position represents approximately 1% of daily volume. Below this threshold, position entry and exit begin to move the market — you are no longer operating as a price-taker. The $1.5B market cap floor ensures the company has sufficient institutional coverage that the fundamental data is being actively arbitraged by market participants, reducing the probability of data errors surviving undetected in the price.

// Fig 2 — PITFilterPipeline: Three-Gate Funnel
Full Universe
~3,000+ tickers (incl. delisted)
Gate 1
Fundamental Acceleration
2nd-derivative YoY rev growth > 0
+ operating margin inflection
~15–25%
pass
Gate 1 survivors
Gate 2
Technical Validation
RS top 10% · ≤5% of 52w high
VCP with volume dry-up
~3–8%
pass
Gate 2 survivors
Gate 3
Universe Construction
$1.5B mkt cap · $15M ADTV
survivorship-free PIT universe
Final Scouts
OrderIntents → ConvexityStore
All gates computed on PIT data as-of screening date. No look-ahead. Gate 1 alone drops ~75–85% of the universe before any technical check runs.

III. The RegimeGateway — Why Isolation Matters

Project Convexity has exactly one dependency on the QuantKernel core system: a read-only Regime enum. This is an intentional architectural constraint, not an oversight.

The regime system produces four states: ATTACK (full offensive posture, maximum capital deployment), NEUTRAL (normal operating conditions), HEDGE (defensive posture, intraday strategies scaling back), and ICE_POINT (systemic risk detected, tactical strategies halt new entries). The RegimeGateway reads this state once per daily runner execution. It is read-only and fail-closed.

// Fail-closed gateway semantics

Fail-closed means: if the HTTP read of the regime state fails for any reason — network timeout, malformed response, unexpected enum value — the gateway defaults to blocking new entries. It never silently defaults to open. The cost of a missed entry is bounded. The cost of an unintended entry during a systemic event is not.

// The critical design decision: exits are never regime-forced

This is the most important architectural decision in the Convexity sleeve, and it requires explicit justification.

When the QuantKernel core transitions to HEDGE or ICE_POINT, the tactical strategies — Trend Tracker, Intraday Breakout, Pairs — scale back or halt new entries. This makes sense for strategies with 1–5 day holding periods. When a regime shift says 'risk off,' positions that will close within the week should be managed conservatively.

A growth compounder bought at the correct base with a weeks-to-months holding horizon is a different instrument entirely. Forcing a sale because VIX spiked today is almost always value-destructive. The growth thesis doesn't change because of an intraday volatility event. The base is still intact. The fundamental acceleration is still intact. The correct response is to stop opening new scouts — not to exit the winners you already own.

Riding through a regime shift is the entire point of the Convexity sleeve. A risk-off toggle that force-sells a growth compounder mid-base is not a risk manager — it is a volatility-sensitive stop-loss dressed up as architecture.

This is the architectural divide between a risk-off toggle and a proper position manager. The ConvexityRiskManager manages individual position state — SCOUT, ADD, and subsequent phases — independently of the regime signal. The regime signal only gates new entry. It has no authority over existing positions.


IV. The VCP Detector

The VCP (Volatility Contraction Pattern) is a base-formation pattern described qualitatively in the discretionary literature — most prominently in Minervini's work on stage analysis. The implementation challenge is operationalization: converting a pattern that is partly subjective in the source material into a deterministic, reproducible algorithm.

The detector uses five parameters:

An important note that belongs in any honest technical description of this detector: This is one defensible operationalization of a pattern that is, in the discretionary literature, partly subjective. Treat the screen as a candidate funnel, then visually review the survivors. The VCP detector is not a mechanical entry system in isolation — it is the final filter in a three-gate pipeline that has already validated fundamental acceleration, RS ranking, and proximity to the 52-week high. By the time a name passes all three gates and VCP detection, it is a high-quality candidate list, not a mechanical trade list.


V. What 6.2 Means for the Platform

QuantKernel 6.2 now runs five parallel strategy tracks across two fundamentally different time horizons:

The regime signal is the coordination layer between these two tracks. When the tactical core declares ICE_POINT, it is not telling the Convexity sleeve to sell — it is telling it to stop opening new scouts. The existing compounders ride out the event. This is how proper multi-strategy fund architecture works: each pod has capital independence and risk independence, but they share a common macro regime signal that gates new exposure without disrupting the natural lifecycle of existing positions.

The architecture choice to use Sharadar PIT data rather than FMP or yfinance is not incidental. It is what makes every result from the pipeline defensible. A backtest that was constructed using announcement_date-gated survivorship-free data can be presented with confidence. A backtest constructed on point-in-time data and tested on current-constituents data cannot — no matter how good the numbers look.

// Fig 3 — QuantKernel 6.2: Dual-Layer Strategy Architecture
High-Freq Tactical Layer
S01 · Trend Tracker AI · 1–5d
S02 · Intraday Breakout · 0d
S03 · Pairs Arbitrage · 1–3d
S04 · Options BPS · theta
Regime gate: entry + exit
Low-Freq Strategic Layer
S05 · Project Convexity · weeks–months
Regime gate: new entries only
Exits managed by ConvexityRiskManager
Shared coordination layer →
ATTACK: all entries open
NEUTRAL: normal
HEDGE: no new scouts
ICE_POINT: tactical halt · Convexity rides
RegimeGateway is read-only. The Convexity sleeve cannot instruct the core to do anything. Capital is never shared between layers.

All five strategies run in parallel in production. Convexity signals are distributed to subscribers through a dedicated Discord channel with zero cross-contamination with the tactical signals. The daily runner executes after market close: RS ranking, PIT screening, VCP detection, OrderIntents to ConvexityStore, execution.