Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ dependencies = [
"google-cloud-storage",
"yfinance",
"quant-platform-kit @ git+https://github.com/QuantStrategyLab/QuantPlatformKit.git@0063af3b4a974650ea58a7d3f26dd1b94f65d3e8",
"us-equity-strategies @ git+https://github.com/QuantStrategyLab/UsEquityStrategies.git@67e1ed69d7b9c318f94c8809121d2b9481d6b11a",
"us-equity-strategies @ git+https://github.com/QuantStrategyLab/UsEquityStrategies.git@1643f37d723c4d0fdc475ce1030b3d911c07aacb",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Add runtime handling for promoted combo inputs

With this dependency bump, us_equity_combo is now exposed as the live profile and the updated status coverage expects it to run as current_holdings+russell_snapshot, but LoadedStrategyRuntime.evaluate() still only dispatches feature snapshots, market_data, market_history, or portfolio+derived/benchmark inputs before raising Unsupported required_inputs for anything else. When operators select the newly promoted us_equity_combo target, it will be accepted by config/status but fail at signal computation unless the platform builds the Russell snapshot/current-holdings inputs or keeps the profile out of the live allowlist.

Useful? React with 👍 / 👎.

"hk-equity-strategies @ git+https://github.com/QuantStrategyLab/HkEquityStrategies.git@61993bf261aeccf64b5a75428b9405f4e1d1d682",
]

Expand Down
20 changes: 7 additions & 13 deletions tests/test_runtime_config_support.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@
"soxl_soxx_trend_income",
"tqqq_growth_income",
"us_equity_combo",
"us_equity_combo_core",
"us_equity_combo_leveraged",
"hk_global_etf_tactical_rotation",
"hk_low_vol_dividend_quality_snapshot",
Expand Down Expand Up @@ -749,16 +748,13 @@ def test_load_platform_runtime_settings_accepts_nasdaq_sp500_smart_dca(monkeypat
assert settings.strategy_profile == "nasdaq_sp500_smart_dca"


def test_load_platform_runtime_settings_accepts_us_equity_combo_core(monkeypatch):
def test_load_platform_runtime_settings_rejects_us_equity_combo_core_shadow(monkeypatch):
monkeypatch.setenv("RUNTIME_TARGET_JSON", runtime_target_json("us_equity_combo_core"))
monkeypatch.setenv("ACCOUNT_GROUP", "paper")
monkeypatch.setenv("IB_ACCOUNT_GROUP_CONFIG_JSON", MINIMAL_GROUP_JSON)

settings = load_platform_runtime_settings(project_id_resolver=lambda: "project-1")

assert settings.strategy_profile == "us_equity_combo_core"
assert settings.strategy_display_name == "US Core Combo Shadow"
assert settings.strategy_target_mode == "weight"
with pytest.raises(ValueError, match="Unsupported STRATEGY_PROFILE"):
load_platform_runtime_settings(project_id_resolver=lambda: "project-1")


def test_load_platform_runtime_settings_rejects_legacy_qqq_tech_alias(monkeypatch):
Expand Down Expand Up @@ -801,9 +797,7 @@ def test_platform_profile_status_matrix_matches_current_ibkr_rollout():
assert by_profile["tqqq_growth_income"]["enabled"] is True
assert "nasdaq_sp500_smart_dca" in by_profile
assert "ibit_smart_dca" in by_profile
assert by_profile["us_equity_combo_core"]["display_name"] == "US Core Combo Shadow"
assert by_profile["us_equity_combo_core"]["eligible"] is True
assert by_profile["us_equity_combo_core"]["enabled"] is True
assert "us_equity_combo_core" not in by_profile
assert by_profile["hk_global_etf_tactical_rotation"] == {
"canonical_profile": "hk_global_etf_tactical_rotation",
"display_name": "HK Global ETF Tactical Rotation",
Expand Down Expand Up @@ -850,9 +844,9 @@ def test_print_strategy_profile_status_json_matches_registry():
assert by_profile["global_etf_rotation"]["requires_strategy_config_path"] is False
assert "nasdaq_sp500_smart_dca" in by_profile
assert "ibit_smart_dca" in by_profile
assert by_profile["us_equity_combo_core"]["profile_group"] == "direct_runtime_inputs"
assert by_profile["us_equity_combo_core"]["input_mode"] == "current_holdings+russell_snapshot"
assert by_profile["us_equity_combo_core"]["requires_strategy_config_path"] is False
assert by_profile["us_equity_combo"]["profile_group"] == "direct_runtime_inputs"
assert by_profile["us_equity_combo"]["input_mode"] == "current_holdings+russell_snapshot"
assert by_profile["us_equity_combo"]["requires_strategy_config_path"] is False
assert by_profile["us_equity_combo_leveraged"]["profile_group"] == "direct_runtime_inputs"
assert by_profile["us_equity_combo_leveraged"]["input_mode"] == "market_data"
assert by_profile["us_equity_combo_leveraged"]["requires_strategy_config_path"] is False
Expand Down
4 changes: 2 additions & 2 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading