feat: add Tushare Qlib data bridge
This commit is contained in:
@@ -17,6 +17,7 @@ sys.path.insert(0, str(ROOT / "src"))
|
||||
from platforms.qlib_runner import (
|
||||
QlibUnavailableError,
|
||||
_main,
|
||||
_validate_managed_provider_request,
|
||||
build_alpha158_lightgbm_task,
|
||||
generate_portable_momentum_signal,
|
||||
run_native_momentum_backtest,
|
||||
@@ -91,6 +92,35 @@ class QlibFixtureTest(unittest.TestCase):
|
||||
end_time="2024-02-01",
|
||||
)
|
||||
|
||||
def test_managed_provider_request_fails_before_terminal_session(self):
|
||||
evidence = {
|
||||
"managed": True,
|
||||
"calendar": {
|
||||
"start": "2024-01-02",
|
||||
"end": "2024-01-11",
|
||||
},
|
||||
"market": {"name": "tushare_a"},
|
||||
"benchmark": {"symbol": "SH999999"},
|
||||
}
|
||||
with self.assertRaisesRegex(
|
||||
ValueError,
|
||||
"simulator consumes the next provider session",
|
||||
):
|
||||
_validate_managed_provider_request(
|
||||
evidence,
|
||||
market="tushare_a",
|
||||
benchmark="SH999999",
|
||||
start_time="2024-01-02",
|
||||
end_time="2024-01-11",
|
||||
)
|
||||
_validate_managed_provider_request(
|
||||
evidence,
|
||||
market="tushare_a",
|
||||
benchmark="SH999999",
|
||||
start_time="2024-01-02",
|
||||
end_time="2024-01-10",
|
||||
)
|
||||
|
||||
@unittest.skipUnless(
|
||||
importlib.util.find_spec("pandas") is not None,
|
||||
"pandas is optional outside the Qlib environment",
|
||||
@@ -147,6 +177,7 @@ class QlibCliTest(unittest.TestCase):
|
||||
"clock_contract": "test-clock",
|
||||
"strategy_fidelity": "signal-only",
|
||||
"a_share_rule_fidelity": "approximation",
|
||||
"run_parameters": {"start_time": "2024-01-02"},
|
||||
}
|
||||
with tempfile.TemporaryDirectory() as temp:
|
||||
output = Path(temp) / "nested" / "summary.json"
|
||||
@@ -194,6 +225,10 @@ class QlibCliTest(unittest.TestCase):
|
||||
self.assertEqual(payload["workflow"], "momentum")
|
||||
self.assertEqual(payload["signal_rows"], 2)
|
||||
self.assertEqual(payload["portfolio_frequencies"], ["1day"])
|
||||
self.assertEqual(
|
||||
payload["run_parameters"]["start_time"],
|
||||
"2024-01-02",
|
||||
)
|
||||
self.assertIn('"workflow": "momentum"', printer.call_args.args[0])
|
||||
|
||||
def test_alpha158_cli_dispatches_with_validated_segments(self):
|
||||
|
||||
Reference in New Issue
Block a user