V3 QA — Scenario 7: Control Treatment (Task 8)
==================================================

Test file: experiments/v3/tests/test_control_treatment.py
Result: 25/25 PASSED (requires PYTHONPATH=.:src for traderbot import)

Production Mirror:
  - format_prompt calls generate_signal(ticker, prices, orderbook, estimated_prob)
  - Prompt includes: market details, RSI, Bollinger position, EMA(5)/EMA(20),
    signal direction, signal confidence, implied probability
  - Prompt EXCLUDES: forecast_temp, city_bias, MAE, Bayesian probability

Fallback Behavior:
  - ImportError during generate_signal → fallback prompt
  - RuntimeError during generate_signal → fallback prompt
  - Fallback prompt still excludes forecast data (maintains control baseline)
  - Fallback includes market prices, basic market data

Response Validation:
  - Accepts: buy_yes, buy_no, skip decisions
  - Rejects: invalid decisions, probability out of [0,1]
  - Rejects: missing confidence, malformed confidence types

Name: returns "control"

NOTE: Test requires trading bot source in PYTHONPATH.
  export PYTHONPATH=.:src
  uv run pytest experiments/v3/tests/test_control_treatment.py

VERDICT: PASS (with PYTHONPATH=.:src)
