File size: 5,252 Bytes
d53dc44
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
[
  "tests/test_fractional_orders.py::TestHappyPath::test_fractional_dry_run_fills",
  "tests/test_fractional_orders.py::TestHappyPath::test_whole_dry_run_fills",
  "tests/test_fractional_orders.py::TestOrderRequestValidation::test_stop_and_tp_present",
  "tests/test_fractional_orders.py::TestOrderRequestValidation::test_valid_buy_order",
  "tests/test_fractional_orders.py::TestOrderRequestValidation::test_valid_sell_order",
  "tests/test_fractional_orders.py::TestRoutingLogic::test_fractional_flag_detection",
  "tests/test_fractional_orders.py::TestRoutingLogic::test_whole_flag_detection",
  "tests/test_order_manager.py::TestDryRunSimulation::test_dry_run_returns_fill",
  "tests/test_order_manager.py::TestLimitPrice::test_buy_limit_within_spread",
  "tests/test_order_manager.py::TestLimitPrice::test_sell_limit_within_spread",
  "tests/test_order_manager.py::TestOrderRouting::test_dry_run_fractional_order",
  "tests/test_order_manager.py::TestOrderRouting::test_dry_run_whole_order",
  "tests/test_order_manager.py::TestSpreadCheck::test_acceptable_spread",
  "tests/test_order_manager.py::TestSpreadCheck::test_dry_run_spread_always_passes",
  "tests/test_order_manager.py::TestSpreadCheck::test_wide_spread_rejected",
  "tests/test_pdt.py::TestCanDayTrade::test_above_25k_always_allows",
  "tests/test_pdt.py::TestCanDayTrade::test_allows_if_no_day_trades",
  "tests/test_pdt.py::TestCanDayTrade::test_blocks_at_limit",
  "tests/test_pdt.py::TestCanDayTrade::test_cash_account_bypasses_pdt",
  "tests/test_pdt.py::TestDayTradeDetection::test_closing_different_day_not_day_trade",
  "tests/test_pdt.py::TestDayTradeDetection::test_closing_same_day_is_day_trade",
  "tests/test_pdt.py::TestDayTradeDetection::test_no_position_not_day_trade",
  "tests/test_pdt.py::TestDayTradeDetection::test_same_side_not_closing",
  "tests/test_pdt.py::TestSettlementDate::test_settlement_is_after_trade",
  "tests/test_risk.py::TestConsecutiveLosses::test_half_size_after_3_losses",
  "tests/test_risk.py::TestConsecutiveLosses::test_pause_after_3_losses",
  "tests/test_risk.py::TestDailyLossLimit::test_allows_within_limit",
  "tests/test_risk.py::TestDailyLossLimit::test_blocks_after_max_loss",
  "tests/test_risk.py::TestMaxPositions::test_allows_below_max",
  "tests/test_risk.py::TestMaxPositions::test_blocks_at_max",
  "tests/test_risk.py::TestPositionSizing::test_fractional_flag",
  "tests/test_risk.py::TestPositionSizing::test_size_within_risk_budget",
  "tests/test_risk.py::TestProfitLock::test_locks_after_target",
  "tests/test_risk.py::TestSafeMode::test_safe_mode_blocks",
  "tests/test_safety_invariants.py::TestSafetyInvariants::test_concurrent_reservations",
  "tests/test_safety_invariants.py::TestSafetyInvariants::test_data_staleness_logic",
  "tests/test_safety_invariants.py::TestSafetyInvariants::test_failed_api_submission_releases",
  "tests/test_safety_invariants.py::TestSafetyInvariants::test_refresh_reconciles_open_orders",
  "tests/test_safety_invariants.py::TestSafetyInvariants::test_reservation_idempotency",
  "tests/test_safety_invariants.py::TestSafetyInvariants::test_sell_orders_ignore_limit",
  "tests/test_safety_invariants.py::TestSafetyInvariants::test_timeout_releases_reservation",
  "tests/test_signals.py::TestATR::test_atr_positive",
  "tests/test_signals.py::TestATR::test_atr_shape",
  "tests/test_signals.py::TestBollingerBands::test_bb_returns_three",
  "tests/test_signals.py::TestBollingerBands::test_upper_above_lower",
  "tests/test_signals.py::TestComputeTechnical::test_insufficient_data_returns_zero",
  "tests/test_signals.py::TestComputeTechnical::test_returns_score_and_target",
  "tests/test_signals.py::TestComputeTechnical::test_sub_signals_populated",
  "tests/test_signals.py::TestEMA::test_ema_last_near_close",
  "tests/test_signals.py::TestEMA::test_ema_shape",
  "tests/test_signals.py::TestMACD::test_histogram_equals_diff",
  "tests/test_signals.py::TestMACD::test_macd_returns_three_series",
  "tests/test_signals.py::TestRSI::test_rsi_bounds",
  "tests/test_signals.py::TestRSI::test_rsi_insufficient_data",
  "tests/test_signals.py::TestRSI::test_rsi_shape",
  "tests/test_signals.py::TestVWAP::test_vwap_session_aware",
  "tests/test_signals.py::TestVWAP::test_vwap_within_hl_range",
  "tests/test_vwap.py::TestVWAPSessionBoundary::test_empty_dataframe",
  "tests/test_vwap.py::TestVWAPSessionBoundary::test_vwap_accumulates_within_session",
  "tests/test_vwap.py::TestVWAPSessionBoundary::test_vwap_resets_each_session",
  "tests/test_vwap.py::TestVWAPSessionBoundary::test_vwap_within_price_range",
  "tests/test_websocket_reconnect.py::TestDedup::test_different_timestamps_accepted",
  "tests/test_websocket_reconnect.py::TestDedup::test_duplicate_bar_rejected",
  "tests/test_websocket_reconnect.py::TestDedup::test_seen_set_initialized",
  "tests/test_websocket_reconnect.py::TestDisconnectTracking::test_connection_state",
  "tests/test_websocket_reconnect.py::TestDisconnectTracking::test_disconnect_time_tracked",
  "tests/test_websocket_reconnect.py::TestExponentialBackoff::test_backoff_increases",
  "tests/test_websocket_reconnect.py::TestExponentialBackoff::test_first_backoff_is_small"
]