mts1b-altdata, mts1b-cryptodata, mts1b-macrodata — public API surface
Three sibling adapter packages. Same patterns; different sources.
mts1b-altdata
from mts1b_altdata.sec_edgar import SecEdgar
from mts1b_altdata.gdelt import Gdelt
from mts1b_altdata.congress import CongressTrades
from mts1b_altdata.news import NewsAggregator
# SEC filings
filings = await edgar.filings(Symbol("AAPL"), form="10-K", limit=5)
form4 = await edgar.form4(Symbol("AAPL"), start=date(2026, 1, 1))
fundamentals = await edgar.fundamentals(Symbol("AAPL"), period="quarterly")
# GDELT
async with Gdelt() as g:
events = await g.events(themes=["BUSINESS"], persons_or_orgs=["Apple Inc"])
tone = await g.tone_over_time(topic="federal reserve", days=30)
# Congress trades
async with CongressTrades() as ct:
trades = await ct.recent_trades(chamber="house", days=30)
# News + FinBERT sentiment
async with NewsAggregator(feeds=["reuters", "bloomberg", "wsj", "ft", "cnbc"]) as news:
articles = await news.search("NVIDIA earnings", days=7)
async for article in news.stream():
print(article.title, article.sentiment)
mts1b-cryptodata
from mts1b_cryptodata.binance.perp import BinancePerp
from mts1b_cryptodata.unified import funding_rates, funding_arb
from mts1b_cryptodata.uniswap_v3 import UniswapV3
from mts1b_cryptodata.defillama import DefiLlama
# Perpetual funding rates cross-venue
rates = await funding_rates(symbol="BTC-USD-PERP",
venues=["binance", "kraken_futures", "okx", "bybit"])
# [FundingRate(venue=..., rate=..., apr=...)]
arbs = await funding_arb(symbol="BTC-USD-PERP", min_spread_apr=0.10)
# Open interest
async with BinancePerp() as bp:
oi = await bp.open_interest("BTCUSDT")
history = await bp.oi_history("BTCUSDT", interval="1h", days=7)
# Uniswap V3 swaps
async with UniswapV3(chain="ethereum") as uni:
pools = await uni.top_pools(min_tvl_usd=10_000_000)
swaps = await uni.recent_swaps(pool="0x...", limit=1000)
# DeFi TVL
async with DefiLlama() as dl:
protocols = await dl.protocols(category="Lending")
tvl = await dl.protocol_tvl("aave-v3", days=30)
mts1b-macrodata
from mts1b_macrodata.fred import Fred
from mts1b_macrodata.ecb import Ecb
from mts1b_macrodata.bls import Bls
from mts1b_macrodata.bea import Bea
from mts1b_macrodata.unified.calendar import release_calendar
# FRED
async with Fred(api_key="...") as fred:
series = await fred.series("DFF") # Fed Funds Rate
df = await fred.multiseries(["DFF", "UNRATE", "GDPC1", "CPILFESL"])
meta = await fred.metadata("DFF")
# ECB
async with Ecb() as ecb:
series = await ecb.series("FM.D.U2.EUR.4F.KR.MRR_FR.LEV")
# BLS
async with Bls(api_key="...") as bls:
cpi = await bls.series("CUUR0000SA0")
# BEA
async with Bea(api_key="...") as bea:
gdp = await bea.series(dataset="NIPA", table="T10101", frequency="Q")
# Release calendar
events = await release_calendar(start=date.today(), days=30)
# [Release(name="NFP", date=..., country="US", impact="high"), ...]
Common patterns
Symbol → CIK resolution
from mts1b_altdata.resolve import to_cik, to_ticker
cik = await to_cik(Symbol("AAPL")) # 320193
ticker = await to_ticker(cik=320193) # "AAPL"
Caching
All three packages cache aggressively. Macro data: 6h-30d TTLs. Crypto perp data: 1m. Backed by mts1b-platform/db.
Rate limits
Respected per provider via mts1b-platform/ratelimit. Free SEC EDGAR: 10/sec. FRED: 120/min. GDELT: self-imposed 5/sec.
See also
repos/altdatarepos/cryptodatarepos/macrodatamts1b-datalake— ingests from all three