File size: 5,406 Bytes
6b66ac0 | 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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | [
"tests/test_flow_algo.py::test_downtrend_has_negative_cmf_and_obv",
"tests/test_flow_algo.py::test_empty_frame_returns_none",
"tests/test_flow_algo.py::test_factor_dict_round_trip",
"tests/test_flow_algo.py::test_factors_finite_and_bounded",
"tests/test_flow_algo.py::test_too_short_returns_none",
"tests/test_flow_algo.py::test_uptrend_has_positive_cmf_and_obv",
"tests/test_flow_algo.py::test_vwap_dev_positive_when_close_above_average",
"tests/test_history.py::test_latest_snapshot_returns_newest",
"tests/test_history.py::test_save_and_list_snapshots",
"tests/test_history.py::test_save_empty_df_returns_none",
"tests/test_history.py::test_snapshot_summary_lists_saved_runs",
"tests/test_history.py::test_with_delta_computes_difference",
"tests/test_history.py::test_with_delta_no_previous",
"tests/test_intraday_factor.py::test_aggression_persistence_negative_when_recent_selling",
"tests/test_intraday_factor.py::test_aggression_persistence_positive_when_recent_buying",
"tests/test_intraday_factor.py::test_aggression_persistence_short_history_uses_all",
"tests/test_intraday_factor.py::test_batch",
"tests/test_intraday_factor.py::test_clipped_to_range",
"tests/test_intraday_factor.py::test_empty_returns_zeros",
"tests/test_intraday_factor.py::test_stub_synthesises",
"tests/test_intraday_factor.py::test_vwap_dev_positive_when_above_vwap",
"tests/test_intraday_factor.py::test_vwap_dev_zero_when_price_equals_vwap",
"tests/test_l2_factor.py::test_ask_heavy_book_is_negative",
"tests/test_l2_factor.py::test_balanced_book_is_near_zero",
"tests/test_l2_factor.py::test_batch_returns_all_tickers",
"tests/test_l2_factor.py::test_bid_heavy_book_is_positive",
"tests/test_l2_factor.py::test_book_lying_detection",
"tests/test_l2_factor.py::test_book_lying_discounts_factor",
"tests/test_l2_factor.py::test_clipped_to_range",
"tests/test_l2_factor.py::test_empty_book_returns_zero",
"tests/test_l2_factor.py::test_spoofed_orders_ignored",
"tests/test_l2_factor.py::test_stub_data_source_synthesises",
"tests/test_options_factor.py::test_batch",
"tests/test_options_factor.py::test_call_otm_spike_is_positive",
"tests/test_options_factor.py::test_call_otm_weighted_heaviest",
"tests/test_options_factor.py::test_empty_returns_zero",
"tests/test_options_factor.py::test_put_otm_spike_is_negative",
"tests/test_options_factor.py::test_steady_chain_is_near_zero",
"tests/test_options_factor.py::test_stub_data_source_synthesises",
"tests/test_options_factor.py::test_zscore_constant_returns_zero",
"tests/test_options_factor.py::test_zscore_uses_today_vs_history",
"tests/test_performance.py::test_auto_improve_end_to_end_with_signal",
"tests/test_performance.py::test_auto_improve_handles_no_data",
"tests/test_performance.py::test_collect_eval_tables_with_explicit_cache",
"tests/test_performance.py::test_evaluate_returns_metrics_dict",
"tests/test_performance.py::test_ic_signal_factor_is_predictive",
"tests/test_performance.py::test_load_learned_weights_missing",
"tests/test_performance.py::test_load_learned_weights_round_trip",
"tests/test_performance.py::test_optimize_finds_signal_factor",
"tests/test_performance.py::test_optimize_without_enough_history_returns_baseline",
"tests/test_performance.py::test_performance_log_grows",
"tests/test_scorer.py::test_empty_factors_returns_empty_df",
"tests/test_scorer.py::test_ratings_assignment",
"tests/test_scorer.py::test_robust_zscore_degenerate_series",
"tests/test_scorer.py::test_robust_zscore_on_outliers",
"tests/test_scorer.py::test_score_dataframe_shape",
"tests/test_scorer.py::test_score_range_and_ordering",
"tests/test_scorer.py::test_top_n_buy_and_sell",
"tests/test_scorer.py::test_uptrend_scores_higher_than_downtrend",
"tests/test_scorer.py::test_weights_change_ordering",
"tests/test_tick_factor.py::test_batch",
"tests/test_tick_factor.py::test_block_aggression_negative_when_block_sells",
"tests/test_tick_factor.py::test_block_aggression_positive_when_block_buys",
"tests/test_tick_factor.py::test_block_share_calculation",
"tests/test_tick_factor.py::test_bucket_boundaries",
"tests/test_tick_factor.py::test_buy_ratio_in_unit_interval",
"tests/test_tick_factor.py::test_empty_ticks",
"tests/test_tick_factor.py::test_no_bid_ask_falls_back_to_rolling_mid",
"tests/test_tick_factor.py::test_sign_at_ask_is_buy",
"tests/test_tick_factor.py::test_sign_at_bid_is_sell",
"tests/test_tick_factor.py::test_sign_at_mid_carries_forward",
"tests/test_tick_factor.py::test_stub_synthesises",
"tests/test_universe.py::test_cached_sectors_for_returns_only_known",
"tests/test_universe.py::test_fresh_filter_excludes_stale",
"tests/test_universe.py::test_save_and_load_cache",
"tests/test_watchlist.py::test_load_malformed_returns_empty",
"tests/test_watchlist.py::test_load_missing_returns_empty",
"tests/test_watchlist.py::test_parse_caps_at_max",
"tests/test_watchlist.py::test_parse_empty_or_none",
"tests/test_watchlist.py::test_parse_lowercase_and_dedup",
"tests/test_watchlist.py::test_parse_mixed_delimiters",
"tests/test_watchlist.py::test_parse_rejects_invalid_symbols",
"tests/test_watchlist.py::test_parse_simple",
"tests/test_watchlist.py::test_save_and_load_round_trip"
] |