You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.7 KiB
Python

from __future__ import annotations
import pandas as pd
from apps.tools.build_ranking_model import build_model
def test_build_model_normalizes_reaction_date_strings(tmp_path) -> None:
frame = pd.DataFrame(
[
{
"event_date": "2024-12-30",
"reaction_date": "2024-12-30",
"event_type": "earnings_release",
"reaction_day_return": 0.08,
"fwd_return_20d": 0.12,
"event_direction": "bullish",
"guidance_status": "raised",
"close_location": 0.72,
"volume_ratio_20d": 2.2,
"gap_size": 0.03,
"document_quality_score": 0.81,
"parse_confidence_overall": 0.82,
},
{
"event_date": "2025-01-02",
"reaction_date": "2025-01-02",
"event_type": "earnings_release",
"reaction_day_return": 0.09,
"fwd_return_20d": 0.10,
"event_direction": "bullish",
"guidance_status": "raised",
"close_location": 0.75,
"volume_ratio_20d": 2.4,
"gap_size": 0.02,
"document_quality_score": 0.83,
"parse_confidence_overall": 0.84,
},
]
)
snapshot_path = tmp_path / "train.parquet"
frame.to_parquet(snapshot_path)
model = build_model(snapshot_path, cutoff_event_date="2024-12-31", min_bucket_count=1)
assert model["training_rows"] == 1
assert model["global_mean"] == 0.12
event_type_feature = next(feature for feature in model["features"] if feature["name"] == "event_type")
assert event_type_feature["values"]["earnings_release"] == 0.12