3.5 KiB
AI_ICT Doctrine Kernel Time / Session Kernel D5 2026-05-22 v1
Scope
D5 rebuilds time and session from loose labels into measurable session-quality gates. This slice follows docs/ICT交易全书_出版终校版.md and keeps the hard mainline chain:
Range / Draw / Location -> Liquidity / Sweep / Inducement / Path -> Displacement / MSS / FVG / Retest / Session -> backtest evidence -> pre-market plan -> intraday unique focus or no-trade reason -> journal / study-notes feedback.
Product Rule
Asia, London, NY AM, NY PM, killzone, Judas/manipulation window, opening range, weekly profile, and news/no-trade time are not buy/sell signals. They can only qualify or block a setup after the system can state:
- the exact session code and whether the candidate occurred inside a verifiable session window,
- whether the active Trading Plan allows that session,
- the killzone name and state,
- whether Judas/manipulation is still in a wait-only phase,
- whether the opening range reference is resolved,
- the weekly/day profile,
- whether a news or low-liquidity no-trade window is active,
- the session-specific invalidation.
If those items are missing, Strategy Backtest and Trader Cockpit must keep the setup as study_only or wait.
Implemented Kernel
Code anchor: src/services/ict_mainline/doctrine.py
New phase:
DOCTRINE_SESSION_PHASE = D5_TIME_SESSION_KERNEL
New registry/API:
GET /trading/time-session-kernelbuild_time_session_kernel_registrylist_time_session_rules
New backtest surface fields:
time_session_backtest_featurestime_session_kernel_statustime_session_kernel_summarytime_session_kernel_status_countstime_session_kernel_reason_countsby_time_session_code
D5 Rules
-
session_window_verifiableSession names are context windows. A setup must prove it occurred inside the allowed session window. -
killzone_reaction_windowKillzone is a timing filter only. It cannot create direction or override missing Range / Draw / Location. -
judas_manipulation_sequenceJudas/manipulation is wait-only until post-manipulation confirmation exists. -
opening_range_delivery_stateOpening range defines early reference and delivery state. Early motion is not enough. -
weekly_profile_alignmentWeekly/day profile must be declared before an intraday setup can be promoted. -
news_time_no_trade_guardHigh-impact news and thin-liquidity windows are explicit no-trade guards.
Promotion Gate
The D2 playbook now requires D5 Time / Session fields before promotion:
session_codesession_window_stateallowed_sessionskillzone_namekillzone_statejudas_window_stateopening_range_stateweekly_profilenews_window_statesession_invalidation
The Doctrine Backtest Cohort now blocks promotion unless:
- D2 playbook schema is complete,
- D3 Liquidity Kernel passes,
- D4 PD Array / Reaction Kernel passes,
- D5 Time / Session Kernel passes,
- Strategy Backtest quality gate passes,
- active Trading Plan gate passes.
Read-Only Boundary
D5 does not add order submission, does not change execution_allowed, does not change decision_support_ready, does not change real_live_ready, and does not loosen risk governor / trust bucket / operator confirmation protocol.
Next Slice
D6 should rebuild the Model Playbook Kernel: convert the book-derived models into full setup playbooks with required Range / Draw / Liquidity / PD Array / Session / Confirmation / Invalidation / Target fields and batch-backtest cohorts.