import pandas as pd
from pathlib import Path
import sys

BASE_PATH = Path(__file__).resolve().parents[2]
SRC_PATH = BASE_PATH / "src"

if str(SRC_PATH) not in sys.path:
    sys.path.append(str(SRC_PATH))

from features.spot_lag_v3 import get_model_ready_spot_lag_v3


def run_test():

    df = get_model_ready_spot_lag_v3().copy()

    # future returns
    df["fwd_4h"] = df["close"].shift(-4) / df["close"] - 1
    df["fwd_24h"] = df["close"].shift(-24) / df["close"] - 1
    df["fwd_48h"] = df["close"].shift(-48) / df["close"] - 1

    df = df.dropna()

    # bucket lag signal
    df["lag_bucket"] = pd.qcut(
        df["lag_zscore_24h_v3"],
        10,
        labels=False,
        duplicates="drop"
    )

    result = df.groupby("lag_bucket").agg(
        avg_fwd_4h=("fwd_4h", "mean"),
        avg_fwd_24h=("fwd_24h", "mean"),
        avg_fwd_48h=("fwd_48h", "mean"),
        count=("lag_bucket", "size"),
    )

    print("\nFuture returns by lag signal bucket:\n")
    print(result)

    print("\nObservation count per bucket:\n")
    print(df["lag_bucket"].value_counts().sort_index())


if __name__ == "__main__":
    run_test()