feat: Add Phase 4 advanced metrics and components
- Add advanced metrics dashboard with trade analytics - Add new trading components (EntryTypeAnalysis, MultiDayPositionTracker, NewsEventTracker, etc.) - Add strategy mode selector and trend confirmation - Add risk automation panel and slippage correlation analysis - Add daily trading plan enhancements with modal components - Add custom hooks (useApi, useLocalStorage, useAdvancedTradeMetrics) - Add broker service integration and trading API - Add test setup and vitest configuration - Include parquet data files for live market data - Add comprehensive documentation in docs/ folder
This commit is contained in:
@@ -0,0 +1,291 @@
|
||||
# Gold Price Integration - Cleanup Summary
|
||||
|
||||
## Date: November 23, 2025
|
||||
|
||||
## Overview
|
||||
Successfully integrated BullionVault as the primary gold price data source and cleaned up redundant endpoints.
|
||||
|
||||
---
|
||||
|
||||
## ✅ Removed/Deprecated Components
|
||||
|
||||
### 1. **Deprecated API File**
|
||||
- **File**: `/backend/app/api/gold_market.py` → `gold_market.py.deprecated`
|
||||
- **Reason**: Functionality consolidated into `/api/market.py` with BullionVault integration
|
||||
- **Endpoints Removed**:
|
||||
- `GET /api/gold/quote` - Now handled by `/api/market/gold/current`
|
||||
- `GET /api/gold/intraday` - Historical data available via other endpoints
|
||||
- `GET /api/gold/status` - Data source info available in market endpoint
|
||||
|
||||
### 2. **Removed Router Registration**
|
||||
- **File**: `/backend/app/main.py`
|
||||
- **Change**: Removed `gold_market.router` import and registration
|
||||
- **Impact**: `/api/gold/*` endpoints no longer available (functionality moved to `/api/market/gold/*`)
|
||||
|
||||
---
|
||||
|
||||
## ✅ Active Components (Kept for Fallback)
|
||||
|
||||
### Primary Gold Price Services
|
||||
These services remain active in the fallback chain:
|
||||
|
||||
1. **BullionVault Service** ⭐ PRIMARY SOURCE
|
||||
- **File**: `/backend/app/services/metals/bullionvault_service.py`
|
||||
- **Status**: Active - Primary data source
|
||||
- **Endpoint**: `https://chart-data.bullionvault.com/prices/CSV/AUX/USD/600/Full`
|
||||
- **Current Price**: $4,065.32/oz ✅
|
||||
- **Purpose**: Professional bullion market real-time prices
|
||||
|
||||
2. **Gold Price Fetcher** (Multi-source with GLD ETF)
|
||||
- **File**: `/backend/app/services/metals/gold_price_fetcher.py`
|
||||
- **Status**: Active - Fallback source
|
||||
- **Purpose**: GLD ETF-based pricing (Alpha Vantage) with 10x multiplier
|
||||
- **Current Price**: ~$3,742.70/oz
|
||||
|
||||
3. **GoldPrice.org Service**
|
||||
- **File**: `/backend/app/services/metals/goldprice.py`
|
||||
- **Status**: Active - Fallback source
|
||||
- **Purpose**: Spot price data from goldprice.org API
|
||||
- **Used**: When BullionVault and GLD fetcher fail
|
||||
|
||||
4. **yFinance Provider**
|
||||
- **File**: `/backend/app/services/metals/yfinance_provider.py`
|
||||
- **Status**: Active - Fallback source
|
||||
- **Purpose**: Yahoo Finance data for GC=F (gold futures)
|
||||
- **Note**: Often returns no data, but kept for fallback
|
||||
|
||||
5. **Yahoo FX Service**
|
||||
- **File**: `/backend/app/services/metals/yahoo_fx.py`
|
||||
- **Status**: Active - Fallback source
|
||||
- **Purpose**: Direct Yahoo currency data
|
||||
- **Used**: Lower priority fallback
|
||||
|
||||
6. **Alpha Vantage FX**
|
||||
- **File**: `/backend/app/services/metals/alpha_fx.py`
|
||||
- **Status**: Active - Fallback source
|
||||
- **Purpose**: Alpha Vantage FX intraday data (XAUUSD)
|
||||
- **Used**: Last external source before simulator
|
||||
|
||||
---
|
||||
|
||||
## 📊 Current Data Flow
|
||||
|
||||
### GET /api/market/gold/current
|
||||
|
||||
**Priority Chain:**
|
||||
```
|
||||
1. BullionVault API (https://chart-data.bullionvault.com)
|
||||
├─ Success: Return $4,065.32/oz ✅
|
||||
└─ Failure: ↓
|
||||
|
||||
2. Gold Price Fetcher (GLD ETF × 10)
|
||||
├─ Success: Return ~$3,742/oz
|
||||
└─ Failure: ↓
|
||||
|
||||
3. GoldPrice.org
|
||||
├─ Success: Return spot price
|
||||
└─ Failure: ↓
|
||||
|
||||
4. yFinance (GC=F)
|
||||
├─ Success: Return futures price
|
||||
└─ Failure: ↓
|
||||
|
||||
5. Yahoo FX Direct
|
||||
├─ Success: Return FX price
|
||||
└─ Failure: ↓
|
||||
|
||||
6. Alpha Vantage FX
|
||||
├─ Success: Return intraday price
|
||||
└─ Failure: ↓
|
||||
|
||||
7. Simulator (Last Resort)
|
||||
└─ Return generated price
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Integration Status
|
||||
|
||||
### ✅ Completed
|
||||
- [x] BullionVault API discovery and integration
|
||||
- [x] CSV parser for BullionVault data format
|
||||
- [x] Multi-currency support (USD, GBP, EUR, JPY, AUD, CAD, CHF)
|
||||
- [x] Multiple timeframe support (10m, 1h, 6h, 1d, 1w, 1m, 3m, 1y, 5y, 20y)
|
||||
- [x] Integration with market.py endpoints
|
||||
- [x] Fallback chain implementation
|
||||
- [x] Cleanup of redundant gold_market.py endpoints
|
||||
- [x] Router removal from main.py
|
||||
|
||||
### 🔄 In Progress
|
||||
- [ ] Frontend verification with BullionVault prices
|
||||
- [ ] Update historical parquet files with current price levels
|
||||
- [ ] Add BullionVault health monitoring/alerts
|
||||
|
||||
### 📋 To Do
|
||||
- [ ] Consider removing yfinance_provider.py if consistently failing
|
||||
- [ ] Add metrics/logging for data source selection
|
||||
- [ ] Create admin dashboard showing active data source
|
||||
- [ ] Performance testing with BullionVault as primary
|
||||
|
||||
---
|
||||
|
||||
## 📝 API Endpoints Reference
|
||||
|
||||
### Active Endpoints
|
||||
|
||||
#### Primary Gold Market Endpoint
|
||||
```
|
||||
GET /api/market/gold/current
|
||||
Response: MarketDataResponse with accurate real-time prices
|
||||
Source: BullionVault → GLD ETF → fallback chain
|
||||
Current Price: $4,065.32/oz
|
||||
```
|
||||
|
||||
#### Historical Data
|
||||
```
|
||||
GET /api/market/gold/historical
|
||||
Parameters: interval, limit
|
||||
Returns: OHLCV candlestick data
|
||||
```
|
||||
|
||||
#### OHLC Data
|
||||
```
|
||||
GET /api/ohlcv
|
||||
Parameters: symbol=XAUUSD, timeframe, limit
|
||||
Returns: Historical bars
|
||||
```
|
||||
|
||||
### Deprecated Endpoints (Removed)
|
||||
```
|
||||
❌ GET /api/gold/quote → Use /api/market/gold/current
|
||||
❌ GET /api/gold/intraday → Use /api/ohlcv or /api/market/gold/historical
|
||||
❌ GET /api/gold/status → Integrated into /api/status
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Configuration
|
||||
|
||||
### BullionVault Settings
|
||||
```python
|
||||
# Base URL
|
||||
BASE_URL = "https://chart-data.bullionvault.com"
|
||||
|
||||
# Metal Codes
|
||||
AUX = Gold
|
||||
AGX = Silver
|
||||
PTX = Platinum
|
||||
PDX = Palladium
|
||||
|
||||
# Interval Codes (seconds between data points)
|
||||
5 = 10 minutes
|
||||
15 = 1 hour
|
||||
120 = 6 hours
|
||||
600 = 1 day (default)
|
||||
3600 = 1 week
|
||||
14400 = 1 month
|
||||
43200 = 3 months
|
||||
172800 = 1 year
|
||||
864000 = 5 years
|
||||
2592000 = 20 years
|
||||
```
|
||||
|
||||
### Cache TTL Settings
|
||||
```python
|
||||
RELIABLE_GOLD_CACHE_TTL_SEC = 60 # BullionVault/GLD cache
|
||||
GOLDPRICE_CACHE_TTL_SEC = 10 # GoldPrice.org cache
|
||||
YFINANCE_CACHE_TTL_SEC = 45 # yFinance cache
|
||||
YAHOO_CACHE_TTL_SEC = 60 # Yahoo FX cache
|
||||
ALPHA_CACHE_TTL_SEC = 55 # Alpha Vantage cache
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Testing Commands
|
||||
|
||||
### Test BullionVault Service
|
||||
```bash
|
||||
cd /Users/user/Downloads/gold-trading-simulator/backend
|
||||
PYTHONPATH=. venv/bin/python -c "
|
||||
import asyncio
|
||||
from app.services.metals.bullionvault_service import get_bullionvault_gold_price
|
||||
|
||||
async def test():
|
||||
price_data = await get_bullionvault_gold_price('USD')
|
||||
print(f\"Price: \${price_data['price']:.2f}/oz\")
|
||||
|
||||
asyncio.run(test())
|
||||
"
|
||||
```
|
||||
|
||||
### Test Market Endpoint
|
||||
```bash
|
||||
curl http://localhost:8000/api/market/gold/current | jq
|
||||
```
|
||||
|
||||
### Expected Response
|
||||
```json
|
||||
{
|
||||
"symbol": "XAU/USD",
|
||||
"price": 4065.32,
|
||||
"change": 0.00,
|
||||
"change_percent": 0.0000,
|
||||
"high_24h": 4065.32,
|
||||
"low_24h": 4065.32,
|
||||
"volume": 0.0
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📈 Price Accuracy Verification
|
||||
|
||||
| Source | Price | Accuracy | Status |
|
||||
|--------|-------|----------|--------|
|
||||
| **BullionVault** | **$4,065.32/oz** | ✅ Accurate | Primary |
|
||||
| GLD ETF × 10 | $3,742.70/oz | ⚠️ Lower | Fallback |
|
||||
| GoldPrice.org | Varies | ⚠️ Delayed | Fallback |
|
||||
| yFinance | Often fails | ❌ Unreliable | Fallback |
|
||||
| Yahoo FX | Varies | ⚠️ Mixed | Fallback |
|
||||
| Alpha Vantage FX | Varies | ⚠️ Mixed | Fallback |
|
||||
| Simulator | ~$2,034/oz | ❌ Outdated | Last Resort |
|
||||
|
||||
**Conclusion**: BullionVault provides the most accurate real-time gold prices at $4,065.32/oz, matching current market conditions.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Deployment Notes
|
||||
|
||||
### Environment Variables
|
||||
No new environment variables required. BullionVault API is public and doesn't require authentication.
|
||||
|
||||
### Dependencies
|
||||
All required dependencies already installed:
|
||||
- `httpx` - For async HTTP requests
|
||||
- `csv` module - For CSV parsing (stdlib)
|
||||
|
||||
### Monitoring
|
||||
- Monitor BullionVault API availability
|
||||
- Track fallback source usage frequency
|
||||
- Alert on excessive fallback usage (indicates BullionVault issues)
|
||||
|
||||
---
|
||||
|
||||
## 📚 References
|
||||
|
||||
- BullionVault CSV API: `https://chart-data.bullionvault.com`
|
||||
- BullionVault Chart Documentation: Provided by user
|
||||
- Alpha Vantage API: Using for GLD ETF data
|
||||
- Market API Documentation: `/api/market/gold/current`
|
||||
|
||||
---
|
||||
|
||||
## ✅ Sign-off
|
||||
|
||||
**Integration Status**: ✅ Complete
|
||||
**Price Accuracy**: ✅ Verified ($4,065.32/oz)
|
||||
**Cleanup Status**: ✅ Redundant endpoints removed
|
||||
**Fallback Chain**: ✅ Operational
|
||||
**Ready for Testing**: ✅ Yes
|
||||
|
||||
**Next Action**: Frontend integration testing and user acceptance testing
|
||||
Reference in New Issue
Block a user