원클릭으로
openbb-enrichment-integration
OpenBB Platform as parallel enrichment layer — fundamentals, FRED, earnings, news, options IV
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
OpenBB Platform as parallel enrichment layer — fundamentals, FRED, earnings, news, options IV
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Normalize long-form CODEX cycle folders to short form before notebooks run. Trigger: cyc001_reg001_*, hard-coded cyc paths breaking, staged CODEX raw data failing in Notebooks 1/2.
v5.6.0 joint multi-TF model: single model per symbol with broadcast 1Hour context replaces dual 15Min/1Hour models. Trigger: (1) replacing weighted-voting model aggregation, (2) adding broadcast features to vectorized env, (3) limited training data + worried about overfitting from doubling obs_dim, (4) backtest builder mismatch with newer feature counts.
DEPRECATED in v5.6.0 — see joint-multi-tf-v560 skill. Documents the v5.2.0 dual-model approach (train separate 15Min/1Hour models, combine via weighted voting). Still relevant for: (1) loading legacy v5.5.0 dual models, (2) understanding the historical aggregation layer, (3) resampling pattern via origin='start'.
Surface a shipped-but-undocumented CLI feature in user-facing docs. Trigger: user reports a known feature missing from README/readthedocs even though the CLI command exists.
KINTSUGI Snakefile + CLI changes that route SLURM jobs around accounts saturated by OTHER users on the same QOS pool. Trigger: QOSGrpMemLimit, jobs stuck pending despite available GPU slots in config, noisy neighbor on shared QOS, multi-user investment pool exhaustion, _build_cycle_assignment static-vs-live.
KINTSUGI SLURM batch processing: Maximize throughput using multi-account resource calculation with GPU+CPU pools per account. Trigger: SLURM job submission, batch processing, resource maximization, GPU+CPU concurrent, headless processing, resource pool.
| name | openbb-enrichment-integration |
| description | OpenBB Platform as parallel enrichment layer — fundamentals, FRED, earnings, news, options IV |
| author | Claude Code |
| date | "2026-02-24T00:00:00.000Z" |
| version | 4.4.0 |
| Item | Details |
|---|---|
| Date | 2026-02-24 |
| Goal | Add non-OHLCV enrichment data via OpenBB Platform without touching core Alpaca pipeline |
| Environment | Python 3.11+, openbb-core>=4.3.0 |
| Status | Success (Phase 1 complete: Foundation + T1.1 + T1.3 + T2.2) |
The Alpaca_trading system had significant blind spots: no fundamental data, no macro/economic context, no real earnings calendar, no sentiment/news, no options analytics. OpenBB fills these gaps as a parallel enrichment layer.
CRITICAL: OpenBB NEVER touches OHLCV data. Alpaca API remains mandatory for all price/volume data.
CURRENT:
Alpaca API (OHLCV) --> DataFetcher --> Cache --> GPU Env (59 features)
|
OpenBB Platform --> OpenBBDataProvider ---+--> Selection (sector lookups via FMP)
| +--> Risk Manager (VIX scaling)
| +--> Calendar Features (macro modulation)
+-- FMP, FRED, Benzinga providers
from alpaca_trading.data.openbb_provider import OpenBBDataProvider, get_openbb_provider
provider = get_openbb_provider()
# Check availability (True if SDK installed + any API key configured)
if provider.is_available:
profile = provider.get_equity_profile("AAPL") # FMP fundamentals
vix = provider.get_latest_vix() # FRED VIX level
spread = provider.get_yield_curve_spread() # T10Y2Y
_ensure_sdk() loads OpenBB only on first method call__new__ with threading.Lock(){cache_dir}/openbb_cache.db with per-type TTLconfig/openbb_keys.json > env vars > Colab SecretsNone when unavailable# CORRECT — patch at source module (lazy import inside methods)
@patch("alpaca_trading.data.openbb_provider.get_openbb_provider")
def test_something(self, mock_get):
mock_provider = MagicMock()
mock_provider.is_available = True
mock_get.return_value = mock_provider
...
# WRONG — fails because get_openbb_provider is not a module-level attribute
@patch("alpaca_trading.risk.integrated_risk.get_openbb_provider")
# In notebook setup cell — do NOT install openbb[all] (~100+ packages)
!pip install openbb-core openbb-equity openbb-economy openbb-news openbb-derivatives
| Attempt | Why it Failed | Lesson Learned |
|---|---|---|
| Patching at consuming module | AttributeError: module does not have attribute | Lazy imports aren't module-level attrs — patch at source |
pd.read_json(cached_string) | FutureWarning: literal strings deprecated | Use pd.read_json(io.StringIO(cached_string)) |
| Module-level OpenBB import | Import error when OpenBB not installed | Lazy import inside methods + _ensure_sdk() |
Installing openbb[all] | ~100+ packages, ~500MB, dependency conflicts | Only install 4 needed extensions (~50MB) |
# Cache TTL (seconds)
CACHE_TTL = {
'equity_profile': 2592000, # 30 days (quarterly data)
'fred_series': 14400, # 4 hours
'earnings_calendar': 86400, # 1 day
'company_news': 300, # 5 minutes
'options_chain': 3600, # 1 hour
}
# FMP rate limit
FMP_MAX_REQUESTS_PER_DAY = 250 # Free tier
# Dependencies (requirements.txt)
openbb-core>=4.3.0
openbb-equity>=4.3.0
openbb-economy>=4.3.0
openbb-news>=4.3.0
openbb-derivatives>=4.3.0
| File | Action | Description |
|---|---|---|
alpaca_trading/data/openbb_provider.py | Created | Singleton provider (~500 LOC) |
alpaca_trading/data/__init__.py | Modified | Added exports |
alpaca_trading/selection/symbol_database.py | Modified | OpenBB sector lookups (T1.1) |
alpaca_trading/features/calendar_features.py | Modified | Macro modulation (T1.3) |
alpaca_trading/risk/integrated_risk.py | Modified | VIX scaling (T2.2) |
alpaca_trading/risk/risk_monitor.py | Modified | VIX circuit breaker (T2.2) |
alpaca_trading/risk/capital_shift.py | Modified | VIX suppression (T2.2) |
config/requirements.txt | Modified | Added OpenBB deps |
tests/test_openbb_integration.py | Created | 41 tests |
41 tests across 6 test classes, all passing:
python -m pytest tests/test_openbb_integration.py -v
# Full suite: 1002 passed, 96 skipped