Files
DOLPHIN/prod/docs/EXF_V2_DEPLOYMENT_SUMMARY.md

257 lines
9.2 KiB
Markdown
Raw Normal View History

# ExF System v2.0 - Deployment Summary
**Date**: 2026-03-17
**Status**: ✅ DEPLOYED (with known issues)
**Components**: 5 files, ~110KB total
---
## Executive Summary
Successfully implemented a complete External Factors (ExF) data pipeline with:
1. **Hot Path**: Hazelcast push every 0.5s for real-time alpha engine
2. **Durability**: Disk persistence every 5min (NPZ format) for backtests
3. **Integrity**: Continuous monitoring with health checks and alerts
---
## Files Delivered
| File | Size | Purpose | Status |
|------|------|---------|--------|
| `exf_fetcher_flow.py` | 12.4 KB | Prefect orchestration flow | ✅ Updated |
| `exf_persistence.py` | 16.9 KB | Disk writer (NPZ format) | ✅ New |
| `exf_integrity_monitor.py` | 15.1 KB | Health monitoring & alerts | ✅ New |
| `test_exf_integration.py` | 6.9 KB | Integration tests | ✅ New |
| `PROD_BRINGUP_GUIDE.md` | 24.5 KB | Operations documentation | ✅ Updated |
**Total**: 75.8 KB new code + documentation
---
## Architecture
```
┌─────────────────────────────────────────────────────────────────────┐
│ EXF SYSTEM v2.0 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ Data Providers (8) │
│ ├── Binance (funding, OI, L/S, basis, spread, imbalance) │
│ ├── Deribit (volatility, funding) ⚠️ HTTP 400 │
│ ├── FRED (VIX, DXY, rates) ✅ │
│ ├── Alternative.me (F&G) ✅ │
│ ├── Blockchain.info (hashrate) ⚠️ HTTP 404 │
│ ├── DeFi Llama (TVL) ✅ │
│ └── Coinglass (liquidations) ⚠️ HTTP 500 (needs auth) │
│ │
│ RealTimeExFService (28 indicators defined) │
│ ├── In-memory cache (<1ms read)
│ ├── Per-indicator polling (0.5s to 8h intervals) │
│ └── Rate limiting per provider │
│ │
│ Three Parallel Outputs: │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ HAZELCAST │ │ DISK │ │ MONITOR │ │
│ │ (Hot Path) │ │ (Off Hot Path) │ │ (Background) │ │
│ │ │ │ │ │ │ │
│ │ Interval: 0.5s │ │ Interval: 5min │ │ Interval: 60s │ │
│ │ Latency: <10ms Latency: N/A Latency: N/A
│ │ Format: JSON │ │ Format: NPZ │ │ Output: Alerts │ │
│ │ Key: exf_latest │ │ Path: eigenvalues/YYYY-MM-DD/ │ │
│ │ │ │ │ │ │ │
│ │ Consumer: │ │ Consumer: │ │ Actions: │ │
│ │ Alpha Engine │ │ Backtests │ │ Log/Alert │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
```
---
## Indicators Status (28 Defined)
| Category | Indicators | Working | Issues |
|----------|-----------|---------|--------|
| **Binance** (9) | funding_btc, funding_eth, oi_btc, oi_eth, ls_btc, ls_eth, ls_top, taker, basis, spread, imbal_* | ✅ 9/9 | None |
| **Deribit** (4) | dvol_btc, dvol_eth, fund_dbt_btc, fund_dbt_eth | ⚠️ 0/4 | HTTP 400 |
| **FRED** (5) | vix, dxy, us10y, sp500, fedfunds | ✅ 5/5 | None |
| **Sentiment** (1) | fng | ✅ 1/1 | None |
| **On-chain** (1) | hashrate | ⚠️ 0/1 | HTTP 404 |
| **DeFi** (1) | tvl | ✅ 1/1 | None |
| **Liquidations** (4) | liq_vol_24h, liq_long_ratio, liq_z_score, liq_percentile | ⚠️ 0/4 | HTTP 500 |
**Total**: ✅ 16/28 working, ⚠️ 12/28 with issues
---
## ACB Readiness
**ACB-Critical Indicators** (must all be present for alpha engine risk calc):
```python
ACB_KEYS = [
"funding_btc", "funding_eth", # ✅ Working
"dvol_btc", "dvol_eth", # ⚠️ HTTP 400 (Deribit)
"fng", # ✅ Working
"vix", # ✅ Working
"ls_btc", # ✅ Working
"taker", # ✅ Working
"oi_btc", # ✅ Working
]
```
**Current Status**: 6/9 present → `_acb_ready: False`
**Impact**: Alpha engine risk sensitivity **degraded** (no volatility overlay)
---
## DOLPHIN Compliance
### NPZ File Format ✅
```python
# Location
/mnt/ng6_data/eigenvalues/{YYYY-MM-DD}/
extf_snapshot_{timestamp}__Indicators.npz
# Contents
{
"_metadata": json.dumps({
"_timestamp_utc": "2026-03-17T12:00:00+00:00",
"_version": "1.0",
"_staleness_s": {...},
}),
"basis": np.array([0.01178]),
"spread": np.array([0.00143]),
...
}
# Checksum
extf_snapshot_{timestamp}__Indicators.npz.sha256
```
### Data Sufficiency Check ✅
```python
sufficiency = {
'sufficient': True/False,
'score': 0.0-1.0, # Overall sufficiency score
'acb_critical': "6/9", # ACB indicators present
'total_indicators': 16, # All indicators present
'freshness': 0.95, # % indicators fresh (<60s)
}
```
---
## Operations
### Start the System
```bash
cd /root/extf_docs
# Full production mode
python exf_fetcher_flow.py --warmup 30
# Test mode (no persistence/monitoring)
python exf_fetcher_flow.py --no-persist --no-monitor --warmup 15
```
### Check Status
```bash
# Health status
python3 << 'EOF'
import hazelcast, json
client = hazelcast.HazelcastClient(cluster_name='dolphin', cluster_members=['localhost:5701'])
data = json.loads(client.get_map("DOLPHIN_FEATURES").get("exf_latest").result())
print(f"ACB Ready: {data.get('_acb_ready')}")
print(f"Indicators: {data.get('_ok_count')}/{data.get('_expected_count')}")
print(f"ACB Present: {data.get('_acb_present')}")
print(f"Missing: {data.get('_acb_missing', [])}")
client.shutdown()
EOF
# Persistence stats
ls -la /mnt/ng6_data/eigenvalues/$(date +%Y-%m-%d)/
```
### Run Integration Tests
```bash
python test_exf_integration.py --duration 30 --test all
```
---
## Known Issues
| Issue | Severity | Indicator | Root Cause | Fix |
|-------|----------|-----------|------------|-----|
| Deribit HTTP 400 | **HIGH** | dvol_btc, dvol_eth, fund_dbt_* | API endpoint changed or auth required | Update Deribit API calls |
| Blockchain 404 | **LOW** | hashrate | Endpoint deprecated | Find alternative API |
| Coinglass 500 | **MED** | liq_* | Needs API key | Add authentication header |
---
## Next Steps
### P0 (Critical)
- [ ] Fix Deribit API endpoints for dvol_btc, dvol_eth
- [ ] Without these, ACB will never be ready
### P1 (High)
- [ ] Add Coinglass API authentication for liquidation data
- [ ] Add redundancy (multiple providers per indicator)
### P2 (Medium)
- [ ] Expand from 28 to 80+ indicators
- [ ] Create Grafana dashboards
- [ ] Add Prometheus metrics endpoint
### P3 (Low)
- [ ] Implement per-indicator optimal lags (needs 80+ days data)
- [ ] Switch to Arrow format for better performance
---
## Monitoring Alerts
The system generates alerts for:
| Alert | Severity | Condition |
|-------|----------|-----------|
| `missing_critical` | **CRITICAL** | ACB indicator missing |
| `hz_connectivity` | **CRITICAL** | Hazelcast disconnected |
| `staleness` | **WARNING** | Indicator stale > 120s |
| `divergence` | **WARNING** | HZ/disk data mismatch > 3 indicators |
| `persist_connectivity` | **WARNING** | Disk writer unavailable |
Alerts are logged to structured JSON and can be integrated with PagerDuty/webhooks.
---
## Summary
**DELIVERED**:
- Complete ExF pipeline (fetch → cache → HZ → disk → monitor)
- 28 indicators configured (16 working)
- NPZ persistence with checksums
- Health monitoring with alerts
- Integration tests
- Comprehensive documentation
⚠️ **BLOCKING ISSUES**:
- Deribit API returns 400 (affects ACB readiness)
- Without dvol_btc/dvol_eth, `_acb_ready` stays `False`
**Recommendation**: Fix Deribit integration before full production deployment.
---
*Generated: 2026-03-17*