Use actual plan edge in OFI diagnostics
This commit is contained in:
@@ -18,7 +18,7 @@ from trader_training.dynamic_exit_search import search_dynamic_exit_plans
|
||||
from trader_training.entry_feature_screen import _bucket_edges, _screen_edge_column
|
||||
from trader_training.io_utils import read_json, write_json
|
||||
from trader_training.labels import ENTRY_LABEL_METHOD, _path_stats_for_group, build_entry_labels
|
||||
from trader_training.ofi_feature_experiment import l1_snapshot_diff_ofi_quote
|
||||
from trader_training.ofi_feature_experiment import _load_entry_dataset, l1_snapshot_diff_ofi_quote
|
||||
from trader_training.promote import promote_artifact_bundle
|
||||
from trader_training.replay import build_splits
|
||||
from trader_training.schemas import FEATURE_ORDER, LATEST_STRESS_SPLIT, MODEL_OUTPUTS, OUTPUT_MAPPING, TRAINING_SPLITS, VALIDATION_LOCKED_SPLIT
|
||||
@@ -117,6 +117,38 @@ class TrainingContractTest(unittest.TestCase):
|
||||
self.assertEqual(1, result["candidate_count"])
|
||||
self.assertTrue((run_root / "dynamic-exit-search" / "dynamic_exit_search_report.md").is_file())
|
||||
|
||||
def test_ofi_entry_dataset_uses_actual_plan_edge(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
baseline_root = Path(tmp)
|
||||
dataset_path = baseline_root / "dataset" / "entry_train.parquet"
|
||||
dataset_path.parent.mkdir(parents=True)
|
||||
pd.DataFrame(
|
||||
{
|
||||
"sample_id": ["s1"],
|
||||
"long_entry_target": [1],
|
||||
"short_entry_target": [0],
|
||||
"long_actual_plan_net_edge_bps": [4.0],
|
||||
"short_actual_plan_net_edge_bps": [-7.0],
|
||||
}
|
||||
).to_parquet(dataset_path, index=False)
|
||||
feature = pd.DataFrame(
|
||||
{
|
||||
"sample_id": ["s1"],
|
||||
"symbol": ["BTC-USDT-PERP"],
|
||||
"event_time": pd.to_datetime(["2026-01-01T00:00:00Z"]),
|
||||
"open_time_ms": [0],
|
||||
"split_id": ["fit_inner"],
|
||||
"walk_forward_fold": [0],
|
||||
"data_quality_flag": ["OK"],
|
||||
}
|
||||
)
|
||||
|
||||
dataset = _load_entry_dataset(baseline_root, feature)
|
||||
|
||||
self.assertIn("long_actual_plan_net_edge_bps", dataset.columns)
|
||||
self.assertNotIn("long_expected_net_edge_bps", dataset.columns)
|
||||
self.assertEqual(4.0, float(dataset.loc[0, "long_actual_plan_net_edge_bps"]))
|
||||
|
||||
def test_split_builder_uses_locked_validation_contract(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
data_root = Path(tmp)
|
||||
|
||||
Reference in New Issue
Block a user