Add state Continue path interaction features

This commit is contained in:
Codex
2026-06-27 23:22:29 +08:00
parent 5d4de011b2
commit c463be1741
2 changed files with 72 additions and 6 deletions
@@ -18,7 +18,7 @@ from trader_training.state_continue_experiment import STATE_FEATURES, _predict_f
class StateContinueExperimentTest(unittest.TestCase):
def test_state_rows_include_required_position_and_frozen_entry_features(self) -> None:
def test_state_rows_include_required_position_path_and_side_market_features(self) -> None:
row = {
"current_sample_id": "s0",
"symbol": "BTC-USDT-PERP",
@@ -41,6 +41,13 @@ class StateContinueExperimentTest(unittest.TestCase):
}
for feature_name in FEATURE_ORDER:
row[feature_name] = 0.0
row["ret_1m_bps"] = 2.0
row["ret_5m_bps"] = 3.0
row["taker_imbalance_1m"] = 0.1
row["taker_imbalance_5m"] = 0.2
row["book_microprice_basis_bps"] = 4.0
row["book_pressure_taker_1m"] = 5.0
row["book_pressure_taker_5m"] = 6.0
frame = pd.DataFrame([row])
out = _state_rows_for_age(frame, stop_bps=8.0, target_bps=12.0, cost_bps=6.5)
@@ -50,6 +57,17 @@ class StateContinueExperimentTest(unittest.TestCase):
self.assertEqual(1, int(out.iloc[0]["continue_target"]))
self.assertAlmostEqual(8.5, float(out.iloc[0]["entry_predicted_edge_bps"]))
self.assertAlmostEqual(0.64, float(out.iloc[0]["entry_direction_prob"]), places=6)
self.assertAlmostEqual(16.5, float(out.iloc[0]["giveback_from_mfe_bps"]), places=4)
self.assertAlmostEqual(8.5025, float(out.iloc[0]["recovery_from_mae_bps"]), places=4)
self.assertGreater(float(out.iloc[0]["path_efficiency"]), 0.13)
self.assertGreater(float(out.iloc[0]["mfe_mae_ratio"]), 3.3)
self.assertAlmostEqual(2.0, float(out.iloc[0]["side_ret_1m_bps"]))
self.assertAlmostEqual(3.0, float(out.iloc[0]["side_ret_5m_bps"]))
self.assertAlmostEqual(0.1, float(out.iloc[0]["side_taker_imbalance_1m"]), places=6)
self.assertAlmostEqual(0.2, float(out.iloc[0]["side_taker_imbalance_5m"]), places=6)
self.assertAlmostEqual(4.0, float(out.iloc[0]["side_book_microprice_basis_bps"]))
self.assertAlmostEqual(5.0, float(out.iloc[0]["side_book_pressure_taker_1m"]))
self.assertAlmostEqual(6.0, float(out.iloc[0]["side_book_pressure_taker_5m"]))
self.assertAlmostEqual(0.0, float(out.iloc[0]["add_count"]))
self.assertAlmostEqual(9999.0, float(out.iloc[0]["minutes_since_last_add"]))