Logic · guardrails

Read-only view of active client JSON

{
    "version": "2026-05-27.v1_complete_split",
    "file_name": "06_shared_guardrails.json",
    "timezone": "America\/New_York",
    "market_calendar": {
        "market": "US_OPTIONS",
        "block_if_market_closed": true,
        "block_if_us_market_holiday": true,
        "block_if_early_close_after": "12:00:00",
        "force_exit_on_early_close_by": "12:30:00",
        "block_if_next_trading_day_closed_after": "14:30:00",
        "holiday_source_required": "NYSE\/Nasdaq\/Cboe calendar must be loaded yearly into database",
        "2026_known_full_closures": [
            "2026-01-01",
            "2026-01-19",
            "2026-02-16",
            "2026-04-03",
            "2026-05-25",
            "2026-06-19",
            "2026-07-03",
            "2026-09-07",
            "2026-11-26",
            "2026-12-25"
        ],
        "2026_known_early_closes": [
            {
                "date": "2026-11-27",
                "no_new_trades_after": "12:00:00",
                "force_exit_by": "12:30:00"
            },
            {
                "date": "2026-12-24",
                "no_new_trades_after": "12:00:00",
                "force_exit_by": "12:30:00"
            }
        ]
    },
    "data_quality": {
        "required": true,
        "reject_if_any": [
            "news_timestamp_missing",
            "market_quote_stale_gt_2s",
            "option_quote_stale_gt_3s",
            "option_chain_stale_gt_10s",
            "broker_status_unknown",
            "tradier_order_preview_error_for_a_plus",
            "halt_or_LULD_active",
            "spread_unavailable",
            "bid_is_zero",
            "ask_is_zero",
            "database_logging_down",
            "redis_event_bus_down"
        ],
        "warn_if_any": [
            "news_source_secondary_only",
            "market_volume_below_average",
            "unusual_options_flow_unconfirmed",
            "sector_confirmation_missing"
        ]
    },
    "risk_controls": {
        "account_base_usd": 100000,
        "max_daily_loss_percent": 3,
        "max_consecutive_losses_before_kill_switch": 2,
        "max_total_open_option_positions": 3,
        "never_average_down": true,
        "market_orders_allowed": false,
        "limit_orders_only": true,
        "require_order_id_logging": true,
        "require_fill_confirmation": true,
        "require_exit_monitoring_after_entry": true,
        "kill_switches": [
            "daily_loss_limit_hit",
            "broker_disconnect",
            "option_data_stale",
            "rapid_spread_widening",
            "bad_fills_or_slippage_cluster",
            "manual_owner_kill_switch"
        ]
    },
    "duplicate_news_core": {
        "same_theme_does_not_equal_duplicate": true,
        "required_fields": [
            "trading_date",
            "session",
            "news_timestamp_utc",
            "source_cluster",
            "normalized_theme",
            "specific_event_action",
            "ticker_or_sector",
            "expected_direction",
            "severity_score"
        ],
        "same_day_duplicate_window_minutes": 30,
        "suppress_only_if": [
            "same_exact_event",
            "same_source_cluster",
            "same_direction",
            "inside_duplicate_window",
            "no_material_new_detail"
        ],
        "treat_as_new_event_if": [
            "new_trading_day",
            "new_session",
            "escalation",
            "opposite_direction_update",
            "second_attack_or_retaliation",
            "material_new_financial_detail",
            "halt_or_resumption",
            "official_confirmation_after_rumor"
        ],
        "confidence_boost_if": [
            "same_event_confirmed_by_tier_1_source",
            "same_direction_update_arrives_inside_entry_window",
            "additional_detail_improves_ticker_mapping"
        ]
    }
}