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
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
|