TeX 53.6%
Python 46.2%
1import sys2from pathlib import Path34sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "src"))56import polars as pl78from intraday_fragility.schema import integrity_flags91011def make_df(rows):12 return pl.DataFrame(13 rows,14 schema={"timestamp": pl.Datetime("ns", "UTC"), "open": pl.Float64,15 "high": pl.Float64, "low": pl.Float64, "close": pl.Float64,16 "volume": pl.Float64, "ticker": pl.String},17 orient="row",18 )192021TS = "2020-01-02T14:30:00"222324def test_valid_bar_not_flagged():25 import datetime as dt26 ts = dt.datetime(2020, 1, 2, 14, 30, tzinfo=dt.timezone.utc)27 df = make_df([[ts, 10.0, 11.0, 9.5, 10.5, 100.0, "AAA"]])28 f = integrity_flags(df)29 assert not f["flag_ohlc_violation"][0]30 assert not f["flag_nonpositive_price"][0]31 assert not f["flag_negative_volume"][0]32 assert not f["flag_duplicate_key"][0]333435def test_high_below_close_flagged():36 import datetime as dt37 ts = dt.datetime(2020, 1, 2, 14, 30, tzinfo=dt.timezone.utc)38 df = make_df([[ts, 10.0, 10.2, 9.5, 10.5, 100.0, "AAA"]])39 assert integrity_flags(df)["flag_ohlc_violation"][0]404142def test_low_above_open_flagged():43 import datetime as dt44 ts = dt.datetime(2020, 1, 2, 14, 30, tzinfo=dt.timezone.utc)45 df = make_df([[ts, 9.0, 11.0, 9.5, 10.5, 100.0, "AAA"]])46 assert integrity_flags(df)["flag_ohlc_violation"][0]474849def test_duplicate_key_flagged():50 import datetime as dt51 ts = dt.datetime(2020, 1, 2, 14, 30, tzinfo=dt.timezone.utc)52 df = make_df([53 [ts, 10.0, 11.0, 9.5, 10.5, 100.0, "AAA"],54 [ts, 10.0, 11.0, 9.5, 10.5, 200.0, "AAA"],55 [ts, 10.0, 11.0, 9.5, 10.5, 100.0, "BBB"],56 ])57 f = integrity_flags(df)58 assert f["flag_duplicate_key"].sum() == 259 assert not f["flag_duplicate_key"][2]60