Files
quant-factor-research/scripts/smoke.py

27 lines
749 B
Python
Raw Normal View History

2026-03-13 17:10:49 +08:00
from __future__ import annotations
import numpy as np
import pandas as pd
from qfr.factors import winsorize_by_date, zscore_by_date
from qfr.metrics import information_coefficient
def main() -> None:
dates = pd.to_datetime(["2026-01-01", "2026-01-02", "2026-01-03"])
assets = ["A", "B", "C", "D"]
idx = pd.MultiIndex.from_product([dates, assets], names=["date", "asset"])
rng = np.random.default_rng(42)
factor = pd.Series(rng.normal(size=len(idx)), index=idx)
fwd_ret = pd.Series(rng.normal(scale=0.01, size=len(idx)), index=idx)
factor2 = zscore_by_date(winsorize_by_date(factor))
ic = information_coefficient(factor2, fwd_ret)
print("IC mean:", float(ic.mean()))
if __name__ == "__main__":
main()