New Capital Committee, Inc. · CIK 0002110927 · cbmas-vm runtime architecture · 26 Jul 2026 · external review & production directive appended 28 Jul 2026
CLAUDE-DYNAMIC ANATOMY v2.2
Every file, folder, skill, and MCP server in the living context OS — what it holds, who writes to it, and which layer owns it. Merged with the cbmas-vm cheat sheet: twelve layers, the six non-negotiables, gates 0–9, and the exception register.
Two roots. Global holds identity and never leaves your machine. Project holds the workspace and is fully git-tracked, except the .local overrides.
╔═ GLOBAL ROOT ═══════════════════════════════════════════════╗~/.claude/
├── CLAUDE.md76-token identity · humans only · monthly review
├── skills/model-invokable · shared across ALL projects
└── plugins/npx skills add owner/repo --skill name╔═ PROJECT ROOT ══════════════════════════════════════════════╗ncc-workspace/
├── CLAUDE.md4k · self-correcting · [LEARNED RULES] block
├── CLAUDE-Dynamic.mdGENERATED artifact· //export-project-instruction
│ → paste into Project Instruction field
├── CLAUDE.local.mdpersonal overrides · NEVER commit
├── .mcp.jsonroot only, never in .claude/ · ${ENV_VAR} secrets
├── .gitignore blocks *.local.* and all secrets
│
├── .claude/the brain — everything below loads on demand
│ ├── settings.json permissions · hooks · tool config (committed)
│ ├── settings.local.json machine-specific · gitignored
│ ├── skills/project-scoped skills
│ │ ├── commit-push-pr/
│ │ └── review-pr/
│ ├── agents/sub-agents · own context window each
│ │ ├── code-reviewer.md
│ │ ├── security-auditor.md
│ │ └── debugger.md
│ ├── hooks/52 deterministic shell triggers
│ │ ├── session-start.sh
│ │ ├── pre-commit.sh
│ │ └── lint-on-save.sh
│ ├── rules/glob-scoped · load on path match
│ │ ├── securities.md
│ │ └── court.md
│ ├── commands/33 canonical slash commands
│ └── output-styles/30 Format & Style Modifiers, 6 families
│
├── .claude-dynamic/RUN-TIME · auto-generated
│ ├── sessions/2026-07-26_0715/
│ │ ├── context.jsonL1 playbook snapshot
│ │ ├── decisions.mdPlan Mode approvals
│ │ ├── artifacts/L9 output routing staging
│ │ └── notes.md
│ ├── memory/
│ │ ├── facts.jsonlCurator delta context · append-only
│ │ ├── preferences.jsonl
│ │ └── learned-rules.mdfeeds back into CLAUDE.md
│ ├── worktrees/parallel isolated sessions
│ └── telemetry/usage · latency · errors (L6)
│
├── notes/[task-id].md unlimited · Curator writes after every task
├── audit/SEC 17a-4 · append-only JSONL · 7-yr retention
│
├── deals/Reg D 506(b) · 506(c) · Reg S
├── compliance/CBMAS · Title IV · regulator submissions
├── clients/NCC Working Group
├── research/FRCP templates · circuit filings
└── trading/AMP Futures · Rithmic R|API · OSO/OCO chains╔═ cbmas-vm — THE BOUND REPO ═════════════════════════════════╗cbmas-vm/
├── CLAUDE.md6 non-negotiables · read first
├── claude-dynamics.mdv2.2 · 12 layers bound to this repo
├── MANIFEST.mdDERIVED· regen_manifest.py · never hand-edit
├── CERTIFICATION.md what was checked, what failed
├── DEPLOYMENT.md GCP hardening, ordered
├── RUNBOOK.md 2 touchpoints · incidents
├── premarket/decision layer
│ ├── gate5_ev.pyrealized economics
│ ├── sigma_targets.pygeometry · k_t in σ (model A)
│ ├── delta_optimiser.pyselection · maximise δ_lo (model C)
│ ├── two_step.pyselection → geometry
│ ├── frequency_optimiser.pythe OTHER k_t (model B)
│ ├── session_calendar.pyDST · 28 degraded days
│ └── gate_register.pygates 0–9 · only 7 defined
├── execution/risk cap · Rithmic adapter
├── steer/shadow ledger · fill fidelity
├── matlab/2nd implementation + selftest
├── analysis/vault ingest → δ → propagate
├── diagrams/6 .mmd + 2 viewers
├── infra/ deploy/GCP · Docker · systemd
├── tools/ .github/generators · CI guards
└── .claude/
├── settings.json deny deploy / secrets / commit
└── commands/3 slash commands — the only real ones
02 — MEMORY TIERS
Three files, three scopes
The most common failure is putting project detail in the global file. Keep the ladder strict.
File
Scope · budget
Written by
~/.claude/ CLAUDE.md
Global identity 76 tokens
Humans only monthly review
./CLAUDE.md
Project 4,000 tokens
Self-correcting weekly review
CLAUDE- Dynamic.md
Deployment artifact
Curator, on //export
CLAUDE. local.md
This machine gitignored
You
./notes/ [task].md
Per task unlimited
Curator, after every task
Self-correction loop. Mistake → you correct → close with “Update your CLAUDE.md so you don’t make that mistake again.” Claude appends to [LEARNED RULES]: “[DATE] Never: x. Always: y.”
Sync rule. The skill is source of truth; CLAUDE-Dynamic.md is a build output. Never hand-edit the artifact — re-export it.
03 — THE TWELVE LAYERS (v2.2)
Layer spine · bound to this repo
Ordered because the order is real: context is assembled before agents run, agents before tools, tools before the guardrails that grade the result. v2.2 adds L5a for the δ/k_t symbol collision and L12 for backtest ingest.
ultrathink required for boundary, ledger, and promotion work
L5
MCPs
all disabled inside the 07:00–08:30 PDT window
L5a
Model duality
δ / k_t symbol collision — every call must state which model
L6
Observability
qc_analyze · hashchain · watchdog 120 s
L7
Security & audit
guard · gates 0–9 · SEC 17a-4 + GCS Bucket Lock
L8
Error recovery
hash break → STOP. MATLAB absent → blocking, not deferred
L9
Output routing
never writes to ledger/cbmas/
L10
Context window
program.md is read-only (ORIENT)
L11
Plan mode
required before any threshold change
L12
Backtest ingest
vault read-only · separate GCP project
04 — ACE PIPELINE & THINKING TIERS
Generator → Reflector → Curator
Each role has a default thinking budget. Escalation is rule-driven, not vibes: risk flags force the top tier and open the approval gate.
GENERATOR[T] 4k
Reads Static Core + Dynamic Context + Workflow Tree + Deltas + Skills. If Plan Mode is active: produces the plan only, zero tool calls.
↓ trajectory
REFLECTOR[M] 10k
Grades the trajectory. Emits confidence score and citations_verified. Low confidence routes back to Generator.
↓ insights
CURATOR[M → U]
Writes delta context items — append-only, task_id tagged, audit-logged. Owns notes/ and the memory jsonl files.
↓ high-stakes only
OPUS PERMISSION GATE[U] 32k
SEC filings · litigation packages · changes to CLAUDE.md rules. Human approval required to pass.
↺ delta context feeds the next Generator pass
Tier
Budget
Default owner
Use for
think [T]
4,000
Generator
Templated output, KYC, captions, queries
megathink [M]
10,000
Reflector · Curator
Multi-step legal/financial, IRAC, loops
ultrathink [U]
31,999
Opus gate
SEC filings, litigation, rule changes
interleaved [I]
per block
multi-tool ACE
Thinking between tool calls
/effort [E]
persistent
session-wide
Standing low / medium / high control
Auto-escalation.RISK_ALERT: on → [U] always + Plan Mode opens. COMPLIANCE_REVIEW: on → minimum [M]. Sub-agent orchestration → [U] to plan, [T] per sub, [M] to synthesise.
05 — CLAUDE.md · THE SIX NON-NEGOTIABLES
Read first. Everything else is downstream of these.
1 · Broker layerAMP Futures = FCM. Rithmic R|Protocol = data + execution. Zero IBKR — R12, CI-enforced. Ports 7497/7496 and client_id are IB concepts, rejected at load.
2 · Entity“New Capital Committee, Inc.” only. Never an LLC variant.
3 · ScriptBoundaryGuard07:00–08:30 PDT the signals dir is read-only. No LLM, no external API. It is a mount, not app logic.
4 · Nothing goes LIVE by editing a filestatus: LIVE fails docker build unless every promotion condition is met.
5 · Badges are never upgradedSIMULATED stays SIMULATED. Paper results are not performance.
6 · Approval asymmetryTightening → adopt now. Loosening → recorded approval and resets the qualification clock.
06 — ALPHA SIGNAL GRAPHS · L2-QUANT WALK-FORWARD
Does the signal clear the floor?
The naive argmax picks the same rule string in both regimes. Only the lower bound and the overfitting probability tell them apart. Each chart carries its evidence tier.
δ_lo vs floor 0.375documented
Wilson lower bound of δ against the project floor of 0.375. The bound is the objective — maximising the point estimate across a candidate set manufactures edge that is not there. The synthetic edge arm clears by 0.081.
PBO via CSCV — 0.50 / 0.80documented
PBO via CSCV — the fraction of trials where the in-sample winner lands below the out-of-sample median. Accept below 0.50, hard reject above 0.80. Noise lands at 0.81, inside hard reject.
δ vs confluence thresholdillustrative
Curve shape is illustrative — only the confluence-9 boundary and the δ=+0.520 point at confluence 12 come from telemetry. Below 9 the series sits inside the noise band; the far tail decays as n starves.
δ(k) — model B, frequencytheoretical model
Forward action once the floor is cleared. Solved numerically — the circulated closed forms are wrong (see panel 06). The risk term is divided by 2k, not multiplied by it.
C(k) = F₀ + F₁√k + F₂k · δ(k) = k(α_g − C(k)) − γσ²/(2k) · maximise numerically over k
07 — SIGNAL ACCEPTANCE GATE
Same rule. Opposite verdict.
Two runs, 600 synthetic trades each. Both arms select confluence>=12. The argmax is not the discriminator.
verdict clears the floor. Solve k_t. Pipeline-validation example only — not evidence of live market alpha (panel 20).
Gate
Noise
Synth
δ_lo ≥ 0.375
−0.051 ✗
+0.456 ✓
PBO < 0.50
0.81 ✗
0.00 ✓
WFER > 0.50
—
0.96 ✓
n ≥ 30
123
129
The naive search finds a positive δ in pure noise. That is the whole reason the guard exists. Three escalating defences: Wilson lower bound as the objective (penalises small n) · walk-forward WFER (edge that does not persist) · PBO via CSCV (in-sample winner below the OOS median).
n ≥ 30 is eligibility, not ranking. Below 30 a candidate is excluded outright — never merely ranked low.
Skill ownership.l2-quant runs walk-forward, PBO, and CSCV. angelic-ai grades the realised session post-close. audit runs the requirement-by-requirement gap check.
08 — δ / k_t MODEL DUALITY (L5a)
Two meanings of the same two symbols
The collision is the reason L5a exists. Every call that uses δ or k_t must state which model it means, or the number is uninterpretable.
A · GEOMETRY
sigma_targets.py
δ = signal edge = π_measured − π_driftless
k_t = TARGET DISTANCE in σ
π_driftless = k_s / (k_s + k_t)
⇒ EV = 0 at every k_t
R:R is not a lever. Program: measure δ, then solve k_t.
δ floor (lower bound)0.375
optimum k_t4.1 σ
realized R:R there1.52
time barrier √184.24 σ max
B · FREQUENCY
frequency_optimiser.py
δ = EV per year (the OBJECTIVE)
k_t = TRADE FREQUENCY per year
C(k) = F₀ + F₁√k + F₂k
δ(k) = k(α_g − C(k)) − γσ²/(2k)
Program: maximise δ(k) over k directly, numerically.
k* NCC calibration66.5/yr = 0.26/session
EV at k*495 bps/yr
net α per trade7.4 bps
vs the 6-trade request≈23× too frequent · 57× withdrawn (panel 24)
C · SELECTION GUARD
delta_optimiser.py
Decides which δ you are allowed to hand to model A. Neither model helps if the δ fed into it is an artifact. The objective is the Wilson lower bound of δ, never the point estimate.
On the noise record two_step refuses step 2 outright:
“target geometry cannot manufacture edge that the signal does not have.”
Both models independently say the same thing: fewer, better trades. A raises the confluence bar; B puts the optimum at a quarter-trade per session; C decides whether either is entitled to run.
⚠ TWO ERRORS IN THE CIRCULATED VERSION OF MODEL B — DO NOT COPY THEM
The stated quartic 2F₂x⁴ + (3/2)F₁x³ + (F₀−α_g)x² − γσ²/2 does not follow from its own derivative. Substituting k = x² into k²·dδ/dk gives degree 6, not degree 4.
The flat-cost case k* = √(γσ²/(2(α_g−F₀))) has no real root. With F₁ = F₂ = 0 the derivative is (α_g−F₀) + γσ²/(2k²) > 0 always. There is no interior optimum in the flat-cost regime — frequency runs to a constraint, not to a stationary point.
This repo solves numerically. A closed form that is wrong beats nothing, badly.
09 — SKILL REGISTRY (L2)
What the model can pick up
Skills are selected by description match, so the description field is the routing logic. Amber = banking, securities, and forensics. Teal = architecture and orchestration.
Open finding — reserved terminology in skill descriptions. The installed global-market and orb-execution skill descriptions still name IBKR and IB ports 7497/7496. The CI guard scans HTML and Markdown in the repo; it does not reach ~/.claude/skills/. Run purge_ibkr and regen_all_skills against the skill tree, then re-verify.
Naming constraint. The Skills install panel rejects the word “claude” in the name field — the bundle ships as dynamics, never claude-dynamics. Validated at every rebuild.
10 — MCP SERVERS (L5)
.mcp.json
Project root only. Secrets by ${ENV_VAR} reference, so the file is safe to commit.
Server
Gives the agent
sequential- thinking
Structured multi-step reasoning chains
context7
Live library and API documentation
gws-workspace
Drive · Gmail · Calendar · Sheets via gws CLI v0.22.3 — replaces the individual connectors
Vault read/write across deals · compliance · clients · research
github
Repos, PRs, wiki — fine-grained PAT, least privilege
ruflo
disabled by default. v3.5.0 — 60+ agents, 259 tools, for swarm work only
All MCPs are disabled inside the boundary window. 07:00–08:30 PDT: no LLM call, no external API, no write. Enforced by the :ro mount, not by app logic — make boundary proves it.
Logseq write contract. Agent writes carry claude-delta: true in frontmatter and a [claude-delta] git prefix. Human edits use [human]. No live execution through the vault.
11 — COMMANDS · REAL ONES ONLY
Circulated command posters are mostly fiction
claude.ai has no general slash-command system. /godmode, /devil, /10x, /ghost, /scout, /ooda and most of the “89 commands” send the literal string as prompt text. They can appear to work — so does typing “be aggressive” — but they are prefixes, not features. Do not build automation on them. Real: Claude Code built-ins (run /help), plus everything below.
make test · 59 tests make preflight · R12 · arbiter · costs · LIVE make certify · python → MATLAB → xval make matlab-test · make crossvalidate make fixtures · make manifest · make check-docs
Daily operation
make connections · 05:30 clock · plants make clock · NTP, fails above 100 ms make run-all / run-orb · 03:30 · 06:00 make run-post-close · 16:00 Angelic + ACE make boundary · prove signals mount is :ro make status / logs
Backtest & analysis
make vault · read-only clone make delta · the Stage 1 decision number make findings · δ · σ · slippage make propagate · dry-run, APPLY=1 to write make analysis-deploy / -run
Deployment
make deploy / rollback · preflight-gated make promote-check · read-only 26-step ./infra/provision_vm.sh · VM · SA · NAT ./infra/secrets.sh · stdin, never argv ./infra/firewall.sh · default-deny egress ./infra/gcs_worm.sh · 17a-4 Bucket Lock
set a profile LIVE · set costs.measured without LIVE fills · change gate thresholds, risk limits or execution logic · write to vault/ audit/ ledger/ signals/ · git push or commit · run an LLM call inside 07:00–08:30 PDT
12 — DAILY RHYTHM
America/Los_Angeles
Time
What
Attended
03:30
premarket timer → S1–S5
no
05:30
touchpoint 1 · make connections
yes
06:00
make run-orb
yes
07:00–08:30
boundary window · monitor only
yes
08:30
auto-flatten
no
16:00
ACE · Angelic → Reflector → Curator
yes
Target ≤ 30 min/day, ≥ 95% autonomous. Measure unplanned interventions, not elapsed time — workarounds hide inside the 30 minutes.
13 — GATES 0–9
7 defined, 3 undefined
#
Gate
State
0
Circuit-breaker ladder
def
1
Time window 10:00–11:30 EDT
def
2
PBO < 0.50 · > 0.80 reject
def
3
Confluence ≥ 9 (raised from 7)
def
4
QE ≥ 0.50
def
5
R:R ≥ 1.5 AND EV ≥ 0.25R realized
def
6
Position age < 60 min
def
7–9
UNDEFINED — do not invent
gap
Completeness reporting. Report as “100% of defined gates (7 of 10 defined)” — never as an unqualified 100%.
14 — ENFORCEMENT
Code, not convention
Load time.profile_arbiter refuses an ineligible LIVE profile; docker build fails.
Mount. signals is :ro during the window. make boundary proves it.
Three generators.regen_manifest · regen_all_skills · check_docs. Prose that describes code is derived, so the build fails instead of drifting silently.
Propagation.apply_findings rewrites marker blocks only; exits non-zero on LIVE promotion.
Cross-validation. 468 σ + 5 Wilson + 3 δ cases at 1e-9. MATLAB absent ⇒ deferred-local = blocking.
Sizing.session_risk_cap before every entry, not on a schedule.
15 — MANIFEST
Derived — never hand-edit
Regenerated by regen_manifest.py. Two lists matter more than the current one.
build_deploy_v1.mmdinvented B.U.I.L.D. letters, 4 of 5 wrong
agent_build_steer_v1.htmlrenders both
INSTALL.mdclaimed propagation that never happened
risk_engine.m — pre-07-26erfinv tail 0.50 vs 2.33; Student-t CDF diverged for |x| > √ν
The MATLAB entry matters most. A stale copy returns wrong Student-t quantiles silently. The diagrams announce themselves as wrong; that file does not.
SUPERSEDED — REPLACED, NOT INCORRECT
steer_direct_improve_v1diagrams/steer.mmd
ecosystem/patterns v2diagrams/*.mmd v3
cbmas-trade-logic-v4/this repo
additive edge modellog-odds (legacy flag kept)
CHANGELOG_v2.2.mdMANIFEST + DEPLOYMENT
16 — EXCEPTION GOVERNANCE
The critical-path blocker to Stage 1
An exception is any deviation from the intended workflow — including ones with good outcomes. A profitable trade taken outside the window is an exception. A manual intervention that saved money is an exception. Register only the costly ones and you get a record that flatters the system.
Code
Class
Sev
E1
Boundary violation — LLM/API/write inside the window
CRIT
E2
Gate bypass — trade with gates 0–6 not all passed
CRIT
E3
Risk-cap breach — no halt fired
CRIT
E4
Evidence gap — fill/ledger mismatch, hash break
CRIT
E11
Loosening without approval + clock reset
CRIT
E5
Unplanned intervention inside the window
HIGH
Code
Class
Sev
E6
Config drift — deployed ≠ committed
HIGH
E7
Certification lapse — traded while deferred-local
HIGH
E8
Degraded session counted without a decision
MED
E9
Measurement substitution — badge dropped
MED
E10
Feed degradation — fallback tier, watchdog stale
MED
E12
Schedule miss — pipeline/ACE/touchpoint
LOW
1 · Classify before the outcome is known. Adjudicating after seeing P&L is anchored adjudication.
2 · Three occurrences of a class force a rewrite of the control — not a third workaround.
3 · A workaround is a tracked failure, not an adaptation.
Adjudication columns are deliberately blank. The taxonomy and severity ordering follow from controls already in the code. The adjudications are risk-tolerance decisions about your capital — a table filled in by anyone else would look complete while representing nobody's judgement.
Broker accuracy. AMP Futures / Rithmic R|API is the sole execution platform. Rithmic OSO/OCO chains with explicit parent-child linking. No other broker's terminology appears in any output, draft, or skill file — the regression test blocks it.
Ledger separation. The Trading Ledger and the CBMAS evidentiary ledger are hard-separated. Different anchors, different retention paths.
Brand discipline. CED tokens never appear on NCC investor-facing surfaces, and the reverse. NCC runs IBM Carbon dark, IBM Plex Mono display + Plex Sans body; CED runs navy/red with Poppins.
Evidence integrity. Every public-facing claim carries an evidence badge — documented evidence, theoretical model, illustrative simulation, or proposed methodology. No entity-level findings originate from an agentic system; human review tiers are required.
Validation before delivery. Every bundle rebuild passes the Python suite — frontmatter, description ≤1024 chars, reserved-word exclusion, Layer Router path resolution, key-term presence — plus round-trip zip verification, before staging to the outputs directory.
Signal acceptance. No sizing, no k_t solve, and no live order without δ_lo ≥ 0.375, PBO < 0.50, WFER > 0.50, and n ≥ 30. A naive argmax result is a candidate, never an authorisation.
Derived files are never hand-edited. MANIFEST.md, and any prose describing code, is regenerated. check_docs fails the build rather than letting documentation drift silently.
Output contract. Every task has a delivery target and an explicit confirmation. Email is never auto-sent. Timezones are always stated.
External review — appended in whole · 28 Jul 2026
Independent review of the public page dated 26 Jul 2026. The framework is directionally strong, but several displayed values must be reconciled before they should control live trading. Marks: 🔴 blocking · 🟠 correct · 🟢 retain. Corrections already applied above: “REAL EDGE” now reads SYNTHETIC EDGE-PRESENT SCENARIO (panels 06–07), and the frequency comparison shows ≈23×, with 57× withdrawn (panel 08).
19 — REVIEW · BOTTOM LINE & MARKED RECOMMENDATIONS
Do not treat sigma as R:R
Alphathe strategy’s expected return or measurable edge after costs.
Sigma (σ)the volatility scale used to normalize target and stop distances.
R:Rtarget distance ÷ stop distance.
Sigma can define the geometry of the trade, but σ and R:R are not the same variable.
Mark
Finding
Recommended change
🔴
Alpha is not yet proven on real data
Keep the system in SHADOW.
🔴
The δ threshold conflicts with Gate 5
Reconcile the units and definition of δ.
🔴
Nominal R:R can overstate expectancy
Gate on realized, net R:R and net EV.
🔴
The 4.1σ target nearly touches the 4.24σ time barrier
Test a lower target around 3.4–3.6σ.
🟠
The displayed “57× too frequent” calculation appears incorrect
Recalculate and correct the dashboard.
🟠
“REAL EDGE” is based on synthetic trades
Rename it to “Synthetic Edge-Present Scenario.”
🟠
Thirty trades is too weak for production promotion
Keep n ≥ 30 as eligibility only.
🟢
Wilson lower bound, PBO, CSCV and WFER are appropriate safeguards
Retain and strengthen them.
20 — REVIEW 🔴 1 · NO CURRENT LIVE ALPHA CLAIM
Do not claim current live alpha
The page states that the acceptance examples use 600 synthetic trades, while the open blockers say:
costs.measuredfalse
δ on real dataunmeasured
SHADOWnothing leaves it
MATLABnot executed in the licensed environment
Therefore, the displayed δ = +0.520, δ_lo = +0.456, WFER = 0.96 and PBO = 0.00 demonstrate that the pipeline can recognize an injected signal; they do not demonstrate market alpha.
Current wording (superseded)REAL EDGE — above confluence 9
Recommended wording — applied on this pageSYNTHETIC EDGE-PRESENT SCENARIO — pipeline-validation example only; not evidence of live market alpha.
Do not publish “real edge” until the figures come from untouched, timestamped out-of-sample market data with commissions, exchange fees, slippage, rejects and unfilled orders included.
21 — REVIEW 🔴 2 · RECONCILE THE δ FLOOR WITH GATE 5
The δ threshold conflicts with Gate 5
The page displays: target 4.1σ · realized R:R 1.52 · time barrier 4.24σ · δ floor 0.375 · Gate 5: R:R ≥ 1.5 and realized EV ≥ 0.25R. Using the displayed geometry:
k_s = 4.1 / 1.52 = 2.70 σ
p₀ = 2.70 / (2.70 + 4.10) = 39.68 % driftless probability shown by the model
p_min = 1.25 / (1 + 1.52) = 49.60 % win rate for EV = 0.25R before costs
δ_min = 49.60 % − 39.68 % = 9.92 % minimum probability edge consistent with Gate 5
But the page requires δ ≥ 37.5 percentage points. Under the page’s stated definition, that would imply:
required win probability≈ 77.18 %
expected value≈ 0.945R per trade before costs
That is far more restrictive than the separate EV ≥ 0.25R requirement. Choose one of these definitions and use it everywhere:
1 · Probability edge. δ = p_measured − p₀
2 · Standardized signal score. Label it something other than a probability difference.
3 · Net expectancy in R. α_R = p·W̄_R − (1−p)·L̄_R − c_R
Recommendation. Make net expectancy in R the primary authorization metric and retain δ as a diagnostic measure.
22 — REVIEW 🔴 3 · GATE ON NET REALIZED R:R
Not the order-ticket ratio
A submitted 1.52 R:R is not necessarily a realized 1.52 R:R. Partial fills, stop slippage, early flattening, timeouts and commissions alter both sides. Use:
EV_R = p·(average realized winner in R)
− (1 − p)·(average realized loser in R)
− costs in R
For the displayed 1.52 R:R, the win rate required for EV ≥ 0.25R becomes:
All-in cost
Minimum win rate
0.00R
49.60%
0.05R
51.59%
0.10R
53.57%
0.15R
55.56%
Replace Gate 5 with: realized net R:R ≥ 1.50, realized net EV lower confidence bound ≥ 0.25R, and costs measured from live fills. The lower confidence bound matters more than the point estimate.
23 — REVIEW 🔴 4 · TARGET vs TIME BARRIER
Add distance between the target and time barrier
The target of 4.1σ is only 0.14σ below the displayed 4.24σ maximum — about 97% of the barrier. That leaves very little tolerance for: volatility-estimation error · slower price discovery · regime changes · spread expansion · execution delay · the 60-minute position-age gate. The page itself lists target 4.1σ, barrier 4.24σ and position age under 60 minutes.
proposed cap k_t ≤ 0.85 × 4.24σ = 3.60σ
to preserve 1.5 R:R k_s ≤ 3.60 / 1.50 = 2.40σ
Proposed shadow test — test these target bands separately:
band 13.2σ
band 23.4σ
band 33.6σ
controlcurrent 4.1σ
Rank them by net-EV lower bound, not by raw average profit. A lower target can improve alpha when the increase in completion probability exceeds the reduction in reward size.
24 — REVIEW 🟠 5 · CORRECT THE FREQUENCY COMPARISON
≈23×, not 57×
The page displayed: optimal frequency 66.5 trades per year · equivalent 0.26 trades per session · six-trade request “approximately 57× too frequent”. Using those displayed numbers:
6 / 0.26 ≈ 23.1
Therefore, six trades per session is approximately 23×, not 57×, the stated optimum. The 57× figure may use a different session-duration adjustment, but that denominator is not displayed. Correction applied in panel 08.
annual qualifying-entry budget : 67
maximum entries per session : 1
typical session : 0 entries
additional entry : requires a separately
independent signal
Do not interpret “one maximum” as “one required.” The model’s optimum is roughly one trade every four sessions.
25 — REVIEW 🟠 6 · CONFLUENCE 12 IS NOT EVIDENCE
Do not hard-code the synthetic winner
The page correctly says that the naïve optimizer selects confluence >= 12 in both noise and edge-present synthetic data. That proves the rule string itself is not evidence. Recommended structure:
confluence ≥ 9 : candidate eligibility
test 9 · 10 · 11 · 12 independently
in walk-forward windows
select using δ lower bound
or net-EV lower bound
require minimum sample size
in every regime
freeze the selected threshold
before the final untouched test
PBO through CSCV is designed to estimate whether a backtest winner is likely to disappoint out of sample. The page is right to use it — Bailey, Borwein, López de Prado & Zhu, The Probability of Backtest Overfitting (SSRN 2326253).
26 — REVIEW 🟠 7 · STRENGTHEN SAMPLE REQUIREMENTS
n ≥ 30 is eligibility, never promotion
The page correctly states that n ≥ 30 is eligibility rather than ranking. It should also not be sufficient for live promotion. Recommended separation:
regime requirementminimum sample in each relevant regime
The actual promotion sample should be calculated from the smallest economically useful alpha, desired confidence and observed variance. A provisional 100-trade requirement is better than 30, but it is not a substitute for that calculation.
Add the Deflated Sharpe Ratio or an equivalent multiple-testing correction to account for the number of parameter combinations attempted and non-normal returns — Bailey & López de Prado, The Deflated Sharpe Ratio (SSRN 2460551).
27 — REVIEW · RECOMMENDED DASHBOARD REPLACEMENT
Two replacement panels
Display these fields instead of the current alpha and geometry summaries.
Alpha panel
Gross expectancy per trade
Commissions and exchange fees
Median slippage
95th-percentile slippage
Net expectancy in R
Net expectancy lower confidence bound
PBO
WFER
Deflated Sharpe Ratio
Number of configurations tested
OOS trades by regime
Fill rate
Reject rate
Timeout rate
Sigma / R:R panel
Volatility estimator
Volatility horizon
Target distance in σ
Stop distance in σ
Nominal R:R
Average realized winner in R
Average realized loser in R
Realized net R:R
MFE distribution
MAE distribution
Time-to-target distribution
Time-to-stop distribution
Time-barrier exit percentage
Overall assessment. The selection safeguards are stronger than the geometry and economic-accounting layers. The highest-value improvement is not increasing the displayed R:R. It is measuring net live alpha, reconciling δ with Gate 5, lowering target-to-time-barrier saturation, and sharply reducing trade frequency.
CBMAS Futures Trading Terminal — production quantitative review, reconciliation & risk-control upgrade · appended in whole · 28 Jul 2026
Directive to a senior quantitative trading engineer responsible for execution quality, statistical validation, market-data integrity, risk controls, and production reliability. Audit and correct the terminal using: the 27 Jul 2026 AMP/Rithmic execution records · the current alpha-and-sigma research page · the live terminal’s planned entry, stop, and target geometry · actual broker fills, fees, slippage, order status, and position state · the requirements in panels 29–48. Do not optimize for attractive backtest results. Optimize for: net out-of-sample expectancy · execution-adjusted alpha · capital preservation · reproducibility · statistical validity · operational safety · complete auditability. Do not enable or expand LIVE trading as part of this work. All changes must initially operate in SHADOW or PAPER mode until every promotion gate is satisfied.
29 — DIRECTIVE §1 · JULY 27, 2026 TRADE RECONCILIATION
Raw broker fills are the source of truth
Do not infer executions from submitted orders, canceled orders, completed order rows with blank fill prices, chart annotations, or strategy intentions. Reconcile the six completed round trips below and verify the reconciliation values directly from the broker records. Produce an explicit exception report if any fill cannot be paired one-to-one into a round trip.
#
Sym
Entry
Exit
Points
Gross P/L
1
MNQ
28,329.00
28,333.00
+4.00
+$8.00
2
MNQ
28,322.00
28,326.00
+4.00
+$8.00
3
MNQ
28,325.50
28,329.50
+4.00
+$8.00
4
MNQ
28,328.25
28,326.00
−2.25
−$4.50
5
MES
7,474.25
7,472.25
−2.00
−$10.00
6
MNQ
28,252.25
28,256.25
+4.00
+$8.00
Expected gross reconciliation
round trips6
winners / losers4 / 2
win rate66.67%
gross winning P/L+$32.00
gross losing P/L−$14.50
gross P/L+$17.50
average gross winner+$8.00
average gross loser−$7.25
gross realized R:R1.1034
gross profit factor2.2069
gross expectancy+$2.9167 per trade
Required invariants
No fill may be counted twice.
Every round trip must contain matched entry and exit quantities.
Buy quantity must reconcile with sell quantity.
Open position quantity must reconcile with the broker.
Strategy state must never override broker position state.
Canceled and rejected orders must not be counted as fills.
Partial fills must be preserved as separate execution events.
All timestamps must be normalized to a single timezone.
30 — DIRECTIVE §2 · FEES, SLIPPAGE, AND NET ALPHA
Remove cost assumptions from production
Import actual: broker commissions · exchange fees · clearing fees · regulatory fees · routing fees · liquidity fees or rebates · entry slippage · exit slippage · stop slippage · cancel-replace costs · partial-fill effects. Until actual broker costs are available, estimated values must be labeled ESTIMATED — NOT BROKER RECONCILED.
Provisional comparison only — $1.78 round-trip cost
six round-trip costs$10.68
estimated net P/L+$6.82
estimated net expectancy+$1.1367 per trade
average net winner / loser$6.22 / $9.03
net realized R:R≈ 0.6888
net expectancy vs average net loss≈ 0.1259R per trade
net profit factor≈ 1.38
break-even win rate≈ 59.21%
Do not present the provisional calculation as final. The production system must calculate:
The terminal currently displays approximately: planned entry 28,105.6901 · stop 27,985.6901 · target L1 28,494.4901 · target L2 28,688.8901. The planned stop distance is ≈120 points, producing theoretical planned geometry of ≈3.24R (L1) and ≈4.86R (L2). However, July 27 MNQ fills occurred between ≈28,252.25 and ≈28,329.00 — the theoretical reward-to-risk was no longer available at the actual fills.
first actual entry at 28,329.00:
risk to displayed stop 28,329.00 − 27,985.6901 ≈ 343.3099 points
reward to L1 28,494.4901 − 28,329.00 ≈ 165.4901 points
at-fill R:R to L1 ≈ 0.4821
reward to L2 28,688.8901 − 28,329.00 ≈ 359.8901 points
at-fill R:R to L2 ≈ 1.0483
Do not use the stale planned entry to authorize a trade after the market has moved.
Record all of: signal price · decision price · order submission price · broker acknowledgement price · actual fill price · stop price at fill · target price at fill · planned R:R · at-fill R:R · realized gross R:R · realized net R:R.
33 — DIRECTIVE §5 · REPLACE THE R:R AUTHORIZATION RULE
Nominal distances no longer authorize
The live-authorization gate must not depend only on nominal target and stop distances. Replace it with: at-fill R:R ≥ 1.50 · realized net R:R ≥ 1.50 over the qualifying evaluation window · net expectancy lower confidence bound ≥ 0.25R · costs measured from actual broker records · all statistical and operational gates satisfied · no authorization may rely on a six-trade sample.
authorization_pass =
costs_measured
and at_fill_rr >= 1.50
and realized_net_rr >= 1.50
and net_ev_lower_bound_r >= 0.25
and statistical_gates_pass
and market_data_gates_pass
and execution_gates_pass
and risk_gates_pass
July 27 classification
positive gross sessionPASS
positive estimated net sessionPROVISIONAL PASS
at-fill geometryFAIL or UNVERIFIED
gross realized R:R ≥ 1.50FAIL
estimated net realized R:R ≥ 1.50FAIL
estimated net EV ≥ 0.25RFAIL
statistical alpha establishedFAIL
production promotionFAIL
34 — DIRECTIVE §6 · CORRECT DELTA AND EXPECTANCY DEFINITIONS
Define every metric unambiguously
The research page uses a delta threshold that may conflict with the separate expected-value gate. If delta means probability edge:
A delta threshold of 0.375, interpreted as 37.5 percentage points, is inconsistent with the 0.25R gate unless intentionally designed to require a much larger edge. Resolve this conflict. Preferred primary metric:
Use probability delta only as a supporting diagnostic.
Do not use the same symbol or variable name for: probability edge · standardized score · expected return · effect size · volatility · reward-to-risk. Add units and definitions beside every displayed metric.
Evaluate each candidate using: net expectancy · net expectancy lower confidence bound · fill rate · target-completion rate · stop rate · time-barrier exit rate · average holding time · median holding time · adverse excursion · favorable excursion · slippage · tail loss · regime stability.
Do not choose the target with the highest backtest P/L. Choose only a configuration that survives untouched out-of-sample validation and multiple-testing correction.
36 — DIRECTIVE §8 · TRADE-FREQUENCY AND CHURN CONTROLS
The last three trades gave back ≈$11.84
July 27 executed six round trips; the first five occurred within approximately four minutes, and the session reached its provisional peak net result after trade 3. Using a provisional $1.78 round-trip cost:
estimated net after trade 3+$18.66
estimated net after trade 4+$12.38
estimated net after trade 5+$0.60
estimated final net after trade 6+$6.82
Do not conclude from one session that three trades is permanently optimal. Implement an A/B SHADOW evaluation — control: hard cap 6 trades; candidate: active cap 3 trades, trades 4–6 continue generating shadow decisions but do not reach the broker.
A session with zero qualifying trades is valid. Do not interpret a maximum as a target. The model’s earlier frequency estimate of ≈0.26 trades per session implies most sessions should have no trade.
Correct any dashboard statement claiming six trades is 57× the optimum unless the denominator and session adjustment are explicitly shown. Using 6 / 0.26, six trades are ≈23.08× the stated per-session optimum. Applied in panel 08.
July 27 behavior suggests: the MNQ loss occurred around 07:03:30 PDT · the MES entry occurred approximately 30 seconds later · the next MNQ entry waited approximately 11 minutes. The per-symbol cooldown may have worked, but the strategy shifted into a closely correlated equity-index instrument. Implement both a symbol cooldown and a correlated-group cooldown.
A realized loss, stop-out, or abnormal adverse excursion in one group member must block new entries across the group. Any exception requires a separately validated diversification signal and an explicit reason code.
Do not treat MNQ and MES as independent risk merely because they have different symbols.
38 — DIRECTIVE §10 · MARKET-DATA FRESHNESS GATE
STALE 15m next to a green LIVE is a defect
The terminal displayed STALE 15m while also displaying LIVE mode. Determine whether that refers to quote age, last completed bar age, chart refresh age, strategy-state age, or dashboard rendering age. Never use one ambiguous stale indicator for multiple data types.
If market data is stale: block all new entries · cancel unfilled entry orders · do not automatically flatten solely because a display bar is old · for open positions, use the broker’s live order and position feed · flatten only under a predefined fail-safe policy when authoritative risk data is unavailable · generate a high-severity alert · persist the exact stale-data reason.
Do not allow a green LIVE indicator while execution permission is blocked without visibly distinguishing configured mode, connectivity state, market-data state, and execution authorization state. Recommended display:
MODE: LIVE_CONFIGURED
BROKER: CONNECTED
MARKET DATA: STALE
EXECUTION: BLOCKED
39 — DIRECTIVE §11 · SYNTHETIC VERSUS REAL ALPHA LABELING
Label injected edges as injected
The research page uses synthetic samples to demonstrate that the validation pipeline can detect an injected edge. Do not label synthetic results REAL EDGE.
synthetic edge runs:
SYNTHETIC EDGE-PRESENT SCENARIO
PIPELINE VALIDATION ONLY
NOT EVIDENCE OF LIVE MARKET ALPHA
noise simulations:
SYNTHETIC NULL SCENARIO
FALSE-POSITIVE CONTROL
Live alpha may be labeled only after: actual costs are measured · timestamp integrity is verified · no look-ahead contamination exists · no data leakage exists · parameters are frozen · untouched out-of-sample evaluation is completed · sufficient trades are collected · regime coverage is adequate · statistical promotion gates pass.
Do not hard-code confluence 12 because an optimizer selected it. Test independently: confluence ≥ 9 · ≥ 10 · ≥ 11 · ≥ 12. For every threshold, report: qualifying trade count · net expectancy · net expectancy confidence interval · realized net R:R · profit factor · PBO · WFER · Deflated Sharpe Ratio · maximum drawdown · tail loss · turnover · fee burden · regime distribution.
Freeze the threshold before the final untouched holdout.
Reject a threshold when: performance is concentrated in one short period · sample size collapses · confidence intervals are too wide · parameter performance is unstable · neighboring thresholds fail materially · the result depends on a few outliers.
42 — DIRECTIVE §14 · EXECUTION AND ORDER-STATE CORRECTIONS
Required protections: use broker order IDs and execution IDs as authoritative identifiers · make execution-event processing idempotent · deduplicate repeated Rithmic messages · prevent phantom positions · prevent duplicate exit orders · reconcile local state against broker state after reconnect · cancel orphaned orders · record exchange rejection codes · detect price-band rejections · verify order quantity before every exit · require one authoritative position ledger.
Never infer a fill from order status alone.
43 — DIRECTIVE §15 · DASHBOARD CORRECTIONS
Three panels, explicit statuses
Alpha panel
Gross P/L · Total transaction costs · Net P/L
Gross expectancy per trade · Net expectancy per trade
Net expectancy in R · Net expectancy lower confidence bound
Win rate · Wilson win-rate interval
Gross profit factor · Net profit factor
PBO · WFER · Deflated Sharpe Ratio
Number of configurations tested
Number of qualifying out-of-sample trades · Trades by regime
Fill rate · Reject rate · Timeout rate · Cancel rate
Partial-fill rate · Fee burden as % of gross P/L
Sigma and R:R panel
Volatility estimator · Volatility lookback · Sigma timestamp
Target distance in σ · Stop distance in σ
Planned R:R · At-fill R:R
Average realized gross winner in R · Average realized gross loser in R
Realized gross R:R
Average realized net winner in R · Average realized net loser in R
Realized net R:R
MFE distribution · MAE distribution
Time-to-target distribution · Time-to-stop distribution
Time-barrier exit percentage
Execution integrity panel
Broker connection state · Market-data state
Execution authorization state
Quote age · Order-book age · Signal age
Last broker reconciliation time
Broker position · Local position · Position mismatch
Working broker orders · Working local orders
Orphan-order count
TEST A — July 27 fill reconciliation
round_trips == 6 · wins == 4 · losses == 2
gross_pnl == 17.50
gross_average_winner == 8.00 · gross_average_loser == −7.25
gross_realized_rr ≈ 1.1034 · gross_profit_factor ≈ 2.2069
gross_expectancy ≈ 2.9167
TEST B — estimated fees (round_trip_cost = 1.78)
total_cost ≈ 10.68 · net_pnl ≈ 6.82
net_expectancy ≈ 1.1367 · net_realized_rr ≈ 0.6888
net_expectancy_r ≈ 0.1259
TEST C — actual-fill R:R
fill 28,329.00 · stop 27,985.6901
targets 28,494.4901 / 28,688.8901
at_fill_rr_l1 ≈ 0.4821 · at_fill_rr_l2 ≈ 1.0483
both must FAIL a 1.50 minimum
TEST D — stale quote (> 2,000 ms)
new_entry_allowed == false
pending_entry_order_cancel_requested == true
execution_state == BLOCKED
critical_alert_created == true
TEST E — correlated cooldown (after MNQ realized loss)
MNQ · MES · MYM · M2K entries
within 10 minutes == BLOCKED
TEST F — frequency cap (after 3 live round trips)
fourth qualifying signal:
broker_order_submitted == false
shadow_decision_recorded == true
TEST G — order deduplication (same execution ID)
fill_count_increment == 0 · position_change == 0
duplicate_event_logged == true
TEST H — reconnect reconciliation (local ≠ broker)
broker_position_is_authoritative == true
new_entries_blocked == true
reconciliation_alert_created == true
46 — DIRECTIVE §18 · REQUIRED DELIVERABLES
Eighteen deliverables
1Executive diagnosis
2Root-cause list ranked by severity
3Corrected quantitative definitions
4A fill-reconciliation module
5A broker-cost reconciliation module
6An actual-fill R:R module
7A correlated cooldown module
8A market-data freshness gate
9A deterministic order-state machine
10Revised risk configuration
11Revised dashboard schema
12Database migrations, if required
13Unit and integration tests
14A replay test using the July 27 fills
15A rollback plan
16A SHADOW deployment plan
17A production-promotion checklist
18A concise change log
For every code change, identify: file path · function or class changed · reason for change · risk addressed · test coverage · rollback procedure.
47 — DIRECTIVE §19 · NON-NEGOTIABLE CONSTRAINTS
Do not
Do not: enable LIVE trading · increase order size · reduce circuit-breaker protection · infer fills from chart data · treat submitted orders as executions · treat gross P/L as net alpha · claim statistical significance from six trades · treat sigma as reward-to-risk · use planned entry geometry after the actual fill · ignore commissions or slippage · bypass stale-data protection · treat MNQ and MES as independent risk · optimize against the final holdout · label synthetic results as real market alpha · silently modify production defaults · fabricate unavailable broker data.
Where information is unavailable, return UNMEASURED. Do not substitute assumptions without marking them clearly.
48 — DIRECTIVE §20 · FINAL DECISION STANDARD
July 27 session classification
operationally reconciledsubject to broker confirmation
gross-positiveyes
net-positiveprovisionally estimated
persistent alpha establishedno
R:R gate satisfiedno
net EV gate satisfiedno
production promotion justifiedno
further SHADOW testing justifiedyes
The objective is not to prove that the strategy works. The objective is to make it impossible for the system to claim that it works unless the broker records, net economics, statistical evidence, and operational controls all support that conclusion.
Paper results are not performance. CBMAS™ and BAoHC™ are proposed methodologies — not validated standards, and not GAGAS-compliant audits. Figures on this page are pipeline telemetry, model output, or illustration, badged per chart. Nothing here is investment advice, an offer to sell, or a solicitation of an offer to buy any security. Internal operations reference only.