- Created data/examples/download_ml_training_data.rs using reqwest + Databento HTTP API - Downloaded 90 days × 4 symbols (ES.FUT, NQ.FUT, ZN.FUT, 6E.FUT) - Files saved to test_data/real/databento/ml_training/ - Total: 360 files, 15 MB compressed DBN format - Used existing Rust pattern from download_nq_fut.rs - API key loaded from .env file - 100% success rate (360/360 files) - Ready for ML training benchmarks Next: Create simplified training benchmark for RTX 3050 Ti GPU measurements
3.2 KiB
3.2 KiB
CryptoDataDownload - Quick Reference Card
🎯 Bottom Line
Score: 8.0/10 ⭐⭐⭐⭐ Verdict: ✅ RECOMMENDED for production use
📥 Download URLs
# BTC/USD (44 MB)
curl -o btc_2024.csv https://www.cryptodatadownload.com/cdd/Bitstamp_BTCUSD_2024_minute.csv
# ETH/USD (46 MB)
curl -o eth_2024.csv https://www.cryptodatadownload.com/cdd/Bitstamp_ETHUSD_2024_minute.csv
📊 Key Metrics
| Metric | BTC/USD | ETH/USD |
|---|---|---|
| Completeness | 96.65% | 98.03% |
| OHLCV Violations | 0 | 0 |
| Outliers | 0 | 0 |
| Zero Volume | 3.34% | 11.26% |
| Price Range | $38K-$108K | $2.1K-$4.1K |
| Total Rows | 509,364 | 516,678 |
✅ Strengths
- Zero data integrity issues (perfect OHLCV)
- No extreme outliers (>10% moves)
- Free & no API key required
- Full 2024 coverage (366 days)
- Daily updates
⚠️ Weaknesses
- 11% zero-volume bars (ETH)
- 3-4% data gaps
- Single exchange (Bitstamp only)
- No real-time API
- Manual download required
💻 Python Quick Start
import pandas as pd
# Load data (skip header row)
df = pd.read_csv('Bitstamp_BTCUSD_2024_minute.csv', skiprows=1)
df['date'] = pd.to_datetime(df['date'])
df = df.sort_values('date') # Chronological order
# Handle gaps (forward-fill)
df = df.set_index('date').asfreq('1min', method='ffill').reset_index()
# Filter zero-volume bars (optional)
df_filtered = df[df['Volume BTC'] > 0]
print(f"Total bars: {len(df):,}")
print(f"Date range: {df['date'].min()} to {df['date'].max()}")
🦀 Rust Integration
// Convert to Parquet for Foxhunt
use crate::data::parquet_persistence::ParquetMarketDataWriter;
let writer = ParquetMarketDataWriter::new(
"test_data/bitstamp_btcusd_2024.parquet"
);
// Write OHLCV bars
for bar in csv_reader.into_iter() {
writer.write_event(MarketDataEvent::from_ohlcv(bar)).await?;
}
📝 Data Format
unix,date,symbol,open,high,low,close,Volume BTC,Volume USD
1704067200,2024-01-01 00:00:00,BTC/USD,42258,42268,42257,42268,1.049735,44361.10698
Notes:
- Header row: website URL (skip it!)
- Reverse chronological (newest first)
- Unix timestamps + human-readable dates
- Separate volume columns (crypto + USD)
🔍 Use Cases
| Use Case | Suitability |
|---|---|
| ML Training | ✅ Excellent |
| Backtesting | ✅ Excellent |
| Research | ✅ Excellent |
| Production Signals | ⚠️ Good (handle gaps) |
| Real-time Trading | ❌ Not suitable (no API) |
| Multi-exchange Arb | ❌ Not suitable (single source) |
📂 File Locations
/home/jgrusewski/Work/foxhunt/wave153_bakeoff_cryptodatadownload/
├── Bitstamp_BTCUSD_2024_minute.csv (44 MB)
├── Bitstamp_ETHUSD_2024_minute.csv (46 MB)
├── analysis_report.json (detailed metrics)
├── BAKEOFF_SUMMARY.md (full report)
└── QUICK_REFERENCE.md (this file)
🚀 Next Steps
- ✅ Data downloaded and validated
- ⏭️ Convert to Parquet format
- ⏭️ Integrate with backtesting_service
- ⏭️ Train ML models on historical data
- ⏭️ Compare to alternative data sources
Last Updated: 2025-10-12 Analysis: Wave 153 Data Source Bake-Off