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
32 changes: 16 additions & 16 deletions .github/workflows/publish-snapshot-artifacts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -98,24 +98,24 @@ jobs:
CURRENT_HOLDINGS: ${{ inputs.current_holdings }}
PORTFOLIO_TOTAL_EQUITY: ${{ inputs.portfolio_total_equity }}
MIN_ADV20_USD: ${{ inputs.min_adv20_usd }}
SCHEDULED_PRICES_PATH: ${{ vars.SCHEDULED_US_EQUITY_PRICES_PATH || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_price_history.csv' }}
SCHEDULED_UNIVERSE_PATH: ${{ vars.SCHEDULED_US_EQUITY_UNIVERSE_PATH || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_universe_history.csv' }}
SCHEDULED_SOURCE_INPUT_MANIFEST_PATH: ${{ vars.SCHEDULED_US_EQUITY_SOURCE_INPUT_MANIFEST_PATH || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_source_input_manifest.json' }}
SCHEDULED_PRICES_PATH: ${{ vars.SCHEDULED_US_EQUITY_PRICES_PATH || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_price_history.csv' }}
SCHEDULED_UNIVERSE_PATH: ${{ vars.SCHEDULED_US_EQUITY_UNIVERSE_PATH || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_universe_history.csv' }}
SCHEDULED_SOURCE_INPUT_MANIFEST_PATH: ${{ vars.SCHEDULED_US_EQUITY_SOURCE_INPUT_MANIFEST_PATH || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_source_input_manifest.json' }}
SCHEDULED_RUSSELL_CONFIG_PATH: ${{ vars.SCHEDULED_RUSSELL_1000_CONFIG_PATH || '' }}
SCHEDULED_RUSSELL_GCS_PREFIX: ${{ vars.SCHEDULED_RUSSELL_1000_GCS_PREFIX || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/russell_1000_multi_factor_defensive_staging' }}
SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_PRICES_PATH: ${{ vars.SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_PRICES_PATH || vars.SCHEDULED_US_EQUITY_PRICES_PATH || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_price_history.csv' }}
SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_UNIVERSE_PATH: ${{ vars.SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_UNIVERSE_PATH || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_latest_holdings_snapshot.csv' }}
SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_GCS_PREFIX: ${{ vars.SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_GCS_PREFIX || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/mega_cap_leader_rotation_dynamic_top20_staging' }}
SCHEDULED_MEGA_CAP_AGGRESSIVE_PRICES_PATH: ${{ vars.SCHEDULED_MEGA_CAP_AGGRESSIVE_PRICES_PATH || vars.SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_PRICES_PATH || vars.SCHEDULED_US_EQUITY_PRICES_PATH || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_price_history.csv' }}
SCHEDULED_MEGA_CAP_AGGRESSIVE_UNIVERSE_PATH: ${{ vars.SCHEDULED_MEGA_CAP_AGGRESSIVE_UNIVERSE_PATH || vars.SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_UNIVERSE_PATH || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_latest_holdings_snapshot.csv' }}
SCHEDULED_MEGA_CAP_AGGRESSIVE_GCS_PREFIX: ${{ vars.SCHEDULED_MEGA_CAP_AGGRESSIVE_GCS_PREFIX || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/mega_cap_leader_rotation_aggressive_staging' }}
SCHEDULED_MEGA_CAP_TOP50_BALANCED_PRICES_PATH: ${{ vars.SCHEDULED_MEGA_CAP_TOP50_BALANCED_PRICES_PATH || vars.SCHEDULED_MEGA_CAP_AGGRESSIVE_PRICES_PATH || vars.SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_PRICES_PATH || vars.SCHEDULED_US_EQUITY_PRICES_PATH || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_price_history.csv' }}
SCHEDULED_MEGA_CAP_TOP50_BALANCED_UNIVERSE_PATH: ${{ vars.SCHEDULED_MEGA_CAP_TOP50_BALANCED_UNIVERSE_PATH || vars.SCHEDULED_MEGA_CAP_AGGRESSIVE_UNIVERSE_PATH || vars.SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_UNIVERSE_PATH || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_latest_holdings_snapshot.csv' }}
SCHEDULED_MEGA_CAP_TOP50_BALANCED_GCS_PREFIX: ${{ vars.SCHEDULED_MEGA_CAP_TOP50_BALANCED_GCS_PREFIX || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/mega_cap_leader_rotation_top50_balanced_staging' }}
SCHEDULED_DYNAMIC_MEGA_LEVERAGED_PULLBACK_PRICES_PATH: ${{ vars.SCHEDULED_DYNAMIC_MEGA_LEVERAGED_PULLBACK_PRICES_PATH || vars.SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_PRICES_PATH || vars.SCHEDULED_US_EQUITY_PRICES_PATH || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_price_history.csv' }}
SCHEDULED_DYNAMIC_MEGA_LEVERAGED_PULLBACK_UNIVERSE_PATH: ${{ vars.SCHEDULED_DYNAMIC_MEGA_LEVERAGED_PULLBACK_UNIVERSE_PATH || vars.SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_UNIVERSE_PATH || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_latest_holdings_snapshot.csv' }}
SCHEDULED_RUSSELL_GCS_PREFIX: ${{ vars.SCHEDULED_RUSSELL_1000_GCS_PREFIX || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/russell_1000_multi_factor_defensive_staging' }}
SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_PRICES_PATH: ${{ vars.SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_PRICES_PATH || vars.SCHEDULED_US_EQUITY_PRICES_PATH || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_price_history.csv' }}
SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_UNIVERSE_PATH: ${{ vars.SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_UNIVERSE_PATH || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_latest_holdings_snapshot.csv' }}
SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_GCS_PREFIX: ${{ vars.SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_GCS_PREFIX || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/mega_cap_leader_rotation_dynamic_top20_staging' }}
SCHEDULED_MEGA_CAP_AGGRESSIVE_PRICES_PATH: ${{ vars.SCHEDULED_MEGA_CAP_AGGRESSIVE_PRICES_PATH || vars.SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_PRICES_PATH || vars.SCHEDULED_US_EQUITY_PRICES_PATH || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_price_history.csv' }}
SCHEDULED_MEGA_CAP_AGGRESSIVE_UNIVERSE_PATH: ${{ vars.SCHEDULED_MEGA_CAP_AGGRESSIVE_UNIVERSE_PATH || vars.SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_UNIVERSE_PATH || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_latest_holdings_snapshot.csv' }}
SCHEDULED_MEGA_CAP_AGGRESSIVE_GCS_PREFIX: ${{ vars.SCHEDULED_MEGA_CAP_AGGRESSIVE_GCS_PREFIX || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/mega_cap_leader_rotation_aggressive_staging' }}
SCHEDULED_MEGA_CAP_TOP50_BALANCED_PRICES_PATH: ${{ vars.SCHEDULED_MEGA_CAP_TOP50_BALANCED_PRICES_PATH || vars.SCHEDULED_MEGA_CAP_AGGRESSIVE_PRICES_PATH || vars.SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_PRICES_PATH || vars.SCHEDULED_US_EQUITY_PRICES_PATH || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_price_history.csv' }}
SCHEDULED_MEGA_CAP_TOP50_BALANCED_UNIVERSE_PATH: ${{ vars.SCHEDULED_MEGA_CAP_TOP50_BALANCED_UNIVERSE_PATH || vars.SCHEDULED_MEGA_CAP_AGGRESSIVE_UNIVERSE_PATH || vars.SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_UNIVERSE_PATH || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_latest_holdings_snapshot.csv' }}
SCHEDULED_MEGA_CAP_TOP50_BALANCED_GCS_PREFIX: ${{ vars.SCHEDULED_MEGA_CAP_TOP50_BALANCED_GCS_PREFIX || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/mega_cap_leader_rotation_top50_balanced_staging' }}
SCHEDULED_DYNAMIC_MEGA_LEVERAGED_PULLBACK_PRICES_PATH: ${{ vars.SCHEDULED_DYNAMIC_MEGA_LEVERAGED_PULLBACK_PRICES_PATH || vars.SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_PRICES_PATH || vars.SCHEDULED_US_EQUITY_PRICES_PATH || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_price_history.csv' }}
SCHEDULED_DYNAMIC_MEGA_LEVERAGED_PULLBACK_UNIVERSE_PATH: ${{ vars.SCHEDULED_DYNAMIC_MEGA_LEVERAGED_PULLBACK_UNIVERSE_PATH || vars.SCHEDULED_MEGA_CAP_DYNAMIC_TOP20_UNIVERSE_PATH || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_latest_holdings_snapshot.csv' }}
SCHEDULED_DYNAMIC_MEGA_LEVERAGED_PULLBACK_PRODUCT_MAP_PATH: ${{ vars.SCHEDULED_DYNAMIC_MEGA_LEVERAGED_PULLBACK_PRODUCT_MAP_PATH || '' }}
SCHEDULED_DYNAMIC_MEGA_LEVERAGED_PULLBACK_GCS_PREFIX: ${{ vars.SCHEDULED_DYNAMIC_MEGA_LEVERAGED_PULLBACK_GCS_PREFIX || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/dynamic_mega_leveraged_pullback_staging' }}
SCHEDULED_DYNAMIC_MEGA_LEVERAGED_PULLBACK_GCS_PREFIX: ${{ vars.SCHEDULED_DYNAMIC_MEGA_LEVERAGED_PULLBACK_GCS_PREFIX || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/dynamic_mega_leveraged_pullback_staging' }}

steps:
- name: Checkout
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/publish-strategy-plugins.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,8 @@ jobs:
PRICE_END: ${{ inputs.price_end }}
INPUT_MARKET_REGIME_GCS_PREFIX: ${{ inputs.market_regime_gcs_prefix }}
INPUT_MARKET_REGIME_SOXL_GCS_PREFIX: ${{ inputs.market_regime_soxl_gcs_prefix }}
MARKET_REGIME_TQQQ_GCS_PREFIX: ${{ vars.MARKET_REGIME_CONTROL_GCS_PREFIX || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/tqqq_growth_income/plugins/market_regime_control' }}
MARKET_REGIME_SOXL_GCS_PREFIX: ${{ vars.MARKET_REGIME_CONTROL_SOXL_GCS_PREFIX || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/market_regime_notification/plugins/market_regime_control' }}
MARKET_REGIME_TQQQ_GCS_PREFIX: ${{ vars.MARKET_REGIME_CONTROL_GCS_PREFIX || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/tqqq_growth_income/plugins/market_regime_control' }}
MARKET_REGIME_SOXL_GCS_PREFIX: ${{ vars.MARKET_REGIME_CONTROL_SOXL_GCS_PREFIX || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/market_regime_notification/plugins/market_regime_control' }}
YFINANCE_PROXY: ${{ secrets.YFINANCE_PROXY }}
STRATEGY_PROFILE: ${{ matrix.strategy_profile }}
PLUGIN_TARGET_TYPE: ${{ matrix.target_type }}
Expand Down Expand Up @@ -379,7 +379,7 @@ jobs:
PRICE_START: ${{ inputs.price_start || '2010-01-01' }}
PRICE_END: ${{ inputs.price_end }}
INPUT_TQQQ_GCS_PREFIX: ${{ inputs.gcs_prefix }}
TQQQ_GCS_PREFIX: ${{ vars.CRISIS_RESPONSE_SHADOW_GCS_PREFIX || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/tqqq_growth_income/plugins/crisis_response_shadow' }}
TQQQ_GCS_PREFIX: ${{ vars.CRISIS_RESPONSE_SHADOW_GCS_PREFIX || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/tqqq_growth_income/plugins/crisis_response_shadow' }}
YFINANCE_PROXY: ${{ secrets.YFINANCE_PROXY }}
STRATEGY_PROFILE: ${{ matrix.strategy_profile }}
PLUGIN_NAME: crisis_response_shadow
Expand Down Expand Up @@ -583,7 +583,7 @@ jobs:
PRICE_START: ${{ inputs.price_start || '2010-01-01' }}
PRICE_END: ${{ inputs.price_end }}
INPUT_TACO_GCS_PREFIX: ${{ inputs.taco_gcs_prefix }}
TACO_GCS_PREFIX: ${{ vars.TACO_REBOUND_SHADOW_GCS_PREFIX || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/tqqq_growth_income/plugins/taco_rebound_shadow' }}
TACO_GCS_PREFIX: ${{ vars.TACO_REBOUND_SHADOW_GCS_PREFIX || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/tqqq_growth_income/plugins/taco_rebound_shadow' }}
YFINANCE_PROXY: ${{ secrets.YFINANCE_PROXY }}
STRATEGY_PROFILE: tqqq_growth_income
PLUGIN_NAME: taco_rebound_shadow
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/snapshot-artifact-health.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ jobs:
GCP_WORKLOAD_IDENTITY_SERVICE_ACCOUNT: ${{ vars.GCP_WORKLOAD_IDENTITY_SERVICE_ACCOUNT }}
PROFILE: ${{ matrix.profile }}
MAX_MONTH_LAG: ${{ inputs.max_month_lag || '1' }}
SCHEDULED_RUSSELL_GCS_PREFIX: ${{ vars.SCHEDULED_RUSSELL_1000_GCS_PREFIX || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/russell_1000_multi_factor_defensive_staging' }}
SCHEDULED_MEGA_CAP_TOP50_BALANCED_GCS_PREFIX: ${{ vars.SCHEDULED_MEGA_CAP_TOP50_BALANCED_GCS_PREFIX || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/mega_cap_leader_rotation_top50_balanced_staging' }}
SCHEDULED_RUSSELL_GCS_PREFIX: ${{ vars.SCHEDULED_RUSSELL_1000_GCS_PREFIX || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/russell_1000_multi_factor_defensive_staging' }}
SCHEDULED_MEGA_CAP_TOP50_BALANCED_GCS_PREFIX: ${{ vars.SCHEDULED_MEGA_CAP_TOP50_BALANCED_GCS_PREFIX || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/mega_cap_leader_rotation_top50_balanced_staging' }}

steps:
- name: Checkout
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/update-source-input-data.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ on:
output_prefix:
description: GCS prefix for refreshed source inputs.
required: false
default: gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias
default: gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias
type: string
universe_start:
description: Earliest iShares monthly universe snapshot request date.
Expand Down Expand Up @@ -76,7 +76,7 @@ jobs:
GCP_PROJECT_ID: ${{ vars.GCP_PROJECT_ID || 'interactivebrokersquant' }}
GCP_WORKLOAD_IDENTITY_PROVIDER: ${{ vars.GCP_WORKLOAD_IDENTITY_PROVIDER }}
GCP_WORKLOAD_IDENTITY_SERVICE_ACCOUNT: ${{ vars.GCP_WORKLOAD_IDENTITY_SERVICE_ACCOUNT }}
OUTPUT_PREFIX: ${{ inputs.output_prefix || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias' }}
OUTPUT_PREFIX: ${{ inputs.output_prefix || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias' }}
EXECUTE_PUBLISH: ${{ github.event_name == 'schedule' && 'true' || inputs.execute_publish }}
UNIVERSE_START: ${{ inputs.universe_start || '2018-01-01' }}
UNIVERSE_END: ${{ inputs.universe_end }}
Expand All @@ -88,8 +88,8 @@ jobs:
SAFE_HAVEN: ${{ inputs.safe_haven || 'BOXX' }}
EXTRA_SYMBOLS: ${{ inputs.extra_symbols || 'QQQ,SPY,BOXX' }}
CHUNK_SIZE: ${{ inputs.chunk_size || '100' }}
SCHEDULED_RUSSELL_GCS_PREFIX: ${{ vars.SCHEDULED_RUSSELL_1000_GCS_PREFIX || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/russell_1000_multi_factor_defensive_staging' }}
SCHEDULED_MEGA_CAP_TOP50_BALANCED_GCS_PREFIX: ${{ vars.SCHEDULED_MEGA_CAP_TOP50_BALANCED_GCS_PREFIX || 'gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/mega_cap_leader_rotation_top50_balanced_staging' }}
SCHEDULED_RUSSELL_GCS_PREFIX: ${{ vars.SCHEDULED_RUSSELL_1000_GCS_PREFIX || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/russell_1000_multi_factor_defensive_staging' }}
SCHEDULED_MEGA_CAP_TOP50_BALANCED_GCS_PREFIX: ${{ vars.SCHEDULED_MEGA_CAP_TOP50_BALANCED_GCS_PREFIX || 'gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/mega_cap_leader_rotation_top50_balanced_staging' }}

steps:
- name: Checkout
Expand Down
4 changes: 2 additions & 2 deletions docs/artifact_contract.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ Required baseline fields:
Current runtime-facing US equity snapshot artifacts are published under profile-specific `us_equity` prefixes:

```text
gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/russell_1000_multi_factor_defensive_staging/
gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/mega_cap_leader_rotation_top50_balanced_staging/
gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/russell_1000_multi_factor_defensive_staging/
gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/mega_cap_leader_rotation_top50_balanced_staging/
```

`tech_communication_pullback_enhancement` remains as archived research-only code and is no longer exposed by scheduled publish, artifact health, or runtime switching workflows.
20 changes: 10 additions & 10 deletions docs/operator_runbook.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,29 +79,29 @@ The workflow always uploads generated files as a GitHub Actions artifact.
`Update Source Input Data` runs once per month at `00:15 UTC` on the 1st day of the month. It refreshes the shared Russell 1000 inputs used by monthly snapshot profiles:

```text
gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_price_history.csv
gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_universe_history.csv
gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_symbol_aliases.csv
gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_universe_snapshot_metadata.csv
gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_latest_holdings_snapshot.csv
gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_price_history.csv
gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_universe_history.csv
gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_symbol_aliases.csv
gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_universe_snapshot_metadata.csv
gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_latest_holdings_snapshot.csv
```

`Publish Snapshot Artifacts` runs once per month at `00:45 UTC` and builds:

```text
profiles=russell_1000_multi_factor_defensive,mega_cap_leader_rotation_top50_balanced
prices_path=gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_price_history.csv
russell_universe_path=gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_universe_history.csv
mega_top50_balanced_universe_path=gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_latest_holdings_snapshot.csv
prices_path=gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_price_history.csv
russell_universe_path=gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_universe_history.csv
mega_top50_balanced_universe_path=gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/inputs/r1000_official_monthly_v2_alias/r1000_latest_holdings_snapshot.csv
execute_publish=true
```

Default scheduled output prefixes:

| Profile | Extra config | GCS prefix |
| --- | --- | --- |
| `russell_1000_multi_factor_defensive` | none | `gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/russell_1000_multi_factor_defensive_staging` |
| `mega_cap_leader_rotation_top50_balanced` | none | `gs://qsl-runtime-logs-interactivebrokersquant/strategy-artifacts/us_equity/mega_cap_leader_rotation_top50_balanced_staging` |
| `russell_1000_multi_factor_defensive` | none | `gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/russell_1000_multi_factor_defensive_staging` |
| `mega_cap_leader_rotation_top50_balanced` | none | `gs://qsl-runtime-logs-shared/strategy-artifacts/us_equity/mega_cap_leader_rotation_top50_balanced_staging` |

The publish workflow keeps a defensive month-end trading-day guard: if the resolved `snapshot_as_of` is not the last NYSE trading day of that snapshot month, it writes a skip artifact and does not publish to GCS.

Expand Down
Loading