Logic · a_plus_router

Read-only view of active client JSON

{
    "config_version": "a_plus_trade_worthy_news_router_v1_2026_06_02",
    "strategy_name": "A_PLUS_CONFIRMATION_ROUTER",
    "purpose": "Analyze all trade-worthy news, separate immediate Fast News from slower confirmation-based A+ setups, and only route A+ candidates when confirmation is required.",
    "timezone": "America\/New_York",
    "core_principle": {
        "analyze_all_trade_worthy_news": true,
        "do_not_auto_trade_on_news_only": true,
        "a_plus_requires_confirmation": true,
        "fast_news_separate": true,
        "reject_unclear_or_low_quality_news": true,
        "manual_review_for_mixed_or_borderline_news": true
    },
    "strategy_separation": {
        "FAST_NEWS": {
            "description": "Immediate breaking-news strategy. Must not be handled by this A+ router except to route away.",
            "route_to": "FAST_NEWS_ENGINE",
            "conditions": [
                "time_sensitivity == IMMEDIATE",
                "market_impact_score >= 85",
                "direction_confidence >= 80",
                "news_age_seconds <= 180",
                "underlying_reaction_agrees == true",
                "options_validation_pass == true"
            ],
            "a_plus_action": "DO_NOT_PROCESS_AS_A_PLUS"
        },
        "A_PLUS_CONFIRMATION": {
            "description": "Trade-worthy news that needs confirmation before entry.",
            "route_to": "A_PLUS_ENGINE",
            "conditions": [
                "market_impact_score >= 70",
                "time_sensitivity in ['FAST_CONFIRMATION', 'SLOW_CONFIRMATION']",
                "direction_confidence >= 60",
                "requires_chart_confirmation == true",
                "not_duplicate == true",
                "source_reliability_score >= 7.0"
            ],
            "a_plus_action": "SEND_TO_CONFIRMATION_ENGINE"
        },
        "MANUAL_REVIEW": {
            "description": "Potentially important news but direction, source, or timing is not clear enough.",
            "route_to": "MANUAL_REVIEW_QUEUE",
            "conditions": [
                "market_impact_score >= 70",
                "direction_confidence < 80",
                "headline_is_mixed == true OR affected_assets_unclear == true OR source_reliability_score < 8.0"
            ],
            "a_plus_action": "ALERT_ONLY"
        },
        "REJECT": {
            "description": "News is not worthy, stale, duplicate, too unclear, or not tradable.",
            "route_to": "REJECT_LOG",
            "conditions": [
                "market_impact_score < 70",
                "source_reliability_score < 7.0",
                "duplicate_check == FAIL",
                "expected_direction == NO_TRADE",
                "news_is_stale == true"
            ],
            "a_plus_action": "REJECT_AND_LOG"
        }
    },
    "worthy_news_scanner": {
        "enabled": true,
        "run_on_every_headline": true,
        "minimum_market_impact_score_for_a_plus_review": 70,
        "minimum_market_impact_score_for_a_plus_candidate": 78,
        "minimum_source_reliability_for_a_plus_candidate": 7,
        "minimum_direction_confidence_for_a_plus_candidate": 60,
        "classify_outputs_required": [
            "is_market_moving",
            "market_impact_score",
            "event_type",
            "headline_theme",
            "primary_ticker",
            "sector",
            "affected_assets",
            "expected_direction",
            "direction_confidence",
            "time_sensitivity",
            "requires_confirmation",
            "source_reliability_score",
            "duplicate_status",
            "stale_status",
            "route"
        ],
        "market_moving_event_types": [
            "earnings_surprise",
            "guidance_change",
            "analyst_upgrade",
            "analyst_downgrade",
            "price_target_change",
            "sector_rotation",
            "sympathy_move",
            "ai_continuation_momentum",
            "enterprise_ai_deployment",
            "ai_infrastructure_demand",
            "software_spending_trend",
            "cybersecurity_spending_trend",
            "cloud_spending_trend",
            "semiconductor_cycle_shift",
            "commodity_trend_shift",
            "oil_macro_trend",
            "geopolitical_theme",
            "interest_rate_shift",
            "inflation_theme",
            "jobs_data_reaction",
            "treasury_yield_move",
            "m_and_a_speculation",
            "strategic_review",
            "short_seller_follow_through",
            "regulatory_follow_through",
            "fda_follow_through",
            "government_contract_follow_through",
            "index_inclusion",
            "index_removal",
            "capital_raise_digestion",
            "credit_downgrade_follow_through"
        ]
    },
    "a_plus_candidate_types": {
        "analyst_upgrade_or_downgrade": {
            "enabled": true,
            "description": "Usually not Fast News unless extreme. Route to A+ if price confirms.",
            "default_time_sensitivity": "FAST_CONFIRMATION",
            "requires_confirmation": true,
            "confirmation_needed": [
                "price holds direction for 5 to 15 minutes",
                "volume_relative >= 1.5",
                "above_vwap_for_calls_or_below_vwap_for_puts",
                "options_spread_acceptable"
            ],
            "reject_if": [
                "stock gaps and fades",
                "premium already overexpanded",
                "upgrade\/downgrade is stale"
            ]
        },
        "earnings_digest_or_continuation": {
            "enabled": true,
            "description": "Earnings news that is important but not caught instantly. Route to A+ continuation.",
            "default_time_sensitivity": "FAST_CONFIRMATION",
            "requires_confirmation": true,
            "confirmation_needed": [
                "breaks premarket high or low",
                "holds VWAP",
                "relative volume >= 2",
                "option premium confirms after consolidation"
            ],
            "examples": [
                "DELL continuation",
                "HPE continuation",
                "MRVL continuation"
            ]
        },
        "ai_continuation_momentum": {
            "enabled": true,
            "description": "AI theme continuation that is not fresh enough for Fast News.",
            "default_time_sensitivity": "SLOW_CONFIRMATION",
            "requires_confirmation": true,
            "tickers": [
                "NVDA",
                "AMD",
                "DELL",
                "HPE",
                "SMCI",
                "MRVL",
                "AVGO",
                "ANET",
                "SNOW",
                "MSFT",
                "GOOGL",
                "AMZN"
            ],
            "confirmation_needed": [
                "sector strength confirmed",
                "leader stock confirms",
                "target ticker above VWAP for calls",
                "higher-high structure",
                "options premium rising after consolidation"
            ],
            "reject_if": [
                "only sympathy with no price confirmation",
                "leader stock is red",
                "premium inflated before confirmation"
            ]
        },
        "sector_sympathy_move": {
            "enabled": true,
            "description": "Anchor stock moves strongly and related names may follow.",
            "default_time_sensitivity": "FAST_CONFIRMATION",
            "requires_confirmation": true,
            "anchor_rules": {
                "minimum_anchor_move_percent": 5,
                "minimum_anchor_volume_relative": 2,
                "anchor_news_source_reliability_min": 8
            },
            "confirmation_needed": [
                "sympathy ticker moves in same direction",
                "sympathy ticker volume_relative >= 1.5",
                "sympathy ticker holds VWAP",
                "options liquidity passes"
            ],
            "reject_if": [
                "sympathy ticker not moving",
                "anchor move already exhausted",
                "sector breadth is weak"
            ]
        },
        "macro_theme_confirmation": {
            "enabled": true,
            "description": "Macro news that needs market confirmation before trading indexes, ETFs, energy, rates, or gold.",
            "default_time_sensitivity": "SLOW_CONFIRMATION",
            "requires_confirmation": true,
            "assets": [
                "SPY",
                "QQQ",
                "IWM",
                "XLE",
                "XLF",
                "TLT",
                "GLD",
                "USO",
                "DIA"
            ],
            "confirmation_needed": [
                "index or ETF confirms direction",
                "related asset confirms direction",
                "no contradictory headline cluster",
                "price holds key level or VWAP"
            ],
            "reject_if": [
                "conflicting macro headlines",
                "direction changes within 15 minutes",
                "related asset disagrees"
            ]
        },
        "software_or_cloud_theme": {
            "enabled": true,
            "description": "Software\/cloud spending themes that are not instant shocks but can trend.",
            "default_time_sensitivity": "SLOW_CONFIRMATION",
            "requires_confirmation": true,
            "tickers": [
                "CRM",
                "SNOW",
                "NOW",
                "DDOG",
                "ZS",
                "CRWD",
                "PANW",
                "OKTA"
            ],
            "confirmation_needed": [
                "sector basket confirms",
                "ticker holds trend",
                "relative volume >= 1.5",
                "option premium confirms"
            ]
        }
    },
    "a_plus_confirmation_engine": {
        "enabled": true,
        "auto_trade_enabled": false,
        "manual_approval_required": true,
        "paper_trade_allowed": true,
        "minimum_a_plus_score_for_alert": 75,
        "minimum_a_plus_score_for_manual_trade": 85,
        "minimum_a_plus_score_for_auto_trade_if_later_enabled": 92,
        "confirmation_windows_minutes": [
            5,
            10,
            15,
            30
        ],
        "must_pass_for_a_plus_candidate": [
            "worthy_news_check",
            "route_is_a_plus_confirmation",
            "duplicate_check",
            "direction_confidence_check",
            "ticker_liquidity_check",
            "underlying_confirmation_check",
            "volume_confirmation_check",
            "vwap_confirmation_check",
            "options_chain_check",
            "spread_check",
            "risk_check"
        ],
        "underlying_confirmation_check": {
            "calls_require": [
                "price_above_vwap == true",
                "higher_high_or_breakout == true",
                "relative_volume >= 1.5",
                "leader_or_sector_confirmation == true"
            ],
            "puts_require": [
                "price_below_vwap == true",
                "lower_low_or_breakdown == true",
                "relative_volume >= 1.5",
                "leader_or_sector_confirmation == true"
            ]
        },
        "options_confirmation_check": {
            "minimum_open_interest": 100,
            "minimum_volume": 50,
            "minimum_bid": 0.2,
            "max_spread_percent": 15,
            "preferred_delta_range": {
                "min": 0.35,
                "max": 0.65
            },
            "reject_if": [
                "zero_bid",
                "spread_too_wide",
                "premium_already_exploded_without_consolidation",
                "no_option_volume"
            ]
        },
        "risk_rules": {
            "max_contracts": 2,
            "default_contracts": 1,
            "max_dollar_risk_per_trade": 300,
            "max_daily_a_plus_loss": 600,
            "stop_loss_percent": 20,
            "time_stop_minutes": 30,
            "reject_if_stop_monitor_unavailable": true
        }
    },
    "routing_decision_logic": {
        "order_of_operations": [
            "ingest_news",
            "score_market_impact",
            "classify_event_type",
            "classify_time_sensitivity",
            "classify_expected_direction",
            "check_source_reliability",
            "check_duplicate_and_stale_status",
            "route_to_fast_news_or_a_plus_or_manual_or_reject",
            "if_a_plus_then_wait_for_confirmation",
            "if_confirmed_then_alert_or_paper_trade",
            "log_all_results"
        ],
        "fast_news_not_a_plus_conditions": [
            "time_sensitivity == IMMEDIATE",
            "news_age_seconds <= 180",
            "market_impact_score >= 85",
            "direction_confidence >= 80",
            "underlying_reaction_agrees == true",
            "options_validation_pass == true"
        ],
        "a_plus_conditions": [
            "market_impact_score >= 70",
            "time_sensitivity in ['FAST_CONFIRMATION','SLOW_CONFIRMATION']",
            "requires_confirmation == true",
            "direction_confidence >= 60",
            "source_reliability_score >= 7.0",
            "duplicate_check == PASS",
            "news_is_stale == false"
        ],
        "manual_review_conditions": [
            "market_impact_score >= 70",
            "direction_confidence < 80",
            "headline_is_mixed == true",
            "affected_assets_unclear == true",
            "source_reliability_score >= 7.0 AND source_reliability_score < 8.0"
        ],
        "reject_conditions": [
            "market_impact_score < 70",
            "source_reliability_score < 7.0",
            "duplicate_check == FAIL",
            "expected_direction == NO_TRADE",
            "news_is_stale == true",
            "ticker_untradable == true"
        ]
    },
    "duplicate_news_logic": {
        "enabled": true,
        "duplicate_key_fields": [
            "event_date",
            "trading_session",
            "source_cluster",
            "headline_theme",
            "primary_ticker",
            "expected_direction",
            "route"
        ],
        "same_day_duplicate_window_minutes": 30,
        "same_event_action": "SUPPRESS_OR_CONFIDENCE_BOOST_ONLY",
        "do_not_create_second_trade": true,
        "allow_new_event_if": [
            "new_trading_day",
            "new_trading_session",
            "material_escalation",
            "official_confirmation_after_rumor",
            "opposite_direction_update",
            "new_guidance_change",
            "new_contract_confirmation",
            "new_price_breakout_after_consolidation"
        ]
    },
    "api_output_schema": {
        "required_output": {
            "news_id": "string",
            "route": "FAST_NEWS | A_PLUS_CONFIRMATION | MANUAL_REVIEW | REJECT",
            "strategy": "A_PLUS_CONFIRMATION_ROUTER",
            "headline_theme": "string",
            "event_type": "string",
            "primary_ticker": "string_or_null",
            "sector": "string_or_null",
            "expected_direction": "CALLS | PUTS | MIXED | NO_TRADE",
            "direction_confidence": "number",
            "market_impact_score": "number",
            "source": "string",
            "source_reliability_score": "number",
            "duplicate_status": "PASS | FAIL | CONFIDENCE_BOOST_ONLY",
            "stale_status": "FRESH | STALE | LATE",
            "time_sensitivity": "IMMEDIATE | FAST_CONFIRMATION | SLOW_CONFIRMATION | IGNORE",
            "requires_confirmation": "boolean",
            "a_plus_score": "number_or_null",
            "confirmation_status": "WAITING | CONFIRMED | FAILED | NOT_APPLICABLE",
            "reason": "string",
            "execution": {
                "should_execute_trade_api": false,
                "manual_approval_required": true,
                "paper_trade_allowed": true
            }
        }
    },
    "learning_engine": {
        "enabled": true,
        "run_after_market_close": true,
        "store_all_routed_news": true,
        "track_which_a_plus_candidates_confirmed": true,
        "track_which_candidates_failed_confirmation": true,
        "track_missed_a_plus_moves": true,
        "track_false_positive_routes": true,
        "update_category_weights_daily": true,
        "fields_to_log": [
            "date",
            "news_id",
            "published_at",
            "received_at",
            "source",
            "headline_theme",
            "event_type",
            "primary_ticker",
            "sector",
            "market_impact_score",
            "expected_direction",
            "actual_direction",
            "direction_confidence",
            "route",
            "confirmation_status",
            "a_plus_score",
            "underlying_move_5m",
            "underlying_move_15m",
            "underlying_move_30m",
            "option_premium_change",
            "spread_percent",
            "paper_entry",
            "paper_exit",
            "net_pnl",
            "reject_reason",
            "lesson_learned"
        ]
    },
    "developer_required_tests": {
        "must_pass_before_live": [
            "Immediate Fast News events route to FAST_NEWS and not A_PLUS_CONFIRMATION",
            "A+ candidates require confirmation before trade alert",
            "Analyst upgrades do not auto-trade on headline alone",
            "Sector sympathy requires anchor and target confirmation",
            "AI continuation momentum requires leader and ticker confirmation",
            "Macro themes require related asset confirmation",
            "Duplicate A+ routes do not create duplicate trade alerts",
            "A+ router returns should_execute_trade_api false by default",
            "Manual approval is required for A+ trades unless explicitly changed later",
            "All rejected and missed candidates are logged for learning"
        ]
    }
}