feat(data): add data models for ticker and trading features

This commit is contained in:
Giulio De Pasquale 2025-10-15 18:54:54 +01:00
parent 3ee3372203
commit 8fe934b971

85
paperone/data.py Normal file
View File

@ -0,0 +1,85 @@
from dataclasses import dataclass
from datetime import datetime
from typing import List
@dataclass
class TickerData:
date: datetime
open: float
close: float
low: float
high: float
avg: float
volume: float
@dataclass
class TimeSeriesFeatures:
ticker: str
target_date: datetime
current_day_data: TickerData
past_30d_data: List[TickerData]
@dataclass
class TradingFeatures:
ticker: str
target_date: datetime
# Current day features
current_open: float
current_high: float
current_low: float
current_close: float
current_volume: float
# Lagged price features (last 5 days)
close_lag_1: float
close_lag_2: float
close_lag_3: float
close_lag_4: float
close_lag_5: float
# Lagged volume features
volume_lag_1: float
volume_lag_2: float
volume_lag_3: float
volume_lag_4: float
volume_lag_5: float
# 5-day rolling window features
rolling_5d_mean: float
rolling_5d_std: float
rolling_5d_min: float
rolling_5d_max: float
rolling_5d_range: float
rolling_5d_volume_mean: float
rolling_5d_returns: float
# 10-day rolling window features
rolling_10d_mean: float
rolling_10d_std: float
rolling_10d_min: float
rolling_10d_max: float
rolling_10d_range: float
rolling_10d_volume_mean: float
rolling_10d_returns: float
# 30-day rolling window features
rolling_30d_mean: float
rolling_30d_std: float
rolling_30d_min: float
rolling_30d_max: float
rolling_30d_range: float
rolling_30d_volume_mean: float
rolling_30d_returns: float
# VIX features (from separate VIX time series)
vix_current: float
vix_lag_1: float
vix_lag_5: float
vix_rolling_5d_mean: float
vix_rolling_10d_mean: float
vix_rolling_30d_mean: float
vix_rolling_30d_std: float