The compliance engine sits between the signal generation pipeline and the trade executor. It is not optional, not configurable in terms of which checks it performs, and not bypassable under any circumstances. Every single proposed trade passes through the compliance engine before any broker API call is made. No exceptions — not even for signals the AI assigns the highest possible scores.

The compliance engine's job is to answer one question: given everything we know about this proposed trade, this user's account state, and the regulatory environment, should this trade execute? If yes, it passes to execution. If no — for any reason — the trade is vetoed, logged immutably to the audit trail, and surfaced to you in the signal feed with the specific reason for rejection. The compliance engine is not an obstacle to good trading. It is the reason good trading is possible at scale without catastrophic compliance failures.

What GUARDIAN checks

COMPLIANCE ENGINE

The mandatory compliance gate between signal generation and trade execution. It runs a sequential checklist on every proposed signal covering regulatory compliance, risk limits, portfolio constraints, and trade-specific rules. All checks must pass. One failure = veto.

The compliance engine runs multiple distinct checks in sequence. Regulatory checks (PDT) run first, then risk limits (daily loss, drawdown), then portfolio-level constraints (concentration), then trade-specific rules (wash sale, earnings timing). This ordering means the most non-negotiable rules are evaluated first and the veto reason you see reflects the first check that failed — not necessarily the only one that would have.

Every check result — pass or fail — is written to the audit log with a timestamp and the exact parameter values at the time of evaluation. If your daily loss guard triggered at -3.1% at 14:32:07 ET, that record exists permanently.

PDT rules

The Pattern Day Trader check counts same-day round-trips — buying and selling the same security within the same trading day — in a rolling 5-business-day window. The FINRA limit is 3 day trades per window for accounts under $25,000. The system tracks this counter in real time and will veto any signal that would constitute a 4th same-day round-trip.

At 2/3, the system still approves qualifying trades. At 3/3, any intraday round-trip is vetoed — regardless of the Alpha score. A signal scoring 94/100 that would require a same-day exit gets skipped. This is correct behavior. A PDT violation results in a 90-day trading restriction from your broker. The cost of that restriction vastly exceeds the cost of missing one trade.

Daily loss guard (-3%)

If portfolio daily P&L reaches -3% of account value, the system stops generating new trade proposals for the remainder of the trading session. This is a hard stop, not a warning. Existing open positions are held — no forced liquidation — but no new entries are made until the next session begins.

The -3% threshold is the empirically common circuit breaker used by professional trading desks. A 3% loss on a single day is painful but recoverable. A day that spirals beyond -3% is statistically more likely to represent a genuine regime disruption or data anomaly than a string of normal bad trades — and warrants human review before additional capital is risked.

Max drawdown (-10%)

The drawdown halt engages when cumulative portfolio drawdown from the account equity high exceeds -10%. Unlike the daily loss halt, which clears automatically the next session, the -10% drawdown halt persists and requires your manual confirmation to resume. This is intentional friction. A -10% drawdown from peak is a meaningful signal that something in the market environment or the strategy allocation has materially changed.

The manual resume requirement is not meant to be punitive — it's meant to ensure you've actually looked at what happened before additional capital is deployed. The performance tab will show you exactly which regime was active, which analytical dimensions were most responsible for the losses, and what the learning system has already adjusted in response.

Position and concentration limits

Before the compliance engine approves any new position, it checks whether the proposed size would push any single holding above the maximum concentration percentage defined in your mandate. This check uses the post-entry projected portfolio weight — not the current weight. If adding a position would result in 28% of your portfolio in a single ticker and your limit is 25%, the trade is vetoed, even if the Alpha score is excellent.

The system also checks sector-level concentration via correlation analysis. A portfolio that looks diversified at the ticker level can be dangerously concentrated at the factor level — five different semiconductor stocks are not five independent positions. These checks happen every cycle, not just at entry.

How to read a veto reason

Every vetoed signal in your feed shows an exact veto reason string. The most common reasons you'll see relate to: PDT limits reached, conviction below the current quality threshold, daily loss guard active, concentration limits exceeded, and wash sale window violations. Each reason corresponds to exactly one of the compliance engine's checks.

If you see conviction-related vetoes frequently, it usually means the current market regime has raised the quality threshold system-wide — not that the individual signals are necessarily weak. This is expected behavior in choppy or defensive rotation regimes. Expand the vetoed signal to see the Alpha score, the current threshold, and the gap between them.