Cortana North Star (concept)
Cortana is the engine. The market is the field. The only exit I want is the one into this.
The full North Star is in 2026-04-23-cortana-north-star (the April 2026 writing entry, prepared by Cody Smith). This concept page is the durable, discoverable version + a load-bearing scope-discipline addendum: which data sources belong to which layer, and what’s in scope for MK3 right now.
If you’re an agent reading this for the first time, this is the page to start from. The writing entry is the source; this one is the map.
1. The Vision (one paragraph)
Cortana is the operation that replaces the day job after the Asymbl exit. Not one strategy - one engine that runs multiple trading layers in parallel, each with a distinct risk profile, all feeding a unified signal hub. Short-term cash generation funds the operation, swings compound, trends position for macro cycles. Once proven across regimes, the engine becomes a commercial signal data service (reference: NautilusTrader, zTradez). Never registers as advisor / broker / fund; sells data + software, never advice.
2. The three layers
| Layer | Horizon | Purpose | Status as of 2026-05-23 |
|---|---|---|---|
| L1 - 0DTE Cash Generation | Intraday (minutes to hours) | Daily cash flow on 0DTE SPY. Quick slant route. Target: 10% wins, 80% win rate, base-hit income, not swinging for fences. | MK3 active. Beta MK2 in paper trading. MK3 = ground-up rebuild on NautilusTrader. |
| L2 - Swing Trades | 2-5 days | Compound capital on technical setups + short-term catalysts in individual equities. | John Neal building beta; Cody integrates to hub later with L1’s validation discipline. Not in MK3 scope. |
| L3 - Trend Trades | Weeks to multi-quarter | Congressional disclosures, insider filings, macro regime, Munger 200-week MA framework. Multi-month positioning through cycles. | Not built. Deliberate sequencing: L1 must be proven live first. Not in MK3 scope. |
3. Hub-and-spoke architecture (non-negotiable)
- Each layer is a spoke. Consumes market data, produces signals, reports positions and performance back to the hub.
- Hub owns signal distribution, risk aggregation across layers, and the future API surface for external subscribers.
- No spoke depends on another spoke. All coordination through the hub. Independently testable + independently commercializable.
- Execution centralized through IBKR. Data, logging, performance attribution centralized in the hub.
This is a day-one design decision. Retrofitting modularity later is harder than enforcing it now. Every component must plug into the signal engine cleanly. If it can’t, it’s not built correctly.
4. The hard regulatory constraint
Never register with FINRA or the SEC. Full stop.
This is the load-bearing constraint that shapes every product decision:
- Cortana is a data and software product. Not advisor, broker, or fund.
- No managed accounts, pooled vehicles, performance fees, or individualized advice.
- Marketing language avoids prediction / recommendation framing. Signals are signals, not instructions.
- Securities attorney reviews terms + marketing before service goes live.
This constraint is the shape of the business, not a limitation.
5. Operating principles (the rules)
- Paper first, capital second. No layer trades real money until it has demonstrated edge on OOS data and survived paper trading across multiple regimes.
- Validate ruthlessly. Walk-forward + purged CV per López de Prado. No in-sample backtests presented as edge evidence.
- Survive first, compound second. Position sizing, daily loss limits, drawdown controls above every strategy decision.
- Own the infrastructure. IBKR Pro + IB Gateway + Python + ib_async (MK2); Nautilus Rust core + Python control plane (MK3). Mac-based dev, Claude Code for velocity.
- Tax structure matters. Trader Tax Status with specialist CPA. Section 475(f) mark-to-market election evaluated yearly. SPX vs SPY tax treatment factored into strategy selection.
- Every line of code is built for the hub. No exceptions.
6. Scope discipline (the load-bearing addendum)
MK3 right now = Layer 1 only. We are just starting with 0DTE. L2 and L3 are filed-for-future, not parked-but-active. Do not let their concerns leak into MK3 design.
This is the most common drift hazard: filing rich reference material (Congress trades, fundamentals, macro commodities, earnings calendars) into MK3’s path because it’s available, rather than because L1 needs it. The hub-and-spoke architecture means these data sources will plug in eventually - just not now, and not through Layer 1.
6.1 Data-source-to-layer mapping
| Data source | Layer it serves | In MK3 scope? |
|---|---|---|
| UW GEX + Greeks (uw-api-gex-greeks) | L1 (regime gate, gamma walls, intraday spot exposures) | Yes - load-bearing for SPY hunter. |
UW Alerts (uw-api-alerts) (subset: flow_alerts, gex, chain_oi_change, market_tide) | L1 (event-driven triggers) | Partially. The four named noti_types are L1; the others (politician_trades, sec_filings, fda, dividends, splits, etc.) are L2/L3 fodder. |
| UW Dark Pool (uw-api-darkpool) (both endpoints) | L1 (institutional print context, block detection on SPY) | Yes - load-bearing for SPY hunter. Treat sign of equity-print aggressor DIFFERENTLY from option-flow aggressor (option flow is contrarian, dark-pool prints lead). |
UW Earnings (uw-api-earnings) - /afterhours, /premarket | L1 (overnight gap-risk for SPY top-25 mega-caps) | Yes - calendar context. Once-per-day pull. |
UW Earnings - /earnings/{ticker} historical | L2 (per-ticker swing-trade context) | No, L2 only. Filed for future. |
| UW Economy (uw-api-economy) - CPI / fed-funds / treasury-yield / payrolls | L1 (macro release calendar) | Yes - day-selection gate. CPI/FOMC/NFP days bias L1 to flat or different sizing policy. |
UW ETFs (uw-api-etfs) - /info, /holdings, /weights, /in-outflow on SPY | L1 (top-25 constituent identification, basket-implied flow, sector breadth, fund flow tape) | Yes - load-bearing for SPY hunter. Foundation for “SPY-implied flow tape” that’s richer than raw SPY options flow. |
UW ETFs - /exposure (inverse lookup) | L2 (which ETFs hold ticker X) | No, L2 only. Filed for future. |
UW Group Flow (uw-api-group-flow) - mag7, technology, semi, communication services groups | L1 (sector-aggregated flow for SPY-driving groups) | Yes - partial. mag7 group flow is a direct SPY mega-cap proxy. Contrarian-flip applicability at group level is UNTESTED - verify before treating mag7 OTM call dominance as fade signal. |
| UW Group Flow - other sector groups (uranium, gold, REIT, airline, etc.) | L2 (sector-specific swing-trade context) | No, L2 only. Filed for future. |
| UW Insiders (uw-api-insiders) (all 4 endpoints) | L3 (Form 4 disclosures, multi-week alpha decay) | No, L3 only. Filing lag 2 days minimum, wrong cadence for 0DTE. |
| UW Institutional (uw-api-institutional) (all 6 endpoints) | L3 (13F quarterly with 45-day lag) | No, L3 only. SPY institutional ownership too broad for L1 signal anyway. |
UW Intel (uw-api-intel) - /market/movers | L1 (breadth check, mag7-in-movers count) | Yes - partial. 30s polling. |
UW Intel - /analytics/sliding, /analytics/window | L1 partial (TBD; underdocumented) | Conditional. Hold judgment until first real fetch reveals the calculations taxonomy. |
UW Intel - /ipo-calendar, /listings | L3 (new-issue universe, IPO weeks) | No, L3 only. Filed for future. |
| UW Lit Flow (uw-api-lit-flow) (both endpoints) | L1 (exchange-displayed equity prints; companion to dark-pool) | Yes - load-bearing. Together with dark-pool gives the full equity tape. Filter aggressively (min_size >= 10000) or it’s intractable. Equity-level aggressor signals LEAD (unlike contrarian option flow). |
UW News (uw-api-news) - major_only=true filter | L1 (circuit-breaker on major macro / mega-cap headlines) | Yes - circuit-breaker style. Suspend entries for 5 min after major Fed/geopolitical/mega-cap-guidance headlines. Not an alpha signal, a risk gate. |
| UW News - per-ticker headlines + sentiment | L2 (swing-trade NLP) | No, L2 only. |
| UW Tide (uw-api-tide) (Market Tide + Sector Tide on Tech/Comm + ETF Tide on SPY) | L1 (LOAD-BEARING flow regime indicator at three scopes) | Yes - USER-FLAGGED AS IMPORTANT. Macro-flow + sector-breadth + SPY-specific flow at 5-min cadence. Open empirical question: does the per-ticker OTM-call-contrarian flip hold at tide-scope? Untested - do not assume. |
| UW Tide - other sectors (Energy, Utilities, Materials, etc.) | L2 (sector swing-trade context) | No, L2 only. |
UW Market (uw-api-market) - /top-net-impact, /economic-calendar, /correlations, /oi-change, /total-options-volume, /sector-etfs | L1 (ranked impact, forward macro calendar, dispersion regime, positioning shifts, macro context, sector ETF map) | Yes - load-bearing. economic-calendar is the forward release calendar previously missing from uw-api-economy. |
UW Market - /fda-calendar, /insider-buy-sells | L3 (biotech catalyst + macro insider sentiment) | No, L3 only. |
UW Net Flow (uw-api-net-flow) /expiry with expiration=zero_dte filter | L1 (LOAD-BEARING; most directly-named 0DTE feed in the API) | Yes - load-bearing. The unique multi-filter slice: zero_dte + OTM + (etf_only / index_only). Same contrarian-flip caveat as tide. |
UW Option Contract (uw-api-option-contract) - /option-contracts (chain search), /flow (per-trade Greeks), /intraday, /history, /volume-profile, /expiry-breakdown | L1 (per-contract substrate for IMPULSE + Setup Hunter scoring) | Yes - LOAD-BEARING. The /flow endpoint provides per-trade Greeks (delta, gamma, theta, vega, rho) - exactly the IMPULSE substrate MK2 never recorded. MK3 should start recording from day-zero of paper. Filter aggressively (min_premium=10000, top-20 contracts by volume) or polling burns. |
UW Option Trade (uw-api-option-trade) - /flow-alerts (pre-classified cluster feed) | L1 (LOAD-BEARING; pre-classified institutional-activity feed) | Yes - LOAD-BEARING. 9 named rules (FloorTrade*, RepeatedHits*, OtmEarnings*, LowHistoricVolume*, SweepsFollowedByFloor). SweepsFollowedByFloor is the highest-conviction rule per UW classification. CRITICAL: ask-side OTM call cluster alerts are FADE candidates, not confirmation (per contrarian-aggressor finding). |
UW Option Trade - /full-tape/{date} (every options trade for the date) | L1 (historical IMPULSE substrate archival, NOT live feed) | Yes - archival only. Pull once after close, write to local Parquet. Gigabytes/day. DO NOT use intraday - use option-contract /flow for live per-contract data instead. |
Flow-alert rules definitions (unusualwhales.com/option-flow-alerts/rules) | L1 (semantic reference for the 9 alert_rule values) | Future fetch. API docs only enumerate names, not detection logic. Need a separate concept page from the main-site rules page. |
UW Screener (uw-api-screener) - /screener/option-contracts (60+ filter parameters) | L1 (LOAD-BEARING; programmatic 0DTE candidate discovery) | Yes - LOAD-BEARING. Most expressive query surface in the API. Replaces full-chain polling for SPY 0DTE discovery. Lets you find the exact contracts where the contrarian-aggressor fade pattern is forming. |
UW Screener - /screener/stocks (40+ sort keys, 60+ filters) | L1 (constituent monitor for SPY top-25 + mag7) | Yes - load-bearing. 5-15 min polling cadence. Feeds the SPY-implied flow tape. |
UW Screener - /screener/analyst-ratings | L2 (swing-trade ratings context) | No, L2 only. |
UW Seasonality (uw-api-seasonality) - /market, /SPY/monthly, /SPY/year-month | L1 (calendar prior, NOT a gate) | Yes - prior only. Session-start one-shot pull (3 HTTP calls). Modulates Setup Hunter confidence threshold; never vetoes trades. Variance flag (year-month stddev) must be high or seasonality average is misleading. |
UW Seasonality - /month-performers | L2 (per-ticker best-of-month picks) | No, L2 only. |
| UW Politician Portfolios (uw-api-politician-portfolios) (all 5 endpoints) | L3 (positional view of disclosures; companion to uw-api-congress) | No, L3 only. Significant data overlap with Congress controller - confirm exact semantic difference on first real fetch. |
| UW Companies (uw-api-companies) - splits + dividends | L1 (calendar gates - veto trades into ex-div prints) | Marginal, SPY-only. |
| UW Companies - profile, earnings-estimates, transcripts | L2 (swing-trade context, NLP research) | No, L2 only. |
| UW Congress (uw-api-congress) (all 4 endpoints) | L3 (trend / disclosure-driven) | No, L3 only. Filed for future. |
| UW Commodities (uw-api-commodities) | L3 (macro overlay) | No, L3 only. Filed for future. |
| MK2 scoring corpus | L1 (corpus validation) | Yes. |
| 1Y UW Parquet bundle | L1 OOS validation | Yes. Unblocks the 1Y OOS_PASSED gate. |
6.2 Drift checklist
Before adding any new data source to MK3, ask:
- Which layer does this serve?
- If L1: does the SPY hunter design (2026-05-15-mk3-setup-hunter-architecture) actually use it? Or is it speculative?
- If L2 or L3: file the reference, do not wire it into MK3 code.
If a Codex handoff or plan doc starts pulling Congress / Commodities / fundamental data into MK3 logic, that’s a scope leak. Reject it, re-route to a future layer’s plan.
7. The one thing
The only way this works is if every decision is made in service of the engine I am building, not the trade I am taking. Cortana is the asset. Individual trades are fuel. Confusing the two is how this fails.
For MK3 specifically: 5-10 high-conviction winners per day from the SPY hunter (2026-05-15-mk3-setup-hunter-architecture) IS the deliverable. Anything else in the brain right now is preparation for later spokes, not for the L1 build.
8. Sequencing as of 2026-05-23
| Window | Active work | Status |
|---|---|---|
| Now | MK3 = L1 SPY hunter rebuild on Nautilus | Active; M1 env-proof GREEN, Week 1 Codex handoff in progress |
| Now | John’s swing-trade beta (L2) | External; integrate to hub later |
| Now | Trader Tax Status + 475(f) eval | Operations track |
| Post-acquisition | L1 + L2 running live, attributed performance at hub | Future |
| Post-acquisition | L3 design + build (Congress, insider, macro) | Future |
| Long term | Multi-regime live track record → signal-service product | Future |
9. Related
- Source doc: 2026-04-23-cortana-north-star (full text, April 2026)
- MK3 design: 2026-05-15-mk3-setup-hunter-architecture
- Data foundation: 2026-05-15-mk3-data-foundation-constraint
- Latest empirics: 2026-05-22-uw-historical-findings
- UW API surface (filed by controller): uw-api-gex-greeks · uw-api-alerts · uw-api-commodities · uw-api-companies · uw-api-congress
- Hub-and-spoke detail: hub-and-spoke-signal-engine