Download tests/test_conditional_shadow.py from Ypeng12/quant-ai: direct link, hf CLI and curl.
- Browser
- Download file 2.01 kB
-
https://huggingface.co/spaces/Ypeng12/quant-ai/resolve/main/tests/test_conditional_shadow.py
- Command line
-
hf download hf://spaces/Ypeng12/quant-ai/tests/test_conditional_shadow.py
-
curl -L -o test_conditional_shadow.py https://huggingface.co/spaces/Ypeng12/quant-ai/resolve/main/tests/test_conditional_shadow.py
2.01 kB
| """Synthetic paper decision integration; no broker or real future observation.""" | |
| import importlib.util,json,sys | |
| from pathlib import Path | |
| from dataclasses import asdict | |
| import pytest | |
| ROOT=Path(__file__).resolve().parents[1] | |
| sys.path.insert(0,str(ROOT/'backend'));sys.path.insert(0,str(ROOT/'backend/tests')) | |
| from test_stock_policy import panel,STOCKS as FOUR | |
| from test_liquid_policy import metadata,LiquidityRules | |
| spec=importlib.util.spec_from_file_location('conditional_shadow',ROOT/'scripts/shadow_conditional_policy.py') | |
| module=importlib.util.module_from_spec(spec);spec.loader.exec_module(module) | |
| def test_paper_adapter_records_conditional_horizon_without_assuming_fills(tmp_path,monkeypatch): | |
| frames=panel();bars=tmp_path/'bars';bars.mkdir() | |
| for s,f in frames.items():f.to_parquet(bars/f'{s}.parquet') | |
| manifest=dict(registered_at='2026-08-30T21:00Z',specification=dict(candidate='conditional_state_h6',input_symbols=list(frames), | |
| max_data_age_seconds=300,cost_bps=5,liquidity_rules=asdict(LiquidityRules(min_adv=1)))) | |
| monkeypatch.setattr(module,'read_manifest',lambda _:manifest) | |
| monkeypatch.setattr(module,'append_decision',lambda directory,payload,now:payload) | |
| instruments=tmp_path/'metadata.json';instruments.write_text(json.dumps(dict(records=metadata(frames)))) | |
| account=tmp_path/'account.json';account.write_text(json.dumps(dict(simulation=True,timestamp='2026-08-31T14:05:01Z',equity=100000,shares=dict.fromkeys(FOUR,0)))) | |
| r=module.record(tmp_path,bars,instruments,account,now='2026-08-31T14:05:03Z') | |
| assert {t['horizon'] for t in r['training']}=={6} | |
| assert all(t['last_train']<'2026-08-31' for t in r['training']) | |
| assert r['selection'] is None | |
| assert r['explanation']['horizon_bars']==6 | |
| assert r['pnl'] is None and r['orders_submitted']==0 | |
| assert set(r['explanation']['stock_models'])==set(FOUR) | |
| with pytest.raises(ValueError,match='Fresh future'): | |
| module.record(tmp_path,bars,instruments,account,now='2026-09-13T14:05:03Z') | |