-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathapi.yaml
More file actions
190 lines (157 loc) · 4.95 KB
/
Copy pathapi.yaml
File metadata and controls
190 lines (157 loc) · 4.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
name: ml4t-data
version: "1.0.0"
description: Unified market data acquisition and storage for quantitative finance
providers:
equity:
- name: YahooFinanceProvider
import: ml4t.data.providers.yahoo
free_tier: unlimited
best_for: Quick start, US equities
- name: EODHDProvider
import: ml4t.data.providers.eodhd
free_tier: 500/day
best_for: Global equities (60+ exchanges)
- name: DatabentoProvider
import: ml4t.data.providers.databento
free_tier: trial
best_for: Institutional-grade data
- name: PolygonProvider
import: ml4t.data.providers.polygon
free_tier: limited
best_for: US equities tick data
- name: TiingoProvider
import: ml4t.data.providers.tiingo
free_tier: 500/day
best_for: US equities alternative
- name: TwelveDataProvider
import: ml4t.data.providers.twelve_data
free_tier: 800/day
best_for: Multi-asset coverage
- name: FinnhubProvider
import: ml4t.data.providers.finnhub
free_tier: limited
best_for: Real-time quotes
crypto:
- name: BinanceProvider
import: ml4t.data.providers.binance
free_tier: generous
best_for: Spot and futures data
- name: CoinGeckoProvider
import: ml4t.data.providers.coingecko
free_tier: 50/min
best_for: Market overview
- name: CryptoCompareProvider
import: ml4t.data.providers.cryptocompare
free_tier: 250k/month
best_for: Historical crypto data
- name: OKXProvider
import: ml4t.data.providers.okx
free_tier: unlimited
best_for: Exchange data
forex:
- name: OandaProvider
import: ml4t.data.providers.oanda
free_tier: trial
best_for: Institutional forex
factors:
- name: FamaFrenchProvider
import: ml4t.data.providers.fama_french
free_tier: unlimited
datasets: 50+
best_for: Academic factors (FF3, FF5, Momentum)
- name: AQRFactorProvider
import: ml4t.data.providers.aqr
free_tier: unlimited
datasets: 16
best_for: Alternative factors (QMJ, BAB, TSMOM)
- name: FREDProvider
import: ml4t.data.providers.fred
free_tier: unlimited
best_for: Economic indicators
historical:
- name: WikiPricesProvider
import: ml4t.data.providers.wiki_prices
free_tier: local
coverage: US equities 1962-2018
best_for: Historical fallback
storage:
classes:
- name: HiveStorage
import: ml4t.data.storage.hive
pattern: provider/frequency/year=YYYY/month=MM/symbol/data.parquet
best_for: Production use (recommended)
- name: FlatStorage
import: ml4t.data.storage.flat
pattern: symbol.parquet
best_for: Simple use cases
- name: MetadataTracker
import: ml4t.data.storage.metadata_tracker
purpose: Track update timestamps and row counts
core:
models:
- OHLCVBar
- SymbolSpec
- Timeframe
- ProviderCapabilities
exceptions:
- ProviderError
- RateLimitError
- SymbolNotFoundError
- DataValidationError
- CircuitBreakerOpen
utilities:
anomaly:
- name: AnomalyManager
import: ml4t.data.anomaly.manager
detectors:
- ReturnOutlierDetector
- VolumeSpikeDetector
- PriceStalenessDetector
validation:
- name: OHLCVValidator
import: ml4t.data.validation.ohlcv
checks:
- high >= low
- high >= open, close
- low <= open, close
- volume >= 0
cli:
commands:
- name: fetch
description: Fetch data for a symbol
args: [--provider, --symbol, --start, --end, --frequency]
- name: update-all
description: Update all datasets from config
args: [-c/--config, --dataset, --dry-run]
- name: list
description: List stored data
args: [--storage, --provider, --symbol]
- name: status
description: Show data status
args: [--symbol, --provider]
protocols:
- name: OHLCVProvider
methods:
- fetch_ohlcv(symbol, start, end, frequency) -> DataFrame
- capabilities() -> ProviderCapabilities
- name: AsyncOHLCVProvider
methods:
- fetch_ohlcv_async(symbol, start, end, frequency) -> DataFrame
- name: FactorProvider
methods:
- fetch(dataset, frequency) -> DataFrame
- list_datasets() -> list[str]
examples:
basic_fetch: |
from ml4t.data.providers import YahooFinanceProvider
provider = YahooFinanceProvider()
df = provider.fetch_ohlcv("AAPL", "2024-01-01", "2024-12-31")
async_batch: |
from ml4t.data.managers.async_batch import async_batch_load
async with YahooFinanceProvider() as provider:
df = await async_batch_load(provider, ["AAPL", "MSFT"], "2024-01-01", "2024-12-31")
with_storage: |
from ml4t.data.storage import HiveStorage, StorageConfig
storage = HiveStorage(config=StorageConfig(base_path="~/ml4t-data"))
storage.write(df, symbol="AAPL", provider="yahoo", frequency="daily")
df = storage.read(symbol="AAPL")