Files
2026-07-13 13:26:28 +08:00

2106 lines
300 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "54aaaa30",
"metadata": {
"tags": []
},
"source": [
"# Complete Data Pipeline: Multi-Source Acquisition to ML-Ready Data\n",
"\n",
"**Docker image**: `ml4t`\n",
"\n",
"## Purpose\n",
"Wire together the chapter's components — multi-provider acquisition,\n",
"OHLC validation, source attribution, and efficient storage — into two\n",
"end-to-end pipelines: an equity pipeline that stitches WikiPrices\n",
"(1990-2018) with Yahoo (2018-now), and a crypto pipeline that consumes\n",
"the local Binance hourly perpetuals panel. The notebook then shows how\n",
"`ml4t.data.DataManager` collapses the same logic into a few lines.\n",
"\n",
"## Learning Objectives\n",
"- Build a multi-source equity pipeline and validate at every boundary.\n",
"- Detect 24/7 coverage gaps and add session features for crypto data.\n",
"- Tag every row with its source so multi-source data is auditable.\n",
"- Replace the explicit pipeline with the `DataManager` + `Universe` +\n",
" `HiveStorage` higher-level API that ships with `ml4t.data`.\n",
"\n",
"## Book reference\n",
"Chapter 2, §2.3 (multi-source stitching + production pipelines). The\n",
"pipeline outputs feed the ETF and crypto-perps case studies.\n",
"\n",
"## Prerequisites\n",
"- WikiPrices parquet under\n",
" `ML4T_DATA_PATH/equities/market/us_equities/us_equities.parquet`.\n",
"- Crypto-perps hourly parquet loadable via `data.load_crypto_perps`.\n",
"- Live YahooFinance access (the equity pipeline calls it for the\n",
" 2018-now leg — same convention as `16_provider_comparison`).\n",
"\n",
"## Note on universe choice\n",
"WikiPrices covers individual US stocks (~3,200 tickers, 1962-2018) but\n",
"**not** index ETFs. For the equity pipeline below the demo universe\n",
"uses three large-caps (AAPL, MSFT, JPM) so the WikiPrices-Yahoo stitch\n",
"is non-trivial; the ETF rotation case study itself uses Yahoo-only\n",
"from 2008 onwards (see `case_studies/etfs/`)."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "4ddd2b38",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-16T02:26:39.843467Z",
"iopub.status.busy": "2026-06-16T02:26:39.843401Z",
"iopub.status.idle": "2026-06-16T02:26:41.647882Z",
"shell.execute_reply": "2026-06-16T02:26:41.647336Z"
},
"lines_to_next_cell": 2,
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
".venv/lib/python3.14/site-packages/kaleido/scopes/plotly.py:32: DeprecationWarning: \n",
"Use of plotly.io.kaleido.scope.default_format is deprecated and support will be removed after September 2025.\n",
"Please use plotly.io.defaults.default_format instead.\n",
"\n",
" self.default_format = \"png\"\n",
".venv/lib/python3.14/site-packages/kaleido/scopes/plotly.py:33: DeprecationWarning: \n",
"Use of plotly.io.kaleido.scope.default_width is deprecated and support will be removed after September 2025.\n",
"Please use plotly.io.defaults.default_width instead.\n",
"\n",
" self.default_width = 700\n",
".venv/lib/python3.14/site-packages/kaleido/scopes/plotly.py:34: DeprecationWarning: \n",
"Use of plotly.io.kaleido.scope.default_height is deprecated and support will be removed after September 2025.\n",
"Please use plotly.io.defaults.default_height instead.\n",
"\n",
" self.default_height = 500\n",
".venv/lib/python3.14/site-packages/kaleido/scopes/plotly.py:35: DeprecationWarning: \n",
"Use of plotly.io.kaleido.scope.default_scale is deprecated and support will be removed after September 2025.\n",
"Please use plotly.io.defaults.default_scale instead.\n",
"\n",
" self.default_scale = 1\n",
".venv/lib/python3.14/site-packages/plotly/io/_kaleido.py:133: DeprecationWarning: \n",
"Use of plotly.io.kaleido.scope.mathjax is deprecated and support will be removed after September 2025.\n",
"Please use plotly.io.defaults.mathjax instead.\n",
"\n",
" setattr(self._scope, name, value)\n",
".venv/lib/python3.14/site-packages/plotly/io/_kaleido.py:141: DeprecationWarning: \n",
"Use of plotly.io.kaleido.scope.plotlyjs is deprecated and support will be removed after September 2025.\n",
"Please use plotly.io.defaults.plotlyjs instead.\n",
"\n",
" scope.plotlyjs = os.path.join(package_dir, \"plotly.min.js\")\n",
".venv/lib/python3.14/site-packages/plotly/io/_kaleido.py:147: DeprecationWarning: \n",
"Use of plotly.io.kaleido.scope.mathjax is deprecated and support will be removed after September 2025.\n",
"Please use plotly.io.defaults.mathjax instead.\n",
"\n",
" scope.mathjax = (\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Data path: data\n"
]
}
],
"source": [
"\"\"\"Complete Data Pipeline — Multi-source acquisition to ML-ready data.\"\"\"\n",
"\n",
"from datetime import datetime\n",
"from pathlib import Path\n",
"from typing import Any\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import polars as pl\n",
"from ml4t.data.providers import WikiPricesProvider, YahooFinanceProvider\n",
"\n",
"from data import load_crypto_perps\n",
"from utils import DATA_DIR\n",
"from utils.paths import get_output_dir\n",
"\n",
"# Reproducibility: a fixed AS_OF_DATE keeps outputs stable between book editions.\n",
"AS_OF_DATE = \"2025-01-15\"\n",
"print(f\"Data path: {DATA_DIR}\")"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "2035946b",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-16T02:26:41.649191Z",
"iopub.status.busy": "2026-06-16T02:26:41.649102Z",
"iopub.status.idle": "2026-06-16T02:26:41.650955Z",
"shell.execute_reply": "2026-06-16T02:26:41.650560Z"
},
"tags": [
"parameters"
]
},
"outputs": [],
"source": [
"# Production defaults — Papermill injects overrides for CI"
]
},
{
"cell_type": "markdown",
"id": "9342b2a0",
"metadata": {
"tags": []
},
"source": [
"---\n",
"\n",
"## 1. Pipeline Architecture\n",
"\n",
"A production pipeline has three stages:\n",
"\n",
"| Stage | Inputs | Outputs |\n",
"|-------|--------|---------|\n",
"| **Acquire** | Yahoo Finance, WikiPrices, Binance | raw OHLCV per source |\n",
"| **Process** | raw OHLCV | validated, normalized, tagged frames |\n",
"| **Store** | tagged frames | partitioned Parquet keyed by symbol/date |\n",
"\n",
"Four design principles drive the rest of the notebook:\n",
"\n",
"1. **Provider independence** — the orchestrator shouldn't care which\n",
" source each row came from.\n",
"2. **Validate at boundaries** — every entry/exit point checks OHLC\n",
" invariants, gap thresholds, and duplicate timestamps.\n",
"3. **Source attribution** — every row carries a `source` column so\n",
" downstream debugging stays sane.\n",
"4. **Incremental updates** — re-runs fetch only what is new (the\n",
" `DataManager` API in §5 handles this transparently)."
]
},
{
"cell_type": "markdown",
"id": "de57d030",
"metadata": {
"lines_to_next_cell": 2,
"tags": []
},
"source": [
"---\n",
"\n",
"## 2. Equity Pipeline (Stocks: AAPL / MSFT / JPM)\n",
"\n",
"### Requirements\n",
"\n",
"- **Universe**: AAPL, MSFT, JPM (chosen because they have full\n",
" WikiPrices coverage; pure ETFs like SPY only have Yahoo data here).\n",
"- **History**: 1990-present (~35 years).\n",
"- **Frequency**: Daily.\n",
"- **Adjustments**: Split + dividend (total return)."
]
},
{
"cell_type": "markdown",
"id": "b9a4e40c",
"metadata": {
"lines_to_next_cell": 2,
"tags": []
},
"source": [
"### Combine Multi-Source Data\n",
"\n",
"Wiki Prices ends at 2018-03-27; Yahoo Finance continues from there.\n",
"This function stitches the two sources at the boundary, tagging each\n",
"row with its origin for downstream auditability."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "3ada54bb",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-16T02:26:41.651893Z",
"iopub.status.busy": "2026-06-16T02:26:41.651827Z",
"iopub.status.idle": "2026-06-16T02:26:41.655344Z",
"shell.execute_reply": "2026-06-16T02:26:41.654899Z"
},
"lines_to_next_cell": 2,
"tags": []
},
"outputs": [],
"source": [
"def _combine_pipeline_sources(\n",
" historical: pl.DataFrame | None,\n",
" recent: pl.DataFrame | None,\n",
" symbol: str,\n",
" wiki_end: str = \"2018-03-27\",\n",
") -> pl.DataFrame:\n",
" \"\"\"Combine Wiki Prices and Yahoo Finance data at the provider boundary.\"\"\"\n",
" if historical is None and recent is None:\n",
" raise ValueError(f\"No data available for {symbol}\")\n",
"\n",
" if historical is None:\n",
" return recent.with_columns(pl.lit(\"yahoo\").alias(\"source\"))\n",
"\n",
" if recent is None:\n",
" return historical.with_columns(pl.lit(\"wiki\").alias(\"source\"))\n",
"\n",
" # Both sources - combine with proper boundary\n",
" wiki_end_dt = datetime.strptime(wiki_end, \"%Y-%m-%d\").date()\n",
"\n",
" historical = historical.filter(pl.col(\"timestamp\").dt.date() <= wiki_end_dt)\n",
" recent = recent.filter(pl.col(\"timestamp\").dt.date() > wiki_end_dt)\n",
"\n",
" # Back-adjust the historical Wiki series for any splits that occurred AFTER\n",
" # the Wiki cutoff (e.g., AAPL 4-for-1 on 2020-08-31). Wiki's adjusted prices\n",
" # only back-adjust splits available within its own coverage window; Yahoo's\n",
" # adjusted prices retroactively account for every later split. Without this\n",
" # rescale, the stitch produces a visible step at the source boundary. We\n",
" # rescale historical OHLC by the ratio of (Yahoo first close) / (Wiki last\n",
" # close); both series are already dividend-adjusted, so this isolates the\n",
" # post-boundary split factor. Volume scales inversely to price (a 4-for-1\n",
" # split divides price by 4 and multiplies volume by 4), so the historical\n",
" # volume column is divided by the same factor to stay consistent with\n",
" # Yahoo's retroactively-split-adjusted volume on the recent side.\n",
" if len(historical) > 0 and len(recent) > 0:\n",
" wiki_last_close = historical.sort(\"timestamp\")[\"close\"][-1]\n",
" yahoo_first_close = recent.sort(\"timestamp\")[\"close\"][0]\n",
" if wiki_last_close and wiki_last_close > 0 and yahoo_first_close and yahoo_first_close > 0:\n",
" scale = yahoo_first_close / wiki_last_close\n",
" historical = historical.with_columns(\n",
" [\n",
" (pl.col(\"open\") * scale).alias(\"open\"),\n",
" (pl.col(\"high\") * scale).alias(\"high\"),\n",
" (pl.col(\"low\") * scale).alias(\"low\"),\n",
" (pl.col(\"close\") * scale).alias(\"close\"),\n",
" (pl.col(\"volume\") / scale).alias(\"volume\"),\n",
" ]\n",
" )\n",
"\n",
" historical = historical.with_columns(pl.lit(\"wiki\").alias(\"source\"))\n",
" recent = recent.with_columns(pl.lit(\"yahoo\").alias(\"source\"))\n",
"\n",
" common_cols = list(set(historical.columns) & set(recent.columns))\n",
" combined = pl.concat([historical.select(common_cols), recent.select(common_cols)]).sort(\n",
" \"timestamp\"\n",
" )\n",
"\n",
" return combined"
]
},
{
"cell_type": "markdown",
"id": "d4cb7f9f",
"metadata": {
"lines_to_next_cell": 2,
"tags": []
},
"source": [
"### Validate Pipeline Data\n",
"\n",
"Check OHLC invariants, detect zero/negative prices, flag date gaps\n",
"beyond five calendar days, and catch duplicate timestamps."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "f920c49a",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-16T02:26:41.656119Z",
"iopub.status.busy": "2026-06-16T02:26:41.656059Z",
"iopub.status.idle": "2026-06-16T02:26:41.658887Z",
"shell.execute_reply": "2026-06-16T02:26:41.658643Z"
},
"lines_to_next_cell": 2,
"tags": []
},
"outputs": [],
"source": [
"def _validate_pipeline_data(df: pl.DataFrame, symbol: str) -> dict[str, Any]:\n",
" \"\"\"Run data quality validation checks on OHLCV data.\"\"\"\n",
" issues = []\n",
"\n",
" # OHLC invariants\n",
" ohlc_valid = (\n",
" (df[\"high\"] >= df[\"low\"]).all()\n",
" and (df[\"high\"] >= df[\"open\"]).all()\n",
" and (df[\"high\"] >= df[\"close\"]).all()\n",
" and (df[\"low\"] <= df[\"open\"]).all()\n",
" and (df[\"low\"] <= df[\"close\"]).all()\n",
" )\n",
" if not ohlc_valid:\n",
" issues.append(\"OHLC invariant violations\")\n",
"\n",
" # Zero/negative prices\n",
" if (df[\"close\"] <= 0).any():\n",
" issues.append(\"Zero or negative prices\")\n",
"\n",
" # Date gaps\n",
" dates = df[\"timestamp\"].sort().to_list()\n",
" max_gap_days = max(\n",
" (dates[i] - dates[i - 1]).days for i in range(1, len(dates)) if len(dates) > 1\n",
" )\n",
"\n",
" if max_gap_days > 5:\n",
" issues.append(f\"Date gap of {max_gap_days} days\")\n",
"\n",
" # Duplicate dates\n",
" if df[\"timestamp\"].n_unique() != len(df):\n",
" issues.append(f\"Duplicate dates: {len(df) - df['timestamp'].n_unique()}\")\n",
"\n",
" return {\n",
" \"symbol\": symbol,\n",
" \"n_rows\": len(df),\n",
" \"date_range\": (df[\"timestamp\"].min(), df[\"timestamp\"].max()),\n",
" \"max_gap_days\": max_gap_days if len(dates) > 1 else 0,\n",
" \"issues\": issues,\n",
" \"is_valid\": len(issues) == 0,\n",
" }"
]
},
{
"cell_type": "markdown",
"id": "e66b4556",
"metadata": {
"lines_to_next_cell": 2,
"tags": []
},
"source": [
"### Fetch Historical Data from Wiki Prices\n",
"\n",
"Reads adjusted OHLCV from the Wiki Prices parquet, adapting to whichever\n",
"column-naming schema the on-disk file uses (`symbol`/`asset`/`ticker`)."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "847d753e",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-16T02:26:41.659775Z",
"iopub.status.busy": "2026-06-16T02:26:41.659716Z",
"iopub.status.idle": "2026-06-16T02:26:41.662524Z",
"shell.execute_reply": "2026-06-16T02:26:41.662035Z"
},
"lines_to_next_cell": 2,
"tags": []
},
"outputs": [],
"source": [
"def _fetch_wiki_historical(\n",
" wiki_path: Path, symbol: str, start_date: str, end_date: str\n",
") -> pl.DataFrame | None:\n",
" \"\"\"Fetch historical data from Wiki Prices parquet with schema auto-detection.\"\"\"\n",
" schema = set(pl.scan_parquet(wiki_path).collect_schema().names())\n",
" start_dt = datetime.strptime(start_date, \"%Y-%m-%d\").date()\n",
" end_dt = datetime.strptime(end_date, \"%Y-%m-%d\").date()\n",
"\n",
" # Determine entity and time column names from on-disk schema\n",
" if \"symbol\" in schema:\n",
" entity_col, time_col = \"symbol\", \"timestamp\"\n",
" elif \"asset\" in schema:\n",
" entity_col, time_col = \"asset\", \"timestamp\"\n",
" else:\n",
" entity_col, time_col = \"ticker\", \"date\"\n",
"\n",
" df = (\n",
" pl.scan_parquet(wiki_path)\n",
" .filter(\n",
" (pl.col(entity_col) == symbol)\n",
" & (pl.col(time_col) >= pl.lit(start_dt))\n",
" & (pl.col(time_col) <= pl.lit(end_dt))\n",
" )\n",
" .select(\n",
" [\n",
" pl.col(time_col).cast(pl.Datetime(\"us\")).alias(\"timestamp\"),\n",
" pl.col(\"adj_open\").alias(\"open\"),\n",
" pl.col(\"adj_high\").alias(\"high\"),\n",
" pl.col(\"adj_low\").alias(\"low\"),\n",
" pl.col(\"adj_close\").alias(\"close\"),\n",
" pl.col(\"adj_volume\").alias(\"volume\"),\n",
" ]\n",
" )\n",
" .sort(\"timestamp\")\n",
" .collect()\n",
" )\n",
" return df if len(df) > 0 else None"
]
},
{
"cell_type": "markdown",
"id": "21e76d17",
"metadata": {
"lines_to_next_cell": 2,
"tags": []
},
"source": [
"### Process a Single ETF Symbol\n",
"\n",
"Drives one symbol through fetch, combine, validate, and tag. Returns\n",
"a result dict with the data and validation report."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "83982e5d",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-16T02:26:41.663699Z",
"iopub.status.busy": "2026-06-16T02:26:41.663587Z",
"iopub.status.idle": "2026-06-16T02:26:41.667174Z",
"shell.execute_reply": "2026-06-16T02:26:41.666781Z"
},
"lines_to_next_cell": 2,
"tags": []
},
"outputs": [],
"source": [
"def _process_etf_symbol(\n",
" pipeline: \"ETFMomentumPipeline\", symbol: str, start_date: str = \"1990-01-01\"\n",
") -> dict[str, Any]:\n",
" \"\"\"Process a single symbol through the complete pipeline.\"\"\"\n",
" print(f\"\\n{symbol}:\")\n",
"\n",
" # Stage 1: Fetch\n",
" historical = pipeline.fetch_historical(symbol, start_date)\n",
" recent = pipeline.fetch_recent(symbol, \"2018-03-28\")\n",
"\n",
" wiki_rows = len(historical) if historical is not None else 0\n",
" yahoo_rows = len(recent) if recent is not None else 0\n",
" print(f\" Fetched: Wiki={wiki_rows:,}, Yahoo={yahoo_rows:,}\")\n",
"\n",
" # Stage 2: Combine\n",
" try:\n",
" combined = pipeline.combine_sources(historical, recent, symbol)\n",
" except ValueError as e:\n",
" return {\"symbol\": symbol, \"error\": str(e)}\n",
"\n",
" # Stage 3: Validate\n",
" validation = _validate_pipeline_data(combined, symbol)\n",
" if validation[\"issues\"]:\n",
" for issue in validation[\"issues\"]:\n",
" print(f\" [WARN] {issue}\")\n",
" pipeline.stats[\"validation_errors\"] += len(validation[\"issues\"])\n",
" else:\n",
" print(f\" Validated: {len(combined):,} rows, no issues\")\n",
"\n",
" # Stage 4: Add metadata\n",
" combined = combined.with_columns(\n",
" [pl.lit(symbol).alias(\"symbol\"), pl.lit(datetime.now()).alias(\"processed_at\")]\n",
" )\n",
"\n",
" pipeline.stats[\"symbols_processed\"] += 1\n",
" pipeline.stats[\"total_rows\"] += len(combined)\n",
"\n",
" return {\"symbol\": symbol, \"data\": combined, \"validation\": validation}"
]
},
{
"cell_type": "markdown",
"id": "f31828da",
"metadata": {
"lines_to_next_cell": 2,
"tags": []
},
"source": [
"### Run ETF Pipeline\n",
"\n",
"Iterates over the symbol universe, processing each through fetch/combine/validate,\n",
"then prints a summary of processed symbols, total rows, and validation issues."
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "5bca65fd",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-16T02:26:41.668284Z",
"iopub.status.busy": "2026-06-16T02:26:41.668225Z",
"iopub.status.idle": "2026-06-16T02:26:41.670650Z",
"shell.execute_reply": "2026-06-16T02:26:41.670231Z"
},
"lines_to_next_cell": 2,
"tags": []
},
"outputs": [],
"source": [
"def _run_etf_pipeline(\n",
" pipeline: \"ETFMomentumPipeline\", symbols: list[str] | None = None\n",
") -> dict[str, Any]:\n",
" \"\"\"Run the complete ETF pipeline for all symbols.\"\"\"\n",
" symbols = symbols or pipeline.UNIVERSE\n",
" print(\"=\" * 60)\n",
" print(\"ETF Momentum Pipeline\")\n",
" print(\"=\" * 60)\n",
" print(f\"Universe: {symbols}\")\n",
"\n",
" results = {}\n",
" for symbol in symbols:\n",
" results[symbol] = pipeline.process_symbol(symbol)\n",
"\n",
" print(\"\\n\" + \"-\" * 60)\n",
" print(\n",
" f\"Summary: {pipeline.stats['symbols_processed']} symbols, \"\n",
" f\"{pipeline.stats['total_rows']:,} rows, \"\n",
" f\"{pipeline.stats['validation_errors']} issues\"\n",
" )\n",
" return results"
]
},
{
"cell_type": "markdown",
"id": "9f46501b",
"metadata": {
"lines_to_next_cell": 2,
"tags": []
},
"source": [
"### ETF Momentum Pipeline\n",
"\n",
"Orchestrates multi-source fetch (Wiki Prices + Yahoo Finance),\n",
"data combination, validation, and metadata tagging for each symbol."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "ccc7af91",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-16T02:26:41.671723Z",
"iopub.status.busy": "2026-06-16T02:26:41.671606Z",
"iopub.status.idle": "2026-06-16T02:26:41.676420Z",
"shell.execute_reply": "2026-06-16T02:26:41.675993Z"
},
"tags": []
},
"outputs": [],
"source": [
"class ETFMomentumPipeline:\n",
" \"\"\"Equity pipeline: combines WikiPrices (1962-2018) with Yahoo Finance (2018-present).\n",
"\n",
" Demo universe uses individual stocks because WikiPrices does not include\n",
" index ETFs. The book's ETF rotation case study uses Yahoo-only data from\n",
" 2008 onwards (see `case_studies/etfs/`).\n",
" \"\"\"\n",
"\n",
" UNIVERSE = [\"AAPL\", \"MSFT\", \"JPM\"]\n",
" WIKI_END_DATE = \"2018-03-27\"\n",
" END_DATE = AS_OF_DATE\n",
"\n",
" def __init__(self, wiki_path: Path | None = None, storage_path: Path | None = None):\n",
" \"\"\"Initialize pipeline with data sources.\"\"\"\n",
" from utils import ML4T_DATA_PATH\n",
"\n",
" self.wiki_path = (\n",
" wiki_path\n",
" or ML4T_DATA_PATH / \"equities\" / \"market\" / \"us_equities\" / \"us_equities.parquet\"\n",
" )\n",
" self.storage_path = storage_path or get_output_dir(2, \"etf_pipeline\")\n",
" self.yahoo_provider = YahooFinanceProvider()\n",
" self.stats = {\"symbols_processed\": 0, \"total_rows\": 0, \"validation_errors\": 0}\n",
"\n",
" def fetch_historical(self, symbol: str, start_date: str) -> pl.DataFrame | None:\n",
" \"\"\"Fetch data from Wiki Prices (pre-2018).\"\"\"\n",
" if not self.wiki_path.exists():\n",
" raise FileNotFoundError(f\"Wiki Prices parquet not found at {self.wiki_path}\")\n",
" return _fetch_wiki_historical(self.wiki_path, symbol, start_date, self.WIKI_END_DATE)\n",
"\n",
" def fetch_recent(self, symbol: str, start_date: str) -> pl.DataFrame | None:\n",
" \"\"\"Fetch data from Yahoo Finance (2018-present).\"\"\"\n",
" df = self.yahoo_provider.fetch_ohlcv(\n",
" symbol=symbol, start=start_date, end=self.END_DATE, frequency=\"1d\"\n",
" )\n",
" return df if len(df) > 0 else None\n",
"\n",
" def combine_sources(\n",
" self, historical: pl.DataFrame | None, recent: pl.DataFrame | None, symbol: str\n",
" ) -> pl.DataFrame:\n",
" \"\"\"Combine Wiki Prices and Yahoo Finance data.\"\"\"\n",
" return _combine_pipeline_sources(historical, recent, symbol, self.WIKI_END_DATE)\n",
"\n",
" def process_symbol(self, symbol: str, start_date: str = \"1990-01-01\") -> dict[str, Any]:\n",
" \"\"\"Process a single symbol through the complete pipeline.\"\"\"\n",
" return _process_etf_symbol(self, symbol, start_date)\n",
"\n",
" def run(self, symbols: list[str] | None = None) -> dict[str, Any]:\n",
" \"\"\"Run the complete pipeline for all symbols.\"\"\"\n",
" return _run_etf_pipeline(self, symbols)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "bf5510be",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-16T02:26:41.677414Z",
"iopub.status.busy": "2026-06-16T02:26:41.677273Z",
"iopub.status.idle": "2026-06-16T02:26:42.594349Z",
"shell.execute_reply": "2026-06-16T02:26:42.593162Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:41\u001b[0m [\u001b[32m\u001b[1mdebug \u001b[0m] \u001b[1mRate limiter initialized \u001b[0m \u001b[36mmax_calls\u001b[0m=\u001b[35m60\u001b[0m \u001b[36mperiod\u001b[0m=\u001b[35m60.0\u001b[0m \u001b[36mprovider\u001b[0m=\u001b[35myahoo\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:41\u001b[0m [\u001b[32m\u001b[1mdebug \u001b[0m] \u001b[1mHTTP session initialized \u001b[0m \u001b[36mmax_connections\u001b[0m=\u001b[35m10\u001b[0m \u001b[36mtimeout\u001b[0m=\u001b[35m30.0\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"============================================================\n",
"ETF Momentum Pipeline\n",
"============================================================\n",
"Universe: ['AAPL', 'MSFT', 'JPM']\n",
"\n",
"AAPL:\n",
"\u001b[2m2026-06-15 22:26:41\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetching OHLCV data \u001b[0m \u001b[36mend\u001b[0m=\u001b[35m2025-01-15\u001b[0m \u001b[36mfrequency\u001b[0m=\u001b[35m1d\u001b[0m \u001b[36mname\u001b[0m=\u001b[35mYahooFinanceProvider\u001b[0m \u001b[36mprovider\u001b[0m=\u001b[35myahoo\u001b[0m \u001b[36mstart\u001b[0m=\u001b[35m2018-03-28\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mAAPL\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:41\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetching data from Yahoo Finance\u001b[0m \u001b[36mend\u001b[0m=\u001b[35m2025-01-16\u001b[0m \u001b[36minterval\u001b[0m=\u001b[35m1d\u001b[0m \u001b[36mstart\u001b[0m=\u001b[35m2018-03-28\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mAAPL\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:42\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSuccessfully fetched data \u001b[0m \u001b[36mrows\u001b[0m=\u001b[35m1711\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mAAPL\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:42\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSuccessfully fetched OHLCV data\u001b[0m \u001b[36mname\u001b[0m=\u001b[35mYahooFinanceProvider\u001b[0m \u001b[36mprovider\u001b[0m=\u001b[35myahoo\u001b[0m \u001b[36mrows\u001b[0m=\u001b[35m1711\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mAAPL\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Fetched: Wiki=7,113, Yahoo=1,711\n",
" [WARN] Date gap of 7 days\n",
"\n",
"MSFT:\n",
"\u001b[2m2026-06-15 22:26:42\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetching OHLCV data \u001b[0m \u001b[36mend\u001b[0m=\u001b[35m2025-01-15\u001b[0m \u001b[36mfrequency\u001b[0m=\u001b[35m1d\u001b[0m \u001b[36mname\u001b[0m=\u001b[35mYahooFinanceProvider\u001b[0m \u001b[36mprovider\u001b[0m=\u001b[35myahoo\u001b[0m \u001b[36mstart\u001b[0m=\u001b[35m2018-03-28\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mMSFT\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:42\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetching data from Yahoo Finance\u001b[0m \u001b[36mend\u001b[0m=\u001b[35m2025-01-16\u001b[0m \u001b[36minterval\u001b[0m=\u001b[35m1d\u001b[0m \u001b[36mstart\u001b[0m=\u001b[35m2018-03-28\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mMSFT\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:42\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSuccessfully fetched data \u001b[0m \u001b[36mrows\u001b[0m=\u001b[35m1711\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mMSFT\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:42\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSuccessfully fetched OHLCV data\u001b[0m \u001b[36mname\u001b[0m=\u001b[35mYahooFinanceProvider\u001b[0m \u001b[36mprovider\u001b[0m=\u001b[35myahoo\u001b[0m \u001b[36mrows\u001b[0m=\u001b[35m1711\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mMSFT\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Fetched: Wiki=7,114, Yahoo=1,711\n",
" [WARN] Date gap of 7 days\n",
"\n",
"JPM:\n",
"\u001b[2m2026-06-15 22:26:42\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetching OHLCV data \u001b[0m \u001b[36mend\u001b[0m=\u001b[35m2025-01-15\u001b[0m \u001b[36mfrequency\u001b[0m=\u001b[35m1d\u001b[0m \u001b[36mname\u001b[0m=\u001b[35mYahooFinanceProvider\u001b[0m \u001b[36mprovider\u001b[0m=\u001b[35myahoo\u001b[0m \u001b[36mstart\u001b[0m=\u001b[35m2018-03-28\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mJPM\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:42\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetching data from Yahoo Finance\u001b[0m \u001b[36mend\u001b[0m=\u001b[35m2025-01-16\u001b[0m \u001b[36minterval\u001b[0m=\u001b[35m1d\u001b[0m \u001b[36mstart\u001b[0m=\u001b[35m2018-03-28\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mJPM\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:42\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSuccessfully fetched data \u001b[0m \u001b[36mrows\u001b[0m=\u001b[35m1711\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mJPM\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:42\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSuccessfully fetched OHLCV data\u001b[0m \u001b[36mname\u001b[0m=\u001b[35mYahooFinanceProvider\u001b[0m \u001b[36mprovider\u001b[0m=\u001b[35myahoo\u001b[0m \u001b[36mrows\u001b[0m=\u001b[35m1711\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mJPM\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Fetched: Wiki=7,114, Yahoo=1,711\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" [WARN] Date gap of 7 days\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"------------------------------------------------------------\n",
"Summary: 3 symbols, 26,474 rows, 3 issues\n"
]
}
],
"source": [
"# Run the equity pipeline on the demo universe\n",
"etf_pipeline = ETFMomentumPipeline()\n",
"etf_results = etf_pipeline.run()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "5681d6e0",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-16T02:26:42.596621Z",
"iopub.status.busy": "2026-06-16T02:26:42.596457Z",
"iopub.status.idle": "2026-06-16T02:26:43.062038Z",
"shell.execute_reply": "2026-06-16T02:26:43.061428Z"
},
"tags": []
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABv0AAAHqCAYAAAAnJIIoAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3XdcE+cfB/BPCHsr2wlucVFRUURR66h7zzpQq7bFtra1/WlbV4e2tY5WcddVcdRZbd27Uqs4cBS34EZQZO/kfn+cSQgJECAQxuf9euV1d889d/ckpObbe577PhJBEAQQERERERERERERERERUZllZOgGEBEREREREREREREREVHRsNOPiIiIiIiIiIiIiIiIqIxjpx8RERERERERERERERFRGcdOPyIiIiIiIiIiIiIiIqIyjp1+RERERERERERERERERGUcO/2IiIiIiIiIiIiIiIiIyjh2+hERERERERERERERERGVcez0IyIiIiIiIiIiIiIiIirj2OlHREREREREREREREREVMax04+INMyePRsSiURv51u/fj0kEgkuXLigt3PmJiAgAO7u7iV+ncjISEgkEvz00095Hnfy5ElIJBKcPHlSr+1xd3dHQECAXs9ZXrm7u6NXr16GbgYREZVD+o5DFDHZixcv9HbO3HTo0AEdOnQo8esoYqMdO3bkeZwinoyMjNRreyQSCWbPnq3Xc5ZXEokEkydPNnQziIioDNJ3nBEQEABra2u9nS8vJXW/Jed1dL2Xpu97eIDqHtf69ev1et7ySNf7gUQliZ1+RNksW7YMEokEPj4+OtX//PPPIZFIMHToUK37Ff/wK15SqRQ1atRA//79ERYWpla3pP8nOiUlBbNnz9a582nu3LnYs2dPsbappPTo0QOVKlWCIAhq5ZcvX4ZEIkHNmjU1jjl+/DgkEglWrVql9/YEBASofU9sbW3RrFkzLFiwAOnp6Xq/XlkTEREBS0tLDB8+XOv+bdu2QSKRICgoqIRbRkRUsSluREgkEpw5c0ZjvyAIqF69OiQSicZgi6SkJMyaNQuNGzeGlZUVHBwc4OXlhY8++ghPnz5V1lPcxND2WrFiBdzd3XPdn/2lzxsWT58+xezZszViOW0KGm+Vdp6enmjWrJlG+e7duyGRSODv76+xb+3atZBIJDh8+LDe29OhQwe1v3PlypXRsmVL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06fj2bNnWLx4MQCxA3n48OF48803lX+rGzduICQkpETjA0UKz//9739488038dFHH8HX1xeTJk0CAPz888/o06cP3n77bWRkZGDr1q0YPHgw/vzzT40Y9syZM9i1axfef/992NjY4JdffsHAgQPx8OFDZcz633//oV27drC1tcXnn38OExMTrFy5Eh06dMCpU6eU86frGmsREZG63O4pFTQmA4Dp06djw4YNiIiIyHNgc36/ae3bt8eHH36IX375BV988YUyS5JimV1+8dSRI0fQq1cvuLm54aOPPoKrqytu3LiBP//8U+33UyaToVu3bvDx8cFPP/2Eo0ePYsGCBahdu7ba9B+TJk3C+vXrMXbsWHz44YeIiIjA0qVLcfnyZYSEhCifrps5cya+/fZb9OjRAz169MClS5fQtWtXjQHt2rRu3RrGxsY4c+YM3nnnHQBQPlnXsmVLtGjRAiEhIRg4cKByH1CwGOnFixfo0qULYmNjcerUKeV9OV1lZmbi0aNHGt+bdevWIS0tDRMnToSZmRkqV66sdTobXWLX58+fo3Xr1soBV05OTjhw4ADGjx+PhIQETJkyBYCYEv/DDz/EoEGD8NFHHyEtLQ1Xr17FuXPncu2gLg4ff/wxgoOD8d577+HgwYOYOXMmhg0bhrfeegsvXrzAmjVrMHz4cEyYMAGJiYn49ddf0a1bN5w/f14jLe3mzZuRmJiISZMmQSKR4Mcff8SAAQNw//595Xfs6NGj6N69O2rVqoXZs2cjNTUVS5YsQdu2bXHp0iXlf4O6xlJEuRKISLhw4YIAQDhy5IggCIIgl8uFatWqCR999JHW+jt27BAACHfu3BEEQRASEhIEc3NzYdGiRWr1IiIiBADCnDlzhJiYGCEqKko4efKk8MYbbwgAhJ07dyrrAhACAwPzbOe6desEAMK6devyrLd7924BgBAaGpprnZiYGAGAMGvWLI19s2bNEnL+82BlZSWMGTNGo+7o0aMFIyMjrdeSy+Vq7e7cubOyTBAE4eOPPxakUqkQFxcnCIIgJCYmCvb29sKECRPUzhMVFSXY2dmplXt5eQlubm7KYwVBEA4fPiwAEGrWrJnr+1b47LPPBADC48ePBUEQhC1btgjm5uZCenq6sH//fkEqlQoJCQmCIAjC0qVLBQBCSEiI8vgxY8aoXUfxt54/f76QmZkpDB06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6NChmD17dqnp0OrUqRN+/fVXfP/995gyZQo8PDzwww8/IDIystCdfo0aNcLff/+N6dOnY968eZDL5fDx8cGmTZvUBkbqGmsREVUU2Z+YKm10+U1zdXXFihUrMG/ePIwfPx4ymQwnTpzQ2umXVzzVrVs3nDhxAnPmzMGCBQsgl8tRu3ZtTJgwoVBtX7FiBby9vbFy5Up88cUXMDY2hru7O0aOHKmWTvvbb7+Fubk5VqxYoey4Onz4cIF+k7LHPjljpEaNGsHe3h5xcXGFjpFWrFiBpKQkjB07FjY2Nujbt2+hzlMYusSuLi4uOH/+PL7++mvs2rULy5Ytg4ODAxo1aoQffvhBWW/SpEkIDg7GwoULkZSUhGrVquHDDz/EV199VWLvJz8BAQGIiorCypUrcejQIXh6emLTpk3Yvn27zvcdc+rcuTMOHjyIWbNmYebMmTAxMYG/vz9++OEHtf+X0DWWIsqNROBskkREREREREREREQG88svv+Cjjz7C3bt3lXPbERERFVTpGF5IREREREREREREVEGFhobCysoKNWvWNHRTiIioDGN6TyIiIiIiIiIiIiID2LlzJ06ePIng4GC88847MDbm7VoiIio8pvckIiIiIiIiIiIiMgAPDw8kJiaif//+WLx4MaysrAzdJCIiKsPY6UdERERERERERERERERUxnFOPyIiIiIiIiIiIiIiIqIyjp1+RERERERERERERERERGUcZ4bNg1wux9OnT2FjYwOJRGLo5hAREVEpIwgCEhMTUaVKFRgZcSyVAmMoIiIiygtjKE2Mn4iIiCgvusZP7PTLw9OnT1G9enVDN4OIiIhKuUePHqFatWqGbkapwRiKiIiIdMEYSoXxExEREekiv/iJnX55sLGxASB+iLa2tgZuDRERlXkZGcCCBeL6p58CpqaGbQ8VWUJCAqpXr66MGUjEGIqIiPSKMVS5wxhKE+MnIiLSK8ZP5Y6u8RM7/fKgSKdga2vLgIuIiIouIwMwMxPXbW0ZcJUjTMGkjjEUERHpFWOocosxlArjJyIi0ivGT+VWfvETE6cTERERERERERERERERlXHs9CMiIiIiIiIiIiIiIiIq49jpR0RERER6ERQUBE9PT7Rs2dLQTSEiIiIqExg/ERERkT5xTj89kMlkyMzMNHQziJRMTEwglUoN3QwiIqpgAgMDERgYiISE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",
"text/plain": [
"<Figure size 1800x500 with 3 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Visualize the stitched data — one panel per symbol\n",
"fig, axes = plt.subplots(1, 3, figsize=(18, 5))\n",
"for ax, (symbol, result) in zip(axes, etf_results.items(), strict=True):\n",
" df = result[\"data\"]\n",
" for source, color in [(\"wiki\", \"#1f77b4\"), (\"yahoo\", \"#ff7f0e\")]:\n",
" src = df.filter(pl.col(\"source\") == source)\n",
" label = \"Wiki Prices\" if source == \"wiki\" else \"Yahoo Finance\"\n",
" if len(src) > 0:\n",
" ax.plot(\n",
" src[\"timestamp\"].to_list(),\n",
" src[\"close\"].to_list(),\n",
" label=label,\n",
" alpha=0.8,\n",
" linewidth=1,\n",
" color=color,\n",
" )\n",
" ax.axvline(\n",
" datetime(2018, 3, 27), color=\"red\", linestyle=\"--\", alpha=0.5, label=\"Source transition\"\n",
" )\n",
" ax.set_title(f\"{symbol}: stitched WikiPrices + Yahoo\")\n",
" ax.set_xlabel(\"Date\")\n",
" ax.set_ylabel(\"Close ($)\")\n",
" ax.legend(loc=\"upper left\")\n",
" ax.set_yscale(\"log\")\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "3964d499",
"metadata": {
"lines_to_next_cell": 2,
"tags": []
},
"source": [
"---\n",
"\n",
"## 3. Case Study 2: Crypto Funding Rate Pipeline\n",
"\n",
"### Requirements\n",
"\n",
"- **Universe**: BTCUSDT, ETHUSDT (perpetual futures)\n",
"- **History**: 2020-present\n",
"- **Frequency**: Hourly OHLCV\n",
"- **Coverage**: 24/7 (no market hours)"
]
},
{
"cell_type": "markdown",
"id": "3ba83c06",
"metadata": {
"lines_to_next_cell": 2,
"tags": []
},
"source": [
"### Validate 24/7 Coverage\n",
"\n",
"Crypto markets run continuously, so we check for hourly gaps rather than\n",
"the weekday/holiday gaps expected in equity data."
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "dbaf5130",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-16T02:26:43.063351Z",
"iopub.status.busy": "2026-06-16T02:26:43.063276Z",
"iopub.status.idle": "2026-06-16T02:26:43.066237Z",
"shell.execute_reply": "2026-06-16T02:26:43.065805Z"
},
"lines_to_next_cell": 2,
"tags": []
},
"outputs": [],
"source": [
"def _validate_crypto_coverage(df: pl.DataFrame, symbol: str) -> dict[str, Any]:\n",
" \"\"\"Validate 24/7 coverage for crypto data.\"\"\"\n",
" issues = []\n",
" df = df.sort(\"timestamp\")\n",
"\n",
" timestamps = df[\"timestamp\"].to_list()\n",
" expected_hours = len(timestamps) - 1 if len(timestamps) > 1 else 0\n",
" missing_hours = 0\n",
"\n",
" for i in range(1, len(timestamps)):\n",
" gap_hours = (timestamps[i] - timestamps[i - 1]).total_seconds() / 3600\n",
" if gap_hours > 1.5:\n",
" missing_hours += int(gap_hours) - 1\n",
"\n",
" coverage_pct = (\n",
" (expected_hours - missing_hours) / expected_hours * 100 if expected_hours > 0 else 0\n",
" )\n",
"\n",
" if coverage_pct < 99.0:\n",
" issues.append(f\"Coverage {coverage_pct:.1f}% ({missing_hours} hours missing)\")\n",
"\n",
" if df[\"timestamp\"].n_unique() != len(df):\n",
" issues.append(f\"Duplicate timestamps: {len(df) - df['timestamp'].n_unique()}\")\n",
"\n",
" return {\n",
" \"symbol\": symbol,\n",
" \"n_rows\": len(df),\n",
" \"hours_coverage\": expected_hours,\n",
" \"missing_hours\": missing_hours,\n",
" \"coverage_pct\": coverage_pct,\n",
" \"issues\": issues,\n",
" \"is_valid\": len(issues) == 0,\n",
" }"
]
},
{
"cell_type": "markdown",
"id": "1a0245db",
"metadata": {
"lines_to_next_cell": 2,
"tags": []
},
"source": [
"### Add Session Features\n",
"\n",
"Derive time-of-day and day-of-week columns used downstream for\n",
"funding-window analysis and weekend/weekday volume comparisons."
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "32a9448b",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-16T02:26:43.067046Z",
"iopub.status.busy": "2026-06-16T02:26:43.066983Z",
"iopub.status.idle": "2026-06-16T02:26:43.068886Z",
"shell.execute_reply": "2026-06-16T02:26:43.068602Z"
},
"lines_to_next_cell": 2,
"tags": []
},
"outputs": [],
"source": [
"def _add_crypto_session_features(df: pl.DataFrame) -> pl.DataFrame:\n",
" \"\"\"Add time-based features for crypto data.\"\"\"\n",
" return df.with_columns(\n",
" [\n",
" pl.col(\"timestamp\").dt.hour().alias(\"hour_utc\"),\n",
" pl.col(\"timestamp\").dt.weekday().alias(\"day_of_week\"),\n",
" (pl.col(\"timestamp\").dt.hour() // 8 * 8).alias(\"funding_window\"),\n",
" pl.col(\"timestamp\").dt.date().alias(\"session_date\"),\n",
" (pl.col(\"timestamp\").dt.weekday() >= 5).alias(\"is_weekend\"),\n",
" ]\n",
" )"
]
},
{
"cell_type": "markdown",
"id": "594e159f",
"metadata": {
"lines_to_next_cell": 2,
"tags": []
},
"source": [
"### Process a Single Crypto Symbol\n",
"\n",
"Drives one symbol through fetch, coverage validation, feature enrichment,\n",
"and source tagging. Returns a result dict with data and validation report."
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "d9c1f4d9",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-16T02:26:43.069723Z",
"iopub.status.busy": "2026-06-16T02:26:43.069661Z",
"iopub.status.idle": "2026-06-16T02:26:43.072100Z",
"shell.execute_reply": "2026-06-16T02:26:43.071792Z"
},
"lines_to_next_cell": 2,
"tags": []
},
"outputs": [],
"source": [
"def _process_crypto_symbol(\n",
" pipeline: \"CryptoFundingRatePipeline\", symbol: str, start_date: str = \"2020-01-01\"\n",
") -> dict[str, Any]:\n",
" \"\"\"Process a single crypto symbol through the pipeline.\"\"\"\n",
" print(f\"\\n{symbol}:\")\n",
"\n",
" df = pipeline.fetch_ohlcv(symbol, start_date)\n",
" validation = _validate_crypto_coverage(df, symbol)\n",
" print(f\" Rows: {len(df):,}, Coverage: {validation['coverage_pct']:.1f}%\")\n",
"\n",
" if validation[\"issues\"]:\n",
" for issue in validation[\"issues\"]:\n",
" print(f\" [WARN] {issue}\")\n",
"\n",
" df = _add_crypto_session_features(df)\n",
" df = df.with_columns([pl.lit(symbol).alias(\"symbol\"), pl.lit(\"local\").alias(\"source\")])\n",
"\n",
" pipeline.stats[\"symbols_processed\"] += 1\n",
" pipeline.stats[\"total_rows\"] += len(df)\n",
" pipeline.stats[\"hours_of_data\"] += validation[\"hours_coverage\"]\n",
"\n",
" return {\"symbol\": symbol, \"data\": df, \"validation\": validation}"
]
},
{
"cell_type": "markdown",
"id": "26a70cf7",
"metadata": {
"lines_to_next_cell": 2,
"tags": []
},
"source": [
"### Fetch Crypto OHLCV\n",
"\n",
"Filters the pre-loaded hourly crypto DataFrame for a single symbol\n",
"starting from the requested date."
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "afd28662",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-16T02:26:43.072904Z",
"iopub.status.busy": "2026-06-16T02:26:43.072806Z",
"iopub.status.idle": "2026-06-16T02:26:43.074724Z",
"shell.execute_reply": "2026-06-16T02:26:43.074487Z"
},
"lines_to_next_cell": 2,
"tags": []
},
"outputs": [],
"source": [
"def _fetch_crypto_ohlcv(crypto_data: pl.DataFrame, symbol: str, start_date: str) -> pl.DataFrame:\n",
" \"\"\"Filter the hourly crypto panel for one symbol from `start_date`.\"\"\"\n",
" start_dt = datetime.strptime(start_date, \"%Y-%m-%d\")\n",
" df = crypto_data.filter(\n",
" (pl.col(\"symbol\") == symbol) & (pl.col(\"timestamp\").dt.date() >= start_dt.date())\n",
" ).drop(\"symbol\")\n",
" if df.is_empty():\n",
" raise RuntimeError(f\"No crypto data for {symbol} from {start_date}\")\n",
" return df"
]
},
{
"cell_type": "markdown",
"id": "98e650b8",
"metadata": {
"lines_to_next_cell": 2,
"tags": []
},
"source": [
"### Run Crypto Pipeline\n",
"\n",
"Iterates over the crypto symbol universe, processing each through fetch,\n",
"validation, and feature enrichment, then prints a summary."
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "228850d1",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-16T02:26:43.075654Z",
"iopub.status.busy": "2026-06-16T02:26:43.075594Z",
"iopub.status.idle": "2026-06-16T02:26:43.077665Z",
"shell.execute_reply": "2026-06-16T02:26:43.077410Z"
},
"lines_to_next_cell": 2,
"tags": []
},
"outputs": [],
"source": [
"def _run_crypto_pipeline(\n",
" pipeline: \"CryptoFundingRatePipeline\",\n",
" symbols: list[str] | None = None,\n",
" start_date: str = \"2023-01-01\",\n",
") -> dict:\n",
" \"\"\"Run the complete crypto pipeline for all symbols.\"\"\"\n",
" symbols = symbols or pipeline.UNIVERSE\n",
" print(\"=\" * 60)\n",
" print(\"Crypto Funding Rate Pipeline\")\n",
" print(\"=\" * 60)\n",
" print(f\"Universe: {symbols}\")\n",
"\n",
" results = {}\n",
" for symbol in symbols:\n",
" results[symbol] = pipeline.process_symbol(symbol, start_date)\n",
"\n",
" print(\"\\n\" + \"-\" * 60)\n",
" print(\n",
" f\"Summary: {pipeline.stats['symbols_processed']} symbols, \"\n",
" f\"{pipeline.stats['total_rows']:,} rows\"\n",
" )\n",
" return results"
]
},
{
"cell_type": "markdown",
"id": "63588f23",
"metadata": {
"lines_to_next_cell": 2,
"tags": []
},
"source": [
"### Crypto Funding Rate Pipeline\n",
"\n",
"Orchestrates fetch, validation, and feature enrichment for hourly crypto\n",
"perpetual-futures data loaded from local parquet storage."
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "58bf0502",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-16T02:26:43.078321Z",
"iopub.status.busy": "2026-06-16T02:26:43.078263Z",
"iopub.status.idle": "2026-06-16T02:26:43.080777Z",
"shell.execute_reply": "2026-06-16T02:26:43.080485Z"
},
"tags": []
},
"outputs": [],
"source": [
"class CryptoFundingRatePipeline:\n",
" \"\"\"\n",
" Data pipeline for Crypto Funding Rate strategy.\n",
"\n",
" Uses pre-downloaded hourly crypto data from local storage.\n",
" \"\"\"\n",
"\n",
" UNIVERSE = [\"BTCUSDT\", \"ETHUSDT\", \"SOLUSDT\", \"BNBUSDT\"]\n",
" END_DATE = AS_OF_DATE\n",
"\n",
" def __init__(self, storage_path: Path | None = None):\n",
" \"\"\"Initialize pipeline.\"\"\"\n",
" self.storage_path = storage_path or get_output_dir(2, \"crypto_pipeline\")\n",
" self.crypto_data = load_crypto_perps(frequency=\"1h\")\n",
" print(f\"Loaded {len(self.crypto_data):,} crypto records\")\n",
" self.stats = {\"symbols_processed\": 0, \"total_rows\": 0, \"hours_of_data\": 0}\n",
"\n",
" def fetch_ohlcv(self, symbol: str, start_date: str) -> pl.DataFrame | None:\n",
" \"\"\"Fetch OHLCV data from local parquet.\"\"\"\n",
" return _fetch_crypto_ohlcv(self.crypto_data, symbol, start_date)\n",
"\n",
" def process_symbol(self, symbol: str, start_date: str = \"2020-01-01\") -> dict[str, Any]:\n",
" \"\"\"Process a single crypto symbol.\"\"\"\n",
" return _process_crypto_symbol(self, symbol, start_date)\n",
"\n",
" def run(self, symbols: list[str] | None = None, start_date: str = \"2023-01-01\") -> dict:\n",
" \"\"\"Run the complete pipeline.\"\"\"\n",
" return _run_crypto_pipeline(self, symbols, start_date)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "dce80133",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-16T02:26:43.081403Z",
"iopub.status.busy": "2026-06-16T02:26:43.081344Z",
"iopub.status.idle": "2026-06-16T02:26:43.124122Z",
"shell.execute_reply": "2026-06-16T02:26:43.123787Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Loaded 866,484 crypto records\n",
"============================================================\n",
"Crypto Funding Rate Pipeline\n",
"============================================================\n",
"Universe: ['BTCUSDT', 'ETHUSDT']\n",
"\n",
"BTCUSDT:\n",
" Rows: 17,544, Coverage: 100.0%\n",
"\n",
"ETHUSDT:\n",
" Rows: 17,544, Coverage: 100.0%\n",
"\n",
"------------------------------------------------------------\n",
"Summary: 2 symbols, 35,088 rows\n"
]
}
],
"source": [
"# Run the crypto pipeline\n",
"crypto_pipeline = CryptoFundingRatePipeline()\n",
"crypto_results = crypto_pipeline.run(symbols=[\"BTCUSDT\", \"ETHUSDT\"], start_date=\"2024-01-01\")"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "57e557ad",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-16T02:26:43.125082Z",
"iopub.status.busy": "2026-06-16T02:26:43.125012Z",
"iopub.status.idle": "2026-06-16T02:26:43.296434Z",
"shell.execute_reply": "2026-06-16T02:26:43.296083Z"
},
"tags": []
},
"outputs": [
{
"data": {
"image/png": "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1/DPP//g0qVLOHjwIB5//HGkpaWVOFvht99+Q0pKCoYNG1YuqYx16tQBAHz66adOH5BLQ613XdI0wW7duqFbt26l2uby5cuRkZGBxx9/HPPmzUOPHj0wb948l7tkBg4ciG+++QajR4/Ge++9hwkTJuD69es4ffo0AODtt99GzZo10bhxYyxevBiLFy92q2SWzWbDP//8g3PnzmH16tV44YUXEBQU5BRo2r17N26++WaXIJE6Zs+ePUVu43//+x8ee+wxREdHY9asWWjfvj369u3r8saampqKDz74AF26dMEbb7yBadOm4dKlS+jRo4e2DUmS8OCDD+Lnn392OXH9/vvvkZqaqh2j77//PiZMmICmTZvi7bffxvTp09GqVSts3bq12P1CRFSQ4cOHw2az4YsvvnBanpKSglWrVuG+++6Dn58fLly4gHbt2mHVqlX497//jVdffRVZWVno27dviT4EuSMxMRHvvfcexo8fj6effhq//vorBg8ejBdeeAErV67E5MmTkZCQgO+//17LulMtXrwYffr0QWBgIN544w28+OKLOHToEDp06OBysb0w48aNw+HDhzFt2jSMGDECiYmJ6N+/v/ae/NBDD+Hy5ctYtWqV0/OSk5Oxdu1at84rrly5gp49e+KWW27BW2+9hcaNG2Py5MlOvb8yMzPRpUsXLF68GMOHD8fs2bMREhKCUaNGYe7cuW69loLYbDb06NEDkZGRePPNNzFw4MBCx6oZjHkvbKulLSMiItCqVSvtPbp69eolnou7+6Fbt25YtWoVxo0bh+effx4bN27EM8884/Z2li5ditmzZ+Oxxx7DK6+8gpMnT2LAgAFOF21+/PFHPPDAAzAYDJg5cyYGDBiAMWPGYOfOncWuv2PHjkhJSXG6sLRx40bIsuz0gVr9vlOnTkWuz263o0ePHqhWrRrefPNNdO7cGW+99RYWLVqkjRFCoF+/fli8eDEefPBBvPLKK/j7778xcuRIl/X98ssv6NGjBy5evIhp06bhqaeewubNm9G+fXvt/0Xz5s0RGhqKDRs2uLyGvXv3IjU1FQCgKAo2b96svYaLFy+ie/fuOHnyJJ599lnMmzcPw4cPx++//17sfivM66+/jm+++Qb/+c9/MGXKFPz+++8luqN60KBByMjIwGuvvYZHH30UAPDqq69ixIgRaNiwIebMmYOJEydi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X/m999674TnExcUBcNQtdof6QT7vXPK/35ZU7969ce7cOXz55ZfasoyMjBtaZ34xMTFo3rw5Pv30U6ebXX799Vfs37/frXXUq1cPN910E/773//CarWiffv2ABxBgb/++gtffvkl7rzzzjK7o7Z3796w2WxYsGCBtsxut2PevHlO42rUqIFWrVrhk08+cTpPOXDgAFavXu1yIatjx47YunUr1q1bp13kiYiIQJMmTfDGG29oY1RXrlxxORdWbxC5kXJUZWnAgAHQ6XSYPn26y1yFENr5VUnO8VQ7d+5Es2bNCq3fTUTegec5ucrzPMeTn5ULExcXV+h5TMeOHbF27Vps27ZNe29r1aoVgoKC8Prrr8PPz8/phgR3309at26N2NhYvPnmmwXeRFvQ70qSJCxatAj3338/Ro4cie+++057bPDgwdiyZQtWrVrl8ryrV69qN+y6K++5Qd4bQJOSksq0n0xZ4Ht45cOMDaJS+vnnn7U7Li5evIilS5fi6NGjePbZZ11qGBZn0qRJOHjwIN566y2sW7cO999/P6Kjo5GcnIwVK1Zg27Zt2Lx5MwDHxec333wTI0eOxO23344HHngA1apVw+7du/Hhhx+iZcuWTg0wk5KS8NJLL6Fv37648847ERgYiOPHj+PDDz9EdnY2pk2b5jKfL7/8EoGBgVpzsVWrVmHTpk245ZZbsHz58hLvKzUQUtIG4o0bN0ZsbCz+85//4OzZswgODsZXX33lkvr5559/olu3bhg8eDCaNm0KvV6Pb775BhcuXHA6QWndujUWLFiAV155BQ0aNEBkZKRT9D2v9evXY8KECbj//vvRsGFDWCwWbNy4EV9//TXatGnjdCLWtm1bDBo0CFOmTMHFixfRoEEDfPLJJ1o/k6IYDAa88soreOyxx3DXXXfhgQcewIkTJ/DRRx+51G6855578PXXX+O+++5Dnz59cOLECSxcuBBNmzYt8ASnT58+qFatGpYvX45evXohMjLS6fHu3bsjOjoa7du3R1RUFA4fPoz58+ejT58+FdpHhYgqn3r16qFdu3b49ttvAcDlA/+zzz6Lzz77DL169cKECRMQHh6OTz75BCdOnMBXX31VZGmjhx9+GHPmzEGPHj0wZswYXLx4EQsXLkSzZs2QmppaZq8hODgYCxYswEMPPYTbbrsNQ4YMQfXq1XH69Gn8+OOPaN++PebPn1/seiwWi/YedeTIEbz33nvo0KED+vbt6zSuevXq6NmzJ5YvX47Q0FD06dOnzF4L4Gju+X//938YNWoUdu7cibp16+LLL7/U7lJU/+6HhIRg0KBBmDdvHiRJQmxsLH744Qe3a20XpX79+mjevDl++eUXPPzww8WOb9asGe68805MmTIFKSkpCA8Px7Jly0r8gTuvRx99FPPnz8eIESOwc+dO1KhRA4sXL4a/v3+p11mQ1157Df369UP79u0xevRoXLlyBfPnz0fz5s3dzuzt2LEjli1bhhYtWmh3taqlLf7880+nuy9v1L333ov27dvj2WefxcmTJ9G0aVN8/fXXLjW7AcddoL169UJcXBzGjBmDzMxMzJs3DyEhIS7nlR07dsSrr76KM2fOOAUwOnXqhP/7v/9D3bp1nXq0fPLJJ3jvvfdw3333ITY2FtevX8f777+P4OBgl6CJp8TGxuKVV17BlClTcPLkSfTv3x9BQUE4ceIEvvnmGyQkJOA///lPic7xAMdNUr/++iv+/e9/e+BVEVFJ8DwnV3me53jys3Jh+vXrh8WLF+PPP/90uTO/Y8eOSExM1EpHAo6AS7t27bBq1Sp06dLFqRG1u+8nsizjgw8+QK9evdCsWTOMHj0aN910E86ePYt169YhODgY33//vctcZVnGkiVL0L9/fwwePBg//fQT7rrrLkyaNAnfffcd7rnnHowaNQqtW7dGeno69u/fjy+//BInT54scTmlmTNnok+fPujQoQMefvhhpKSkYN68eWjWrFmJKpqUN76HV0KCiErko48+EgCcvsxms2jVqpVYsGCBUBSlwOdt375dABAfffRRoev+8ssvRffu3UV4eLjQ6/WiRo0a4oEHHhDr1693Gfvzzz+Lrl27iuDgYGEwGES9evXEU089Ja5cueI07vjx42Lq1KnizjvvFJGRkUKv14vq1auLPn36iLVr1zqNfemll1xeV82aNcU999wjPvzwQ5GVlVXkvmnWrJno3Lmzy/I6deqIOnXqFPlcIYRYt26dACDWrVunLTt06JCIj48XgYGBIiIiQjz66KNi7969Tvvyn3/+EWPHjhWNGzcWAQEBIiQkRLRt21Z88cUXTutPTk4Wffr0EUFBQQJAgXNVHTt2TIwYMULUr19f+Pn5CbPZLJo1ayZeeuklkZaW5jI+MzNT/Oc//xHR0dHCZDKJ22+/XaxcubLY16x67733RL169YTJZBJt2rQRGzZsEJ07d3aao6Io4rXXXhN16tQRJpNJ3HrrreKHH34QI0eOLHT//vvf/xYAxNKlS10e+7//+z/RqVMnUa1aNWEymURsbKyYNGmSuHbtmtvzJiIqzLvvvisAiDvuuKPAx//66y9x//33i9DQUGE2m8Udd9whfvjhB6cxJ06cKPC9c8mSJaJ+/frCaDSKVq1aiVWrVrn8LVSfO3v2bKfnqu81y5cvd1quvr9v377dZXyPHj1ESEiIMJvNIjY2VowaNUrs2LGjyNevru/XX38VCQkJIiwsTAQGBorhw4eLy5cvF/icL774QgAQCQkJRa47r86dO4tmzZq5LC/oveHChQti9OjRIiIiQhiNRtGiRYsCz0suXbokBg4cKPz9/UVYWJh47LHHxIEDB1x+FyNHjhQBAQFuz1UIIebMmSMCAwNFRkaG0/I6deqIPn36uIz/66+/RHx8vDCZTCIqKko899xzIikpyeV8oST74dSpU6Jv377C399fREREiCeeeEKsXLnSZZ3uHlNCCAFAvPTSS07Lli1bJho3bixMJpNo3ry5+O6778TAgQNF48aNC99Beaj/hx5//HGn5fHx8QKAWLNmjdPygv6/FPY7Us/58rp8+bJ46KGHRHBwsAgJCREPPfSQ2L17d4H/B3/55RfRvn174efnJ4KDg8W9994rDh065LKd1NRUodPpRFBQkLDZbNryJUuWCADioYcechq/a9cuMXToUFG7dm1hMplEZGSkuOeee4r9/yaEcDlvKuz/emF/V/JT99GlS5cKfPyrr74SHTp0EAEBASIgIEA0btxYjB07Vhw5csRpnDvneEI4zu0BiKNHjxb7WonI83ieUzHnOUJ45rNyYbKzs0VERISYMWOGy2MHDx4UAESTJk2clr/yyisCgHjxxRcLXKe77ye7d+8WAwYM0D6/16lTRwwePNjpfKCg966MjAzRuXNnERgYKH7//XchhBDXr18XU6ZMEQ0aNBBGo1FERESIdu3aiTfffFNYLBYhRMnPe7766ivRpEkTYTKZRNOmTcXXX39d5P7Pi+/hVFqSEBXQ7YWIiDziySefxP/+9z8kJyeX+d2oRERUtr799lv0798fGzZscKsptC+6du0a6tevj1mzZmHMmDGenk6Fa9WqFapX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AJ4LpOK5QERERETBgs3DiShkCa4eG8zYIAodGRkZ+Pe//42VK1ciMjIS2dnZyM7ORklJCQDg6NGjmDNnDnbv3o0TJ05g9erVuPvuuzFo0CB0794dADBixAikpKRg/Pjx+Omnn/D1119j1qxZyMjI0LIuJk+ejGPHjuGJJ57Ar7/+itdffx2rVq3CtGnT/HbsRERERERERI0FAxtEFLJEQYCsOAMcRBQa3njjDeTl5WHIkCFISEjQHh999BEAwGAwYP369RgxYgQ6deqEv/zlLxg7diy++OILbR+SJGHNmjWQJAmpqam46667cPfdd+P555/XxiQnJ2Pt2rXIzMxEjx49sGDBArz99ttIS0tr8GMmIiIiIiIiamxYioqIQpaaqKFjxgZRyFAUpcLtSUlJ2Lx5c6X7adOmjVepqbKGDBmCPXv2VGt+DUm02zFg/X8BAFuH3wJZx8vCUMVzgVQ8F4iIiIgoWPBKlYhClpqpwR4bRBSKBCiIyM/VvqbQxXOBVDwXiIiIiChYsBQVEYUsNaDBHhtERERERERERETBg4ENIgpZajyDGRtERERERERERETBg4ENIgpZLEVFREREREREREQUfBjYIKKQJbkCGjqRH4VERERERERERETBgqt5RBTymLBBREREREREREQUPHT+ngARkb+oTcPZPJyIQpECASXhkdrXFLp4LpCK5wIRERERBQsGNogoZInssUFEIUzW6bAp/c/+ngYFAJ4LpOK5QERERETBgqWoiChkCeyxQUREREREREREFHS4mkdEIUutQMWMDSIiIiIiIiIiouDBUlREFLK0UlTssUFEIUi029F/01oAwI4h6ZB1vCwMVTwXSMVzgYiIiIiCBa9UiShkqaWoJGZsEFEIEqAg+uJ57WsKXTwXSMVzgYiIiIiCBUtREVHIkpixQUREREREREREFHQY2CCikMeMDSIiIiIiIiIiouDBwAYRhSzJlanBhA0iIiIiIiIiIqLgwcAGEYUsrccGIxtERERERERERERBg4ENIgpZajxDZCkqIiIiIiIiIiKioKHz9wSIiPxF1DI2GOMlotBkNZr8PQUKEDwXSMVzgYiIiIiCAQMbRBSy1FJUrERFRKHIodNjwy3j/D0NCgA8F0jFc4GIiIiIggVvUyaikKUGNKJMBv9OhIiIiIiIiIiIiKqMgQ0iCll2hwIAiI8K8/NMiIiIiIiIiIiIqKpYioqIQta5whIAQJRJ7+eZEBE1PNFuR98t6wAAPwwcAVnHy8JQxXOBVDwXiIiIiChY8EqViEKW1SEDuNxrg4golAhQ0PTsGe1rCl08F0jFc4GIiIiIggUDG0QUsv5f7/YYekWiv6dBRERERERERERE1cAeG0QUssIMOrRtFunvaRAREREREREREVE1MLBBRERERERERERERERBg4ENIiIiIiIiIiIiIiIKGgxsEBERERERERERERFR0GDzcCIiIqIQ5dDxUpCceC6QiucCEREREQUDXrUSERERhSCHTo91Yyb4exoUAHgukIrnAhEREREFC5aiIiIiIiIiIiIiIiKioMHABhERERERERERERERBQ2WoiIiIiIKQaLDjt7bvgEA/HjNdZAlXhaGKp4LpOK5QERERETBgleqRERERCFIUBS0OHNS+5pCF88FUvFcICIiIqJg4ddSVA6HA08//TSSk5NhNpvRvn17zJkzB0o5F9GTJ0+GIAhYvHixx/MXL17EuHHjEBUVhZiYGEyaNAmFhYUeY/bt24drr70WJpMJSUlJmD9/vtf+P/74Y3Tq1AkmkwndunXDl19+WWfHSkREREREREREREREtefXwMa8efPwxhtv4LXXXsPBgwcxb948zJ8/H6+++qrX2M8++ww7duxAYmKi17Zx48bhwIEDyMzMxJo1a/Dtt9/igQce0Lbn5+djxIgRaNOmDXbv3o2///3vePbZZ/Hmm29qY7Zt24Y77rgDkyZNwp49ezB69GiMHj0a+/fvr5+DJyIiokZvyZIlaNu2LUwmE/r164edO3f6e0pEREQUpHhdQUREdJlfAxvbtm3DLbfcgvT0dLRt2xZ/+tOfMGLECK//OZ86dQqPPPIIVqxYAb1e77Ht4MGD+Oqrr/D222+jX79+GDhwIF599VV8+OGHOH36NABgxYoVsFqteOedd9ClSxfcfvvtePTRR7Fw4UJtPy+//DJGjhyJGTNmoHPnzpgzZw569+6N1157rf7fCCIiImp0PvroI0yfPh3PPPMMfvzxR/To0QNpaWk4e/asv6dGREREQYbXFURERJ78Gti45pprsGHDBhw+fBgA8NNPP2HLli0YNWqUNkaWZYwfPx4zZsxAly5dvPaxfft2xMTE4KqrrtKeGz58OERRxPfff6+NGTRoEAwGgzYmLS0Nhw4dwqVLl7Qxw4cP99h3Wloatm/f7nPuFosF+fn5Hg8iIiIi1cKFC3H//ffj3nvvRUpKCpYuXYqwsDC88847/p4aERERBRleVxAREXnya2Djr3/9K26//XZ06tQJer0evXr1wtSpUzFu3DhtzLx586DT6fDoo4/63Ed2djZiY2M9ntPpdGjatCmys7O1MXFxcR5j1O8rG6NuL2vu3LmIjo7WHklJSdU4ciIiImrMrFYrdu/e7XHThCiKGD58eLk3TRARERH5wusKIiIibzp/vviqVauwYsUKrFy5El26dMHevXsxdepUJCYmYsKECdi9ezdefvll/PjjjxAEwZ9T9TJz5kxMnz5d+z4vLw+tW7dm5gYREQU89f9ViqL4eSaN1/nz5+FwOHzeNPHrr796jbdYLLBYLNr3eXl5AFCn1xXW4iKP70W7DcU2q/P1i4sg6/ReP+P++mV/virKzr+2+/D3zwfCHGry85Xtg+dC9X8+EObAcyEwfj4Q5lAX50Jt8Lqi/gXDdUWwqM57wGMMXNU9l0PhOEPhGPNLLZUPCkBiNc/XUDnO8lTrukLxo1atWimvvfaax3Nz5sxROnbsqCiKoixatEgRBEGRJEl7AFBEUVTatGmjKIqiLFu2TImJifHYh81mUyRJUj799FNFURRl/Pjxyi233OIx5ptvvlEAKBcvXlQURVGSkpKURYsWeYyZPXu20r179yody8mTJxUAfPDBBx988BE0j5MnT1bp/3FUfadOnVIAKNu2bfN4fsaMGcrVV1/tNf6ZZ57x+/nABx988MEHH7V58Lqi/vC6gg8++OCDj1B7VOW6wq8ZG8XFxRBFz2pYkiRBlmUAwPjx4332vRg/fjzuvfdeAEBqaipyc3Oxe/du9OnTBwDwzTffQJZl9OvXTxvz1FNPwWazac3HMzMz0bFjRzRp0kQbs2HDBkydOlV7rczMTKSmplbpWBITE3Hy5ElERkZ6ZZfk5+cjKSkJJ0+eRFRUVJX2F8h4PIGNxxPYeDyBLZCPpy7npigKCgoKkJiYWEezo7KaN28OSZKQk5Pj8XxOTg7i4+O9xpfNBJVlGRcvXkSzZs3qNWs1kM/5YML3sW7wfawbfB/rBt/HquN1Rf0LluuKuhAKf3s8xsYjFI6Tx9h4BMtxVue6wq+BjZtuugkvvvgiWrdujS5dumDPnj1YuHAhJk6cCABo1qwZmjVr5vEzer0e8fHx6NixIwCgc+fOGDlyJO6//34sXboUNpsNU6ZMwe233669AXfeeSeee+45TJo0CU8++ST279+Pl19+GYsWLdL2+9hjj2Hw4MFYsGAB0tPT8eGHH2LXrl148803q3QsoiiiVatWFY6JiooK6BOnung8gY3HE9h4PIEtkI+nruYWHR1dB7Oh8hgMBvTp0wcbNmzA6NGjATgXFTZs2IApU6Z4jTcajTAajR7PxcTENMBMnQL5nA8mfB/rBt/HusH3sW7wfawaXlfUr2C7rqgLofC3x2NsPELhOHmMjUcwHGdVryv8Gth49dVX8fTTT+Phhx/G2bNnkZiYiAcffBCzZ8+u1n5WrFiBKVOmYNiwYRBFEWPHjsUrr7yibY+Ojsa6deuQkZGBPn36oHnz5pg9ezYeeOABbcw111yDlStXYtasWfjb3/6GK664Ap9//jm6du1aZ8dLREREoWP69OmYMGECrrrqKlx99dVYvHgxioqKtKxTIiIioqridQUREZEnvwY2IiMjsXjxYixevLjKP3PixAmv55o2bYqVK1dW+HPdu3fHd999V+GY2267DbfddluV50JERERUnv/3//4fzp07h9mzZyM7Oxs9e/bEV1995dX4k4iIiKgyvK4gIiLy5NfARqgwGo145plnvFJBgxWPJ7DxeAIbjyewBfLxBPLcqHxTpkzxWSIiUPC8qht8H+sG38e6wfexbvB9pEAU6NcVdSEU/vZ4jI1HKBwnj7HxaIzHKSiKovh7EkRERERERERERERERFUh+nsCREREREREREREREREVcXABhERERERERERERERBQ0GNoiIiIiIiIiIiMhvNm3aBEEQkJub6++pVChY5lnfBEHA559/7u9pUIhjYIOIiIgoRC1ZsgRt27aFyWRCv379sHPnTn9PKag8++yzEATB49GpUyd/Tyvgffvtt7jpppuQmJjo8x/FiqJg9uzZSEhIgNlsxvDhw/Hbb7/5Z7IBrLL38Z577vE6P0eOHOmfyQaouXPnom/fvoiMjERsbCxGjx6NQ4cOeYwpLS1FRkYGmjVrhoiICIwdOxY5OTl+mjFRcFE/hyZPnuy1LSMjA4Ig4J577mn4idWDsp+3ZR/PPvusv6dYY0uXLkVkZCTsdrv2XGFhIfR6PYYMGeIxVl30P3r0aAPPsm405t9jZXxdNwiCgCNHjvgcf+bMGYwaNaqBZ1kz586dw0MPPYTWrVvDaDQiPj4eaWlp2Lp1a5V+fvny5YiJianfSdZQbY8t2DGwQQGH/eyJyB0/E4jqx0cffYTp06fjmWeewY8//ogePXogLS0NZ8+e9ffUgkqXLl1w5swZ7bFlyxZ/TyngFRUVoUePHliyZInP7fPnz8crr7yCpUuX4vvvv0d4eDjS0tJQWlrawDMNbJW9jwAwcuRIj/Pzgw8+aMAZBr7NmzcjIyMDO3bsQGZmJmw2G0aMGIGioiJtzLRp0/DFF1/g448/xubNm3H69GmMGTPGj7MmCi5JSUn48MMPUVJSoj1XWlqKlStXonXr1n6cWd1y/6xdvHgxoqKiPJ57/PHH/T3FGhs6dCgKCwuxa9cu7bnvvvsO8fHx+P777z3+/7xx40a0bt0a7du398dUa60x/x6roux1w5kzZ5CcnOwxxmq1AgDi4+NhNBr9Mc1qGzt2LPbs2YP33nsPhw8fxurVqzFkyBBcuHDB31OrtcZ8bFXBwEaQa0wLfhcvXgTgjJA3Ro3pd9UYHDp0CI899pi/p1GnGts5xs+EhhVo86H6t3DhQtx///249957kZKSgqVLlyIsLAzvvPOOv6cWVHQ6HeLj47VH8+bN/T2lgDdq1Ci88MILuPXWW722KYqCxYsXY9asWbjlllvQvXt3vP/++zh9+jTLHZRR0fuoUu/cUx9NmjRpwBkGvq+++gr33HMPunTpgh49emD58uXIysrC7t27AQB5eXlYtmwZFi5ciOuuuw59+vTBu+++i23btmHHjh1+nj1RcOjduzeSkpLw6aefas99+umnaN26NXr16qU9Z7FY8OijjyI2NhYmkwkDBw7EDz/8oG1XMwE2bNiAq666CmFhYbjmmmu8sqz8xf2zNjo6GoIgaN8vXboUAwcO9Bi/ePFitG3b1uO5t99+G507d4bJZEKnTp3w+uuvN+ARlK9jx45ISEjApk2btOc2bdqEW265BcnJyR6fh5s2bcLQoUMhyzLmzp2L5ORkmM1m9OjRA//5z3889vvll1/iyiuvhNlsxtChQ3HixIkGOqLyVfR7jI+PR0REhDZ29+7d5Z6L99xzD0aPHu2x76lTp3pluASastcN8fHxGDZsGKZMmYKpU6eiefPmSEtLAxA8pahyc3Px3XffYd68eRg6dCjatGmDq6++GjNnzsTNN98MwPnvom7duiE8PBxJSUl4+OGHUVhYCMB5Tt97773Iy8sLuMydyo7txIkTEAQBe/fu9fgZQRC0v+dA/2ytDAMbQaqwsBA2mw2CIDSKxag9e/agefPmHncABLOsrCx8/fXX+Ne//oWDBw8CcH7oOxwOP8+sZo4fP47Fixfj2Wef9boYCUY//fQTBgwYgDfffBP79u3z93RqrbF9HgD8TGhIly5dQklJSaM6f6hyVqsVu3fvxvDhw7XnRFHE8OHDsX37dj/OLPj89ttvSExMRLt27TBu3DhkZWX5e0pB7fjx48jOzvY4N6Ojo9GvXz+emzWwadMmxMbGomPHjnjooYdC5u69msrLywMANG3aFIBz0cpms3mcj506dULr1q15PhJVw8SJE/Huu+9q37/zzju49957PcY88cQT+OSTT/Dee+/hxx9/RIcOHZCWlqbd7KR66qmnsGDBAuzatQs6nQ4TJ05skGOobytWrMDs2bPx4osv4uDBg3jppZfw9NNP47333vP31AA4szY2btyofb9x40YMGTIEgwcP1p4vKSnB999/j6FDh2Lu3Ll4//33sXTpUhw4cADTpk3DXXfdhc2bNwMATp48iTFjxuCmm27C3r17cd999+Gvf/2rX46tphrruejLe++9B4PBgK1bt2Lp0qX+nk61REREICIiAp9//jksFovPMaIo4pVXXsGBAwfw3nvv4ZtvvsETTzwBALjmmmu8sncCJXOnKsdWVcF6PjOwEYQOHjyIW2+9FR999BGsVmvQL0bt3bsXgwcPxvTp03HVVVf5ezq1tm/fPvTt2xcvv/wypk2bhokTJ2LChAkAAEmSAmIhszr27duHa665Bhs2bMAHH3yAhQsX4rPPPvP3tGrsp59+Qv/+/XH77bcjPj4eK1eu9PeUaqWxfR4A/ExoSAcPHsSIESPw97//HcXFxY3i/KGqOX/+PBwOB+Li4jyej4uLQ3Z2tp9mFXz69euH5cuX46uvvsIbb7yB48eP49prr0VBQYG/pxa01POP52btjRw5Eu+//z42bNiAefPmYfPmzRg1alTQXYs2FFmWMXXqVAwYMABdu3YF4DwfDQaDV11tno9E1XPXXXdhy5Yt+P333/H7779j69atuOuuu7TtRUVFeOONN/D3v/8do0aNQkpKCt566y2YzWYsW7bM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hIQgPj4eLi4u+O6779C1a1cbTlo17FEbe9TmaD2A4zWp3FNcXAyj0Yjjx49j6NCh6NSpE1566SUEBQXB2dkZjz/+ONLT07F9+3YYjUarzkZEREREREREZAt8xca/4Ma1IZPJBJ1Oh0uXLiE3NxcAtANm3t7eaNu2Lby8vHDkyBElD/ixhz3WxB61ewDHa1K152bnGZhMJhiNRmRnZ8PX1xdxcXE4d+4cpkyZgqCgIIwYMQJbt27Fyy+/zEUNIiIiIiIiIqoxuLDxD5w9exY5OTllzvK1XKc9NTUVAQEBOHjwoPaYiGDNmjWIjo7Gt99+i3bt2tli7Aqxhz3WxB61ewDHa1K5JyUlBR999BHy8vJuOlunTp2wZ88etGzZEocPH8b06dMxaNAgdOvWDYcPH0anTp1u22xERERERERERKrhwsYt+vHHH+Hv74/t27eX2e7s7Iy0tDR069YNw4YNw9ChQ8s83rFjR/z6668IDAy05riVYs817LEO9lyjag/geE0q95w4cQLdu3dHQkICMjMzAQBms1mbLTAwEPfffz/GjRsHs9mMunXr4pFHHsGyZcswZ84ctGnT5rbNRkRERERERESkIt5j4xb8+OOP6N27N5566iksWbKk3ONr1qxBcnIyVqxYofwNcwH2qI49anO0HsDxmlTuSUtLw913341Ro0Zh2bJl2nbLfTW2bduGgwcPYunSpXBy4rkIREREREREREQAFzaq7eTJk+jYsSMiIiIwf/58mM1mxMTE4MyZM+jQoQP8/f3h4+MDs9lsFweh2KM29qjN0XoAx2tSvWfLli146623sG/fPpjNZkRERODs2bMoLi7G008/jXvuucfqMxERERERERERqU5v6wHsidlsxtatW2EymTBy5EgAwKBBg5CdnY3U1FR4e3ujRYsWWLFihV1c75w9amOP2hytB3C8JnvoSUtLg4eHBwDg7rvvRt26ddGoUSMUFxdjwIABiIyMxMSJEyEidvHqGCIiIiIiIiIia1D/dFuFODk5YfLkyZg0aRICAwPRsWNHeHp6Yv369cjMzMSyZcvg7OyMxYsX4/Lly7Yet1LsURt71OZoPYDjNdlDT6NGjfDDDz/gvffeg5eXFz744ANERUVh27ZtWLx4MSZPnozExEQuahARERERERERXU+o2jIyMmTq1KnStWtXSUpKKvPYa6+9Jg0aNJDff//dRtNVH3vUxh61OVqPiOM1qdyTmpoqoaGhEhwcLPfcc4+IiJhMJhERuXDhgvj7+8uWLVtsMhsRERERERERkap4KapK/PHHHzh27BiKi4vRrFkzdO3aFT4+Ppg3bx7OnTuHVq1aAQBMJhOcnZ1x5513wsvLC0aj0caT3xx72GNN7FG7B3C8JpV7rp/Nz88PwcHB8PPzQ9++fbF06VIUFxcjJSUFLVq0AADUrl0bnp6ecHFxue2zERERERERERHZEy5s/I2ffvoJw4cPR/369ZGcnIzmzZtj1qxZGDVqFBo2bIgGDRpolwdxdnYGAOzevRtNmjRBrVq1bDn6TbGHPdbEHrV7AMdrUrnnZrPNnDkT4eHhmDFjBkwmE1auXInhw4fjnXfegbu7Oz766CNkZmYiKCjots5GRERERERERGRveI+NCpw9exbDhg3DyJEjsWvXLnz99ddo3749vv76a5hMpnI3cv3tt9/w/PPPY+PGjVi+fDnc3d1tOH157GGPNbFH7R7A8ZpU7qlotl27dqG4uBgAMGvWLCxbtgyNGzdGz549MXr0aHzwwQf45JNP0LRp09s2GxERERERERGRXbLdVbDUVVRUJM8995w8/PDDUlRUpG1/7733xNvbW7KyssrsHx8fLxMnTpS2bdtKQkKClaetHHvYY03sUbtHxPGaVO6p7mwiIkePHpXTp0/LhQsXbutsRERERERERET2ipeiugmz2YwmTZogICAARqNRO9O3V69eqF27NkpKSsrs3717d+Tn52PhwoVo3LixjaauGHvYY03sUbsHcLwmlXuqOptc94qSLl26wMmJL6gkIiIiIiIiIqoIFzZuwtXVFcOHD9du4Grh6ekJg8FQ5iDZ0aNHERwcjIEDB1p7zCpjD3usiT1q9wCO16RyT1Vn0+l0SEhIQGBgIBc1iIiIiIiIiIgqwaMn/196ejoOHTqEr7/+GmazWTsIZTKZtLNo8/LykJOTo71PREQEBg0ahOzsbIiITeauCHvYY03sUbsHcLwmlXtudbaBAwcq+bkmIiIiIiIiIlINX7EB4MSJEwgNDYWLiwsuXLiAhg0bIiIiAkOGDEG9evW0S4TodDo4OTmhdu3aWLx4MZYtW4bY2Fh4e3vbOqEM9rDHmtijdg/geE0q96g8GxERERERERGRw7DOrTzUlZGRIW3btpU5c+bI2bNn5fz58xIeHi4BAQGyYMECycjI0Pa9cOGCBAYGSnh4uBiNRjly5IgNJ7859rDHmtijdo+I4zWp3KPybEREREREREREjqTGL2wkJiZK8+bNyx1Umj17tnTs2FGWLl0qV65cERGRpKQk0el04ubmJgkJCTaYtnLsYY81sUftHhHHa1K5R+XZiIiIiIiIiIgcSY2/x0ZJSQlKS0tRUFAAACgsLAQALFmyBP3798ebb76JM2fOAAC8vLwwdepUHDt2DF26dLHVyH+LPeyxJvao3QM4XpPKPSrPRkRERERERETkSHQivEtp9+7dUbt2bezduxcAUFRUBBcXFwBAt27dcOedd+LDDz8EAFy9ehWurq42m7Uq2MMea2KP2j2A4zWp3KPybEREREREREREjqLGvWLjypUryM/Px6VLl7Rtb7/9NhITEzF27FgAgIuLC0pLSwEAffv2xZUrV7R9VTsIxR72WBN71O4BHK9J5R6VZyMiIiIiIiIicmQ1amEjKSkJDz74IPr164eAgABs2rQJABAQEIBVq1bh22+/xahRo1BSUgInp2ufmoyMDLi7u6O0tBSqvbiFPeyxJvao3QM4XpPKPSrPRkRERERERETk6PS2HsBakpKS0LdvXzz66KPo2rUrjh49igkTJqBdu3YIDAxEaGgo3N3dMXXqVHTq1Alt27aF0WjEzp078cMPP0CvV+tTxR72WBN71O4BHK9J5R6VZyMiIiIiIiIiqglqxD02Ll68iDFjxqBt27ZYtWqVtr1///7o2LEjVq9erW3Lz8/H4sWLcfHiRbi6uuLJJ59Eu3btbDF2hdjDHmtij9o9gOM1qdyj8mxERERERERERDVFjThttKSkBLm5uRg5ciQAwGw2w8nJCS1atMDFixcBACICEUGdOnXwyiuvlNlPNexhjzWxR+0ewPGaVO5ReTYiIiIiIiIiopqiRhxl8fX1xfvvv48+ffoAAEwmEwCgcePG2oEmnU4HJyenMjeB1el01h+2CtgDbZuK2ANtm4ocrQdwvCaVe1SejYiIiIiIiIiopqgRCxsA4O/vD+DaWbMGgwHAtbNqMzIytH1efvllREZGorS0FIDaB6LYwx5rYo/aPYDjNanco/JsREREREREREQ1QY24FNX1nJycICLaQSbLGbYRERFYvHgxEhIS7OrGruxRG3vU5mg9gOM1qdyj8mxERERERERERI6sxrxi43qW+6Xr9Xo0bdoUy5Ytw9KlS3HkyBF07tzZxtNVH3vUxh61OVoP4HhNKveoPBsRERERERERkaOqkaeSWs6qNRgMePfdd1G3bl18//33CAoKsvFkt4Y9amOP2hytB3C8JpV7VJ6NiIiIiIiIiMhR1chXbFgMGTIEABAXF4euXbvaeJp/jj1qY4/aHK0HcLwmlXtUno2IiIiIiIiIyNHoxHIdjRrqypUrcHd3t/UY/xr2qI09anO0HsDxmlTuUXk2IiIiIiIiIiJHUuMXNoiIiIiIiIiIiIiIyH7U6EtRERERERERERERERGRfeHCBhERERERERERERER2Q0ubBARERERERERERERkd3gwgYREREREREREREREdkNLmwQEREREREREREREZHd4MIGERERERERERERERHZDS5sEBERERERERERERGR3eDCBhERERERERERERER2Q0ubBARERERERERERERkd3gwgYREREREREREREREdmN/wfYuJeu0vt+6gAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 1600x500 with 3 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Visualize crypto data patterns: price series + hourly/daily volume profile\n",
"btc_data = crypto_results[\"BTCUSDT\"][\"data\"]\n",
"fig, axes = plt.subplots(1, 3, figsize=(16, 5))\n",
"\n",
"# Panel 1: last 30 days of close\n",
"recent_data = btc_data.tail(24 * 30)\n",
"axes[0].plot(\n",
" recent_data[\"timestamp\"].to_list(),\n",
" recent_data[\"close\"].to_list(),\n",
" linewidth=0.8,\n",
" alpha=0.8,\n",
" color=\"#2E86AB\",\n",
")\n",
"axes[0].set_ylabel(\"Close ($)\")\n",
"axes[0].set_title(\"BTCUSDT: last 30 days\")\n",
"axes[0].tick_params(axis=\"x\", rotation=45)\n",
"\n",
"# Panel 2: average volume by hour, with funding windows highlighted\n",
"hourly_volume = (\n",
" btc_data.group_by(\"hour_utc\").agg(pl.col(\"volume\").mean().alias(\"avg_volume\")).sort(\"hour_utc\")\n",
")\n",
"axes[1].bar(\n",
" hourly_volume[\"hour_utc\"].to_list(),\n",
" hourly_volume[\"avg_volume\"].to_list(),\n",
" color=\"#2E86AB\",\n",
" alpha=0.7,\n",
")\n",
"for funding_hour in [0, 8, 16]:\n",
" axes[1].axvline(funding_hour, color=\"red\", linestyle=\"--\", alpha=0.5)\n",
"axes[1].set_ylabel(\"Average volume\")\n",
"axes[1].set_xlabel(\"Hour (UTC)\")\n",
"axes[1].set_title(\"Volume by hour (funding windows in red)\")\n",
"\n",
"# Panel 3: average volume by weekday (weekend in red)\n",
"daily_volume = (\n",
" btc_data.group_by(\"day_of_week\")\n",
" .agg(pl.col(\"volume\").mean().alias(\"avg_volume\"))\n",
" .sort(\"day_of_week\")\n",
")\n",
"days = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"]\n",
"colors = [\"#2E86AB\"] * 5 + [\"#E94F37\"] * 2\n",
"axes[2].bar(range(7), daily_volume[\"avg_volume\"].to_list(), color=colors, alpha=0.7)\n",
"axes[2].set_xticks(range(7))\n",
"axes[2].set_xticklabels(days)\n",
"axes[2].set_ylabel(\"Average volume\")\n",
"axes[2].set_title(\"Volume by day (weekend in red)\")\n",
"\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "da5ca23d",
"metadata": {
"tags": []
},
"source": [
"---\n",
"\n",
"## 4. Storage Best Practices\n",
"\n",
"### Partitioned Parquet Storage\n",
"\n",
"For large datasets, partition by time and symbol:\n",
"\n",
"```\n",
"output/\n",
"└── etf_momentum/\n",
" ├── year=2024/\n",
" │ ├── SPY.parquet\n",
" │ ├── QQQ.parquet\n",
" │ └── TLT.parquet\n",
" └── year=2023/\n",
" └── ...\n",
"```\n",
"\n",
"**Benefits**:\n",
"- **Partition pruning**: Only read needed date ranges\n",
"- **Incremental writes**: Add new data without rewriting\n",
"- **Parallel reads**: Process multiple partitions concurrently"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "86342c87",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-16T02:26:43.297577Z",
"iopub.status.busy": "2026-06-16T02:26:43.297480Z",
"iopub.status.idle": "2026-06-16T02:26:43.299522Z",
"shell.execute_reply": "2026-06-16T02:26:43.299159Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Storage Example:\n",
" ETF output: 02_financial_data_universe/output/etf_pipeline\n",
" Crypto output: 02_financial_data_universe/output/crypto_pipeline\n"
]
}
],
"source": [
"# Save pipeline outputs (example)\n",
"print(\"Storage Example:\")\n",
"print(f\" ETF output: {etf_pipeline.storage_path}\")\n",
"print(f\" Crypto output: {crypto_pipeline.storage_path}\")"
]
},
{
"cell_type": "markdown",
"id": "ca4b8de8",
"metadata": {
"tags": []
},
"source": [
"---\n",
"\n",
"## 5. Simplifying with DataManager\n",
"\n",
"The pipelines above show every step explicitly. In practice, ml4t-data's\n",
"`DataManager` and `Universe` classes handle most of this boilerplate.\n",
"Here's how the ETF pipeline looks using the higher-level API:"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "b4a295a1",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-16T02:26:43.300386Z",
"iopub.status.busy": "2026-06-16T02:26:43.300319Z",
"iopub.status.idle": "2026-06-16T02:26:44.236338Z",
"shell.execute_reply": "2026-06-16T02:26:44.235935Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Universe: ['SPY', 'QQQ', 'IWM', 'TLT', 'GLD']\n",
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1mdebug \u001b[0m] \u001b[1mApplied DATABENTO_API_KEY to databento.api_key\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1mdebug \u001b[0m] \u001b[1mApplied OANDA_API_KEY to oanda.api_key\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1mdebug \u001b[0m] \u001b[1mConfigManager initialized \u001b[0m \u001b[36mconfig_path\u001b[0m=\u001b[35mNone\u001b[0m \u001b[36moutput_format\u001b[0m=\u001b[35mpolars\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1mdebug \u001b[0m] \u001b[1mProviderManager initialized \u001b[0m \u001b[36mavailable_providers\u001b[0m=\u001b[35m['databento', 'oanda', 'binance', 'synthetic', 'cryptocompare', 'yahoo', 'okx', 'binance_public', 'mock']\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mDataManager initialized \u001b[0m \u001b[36mavailable_providers\u001b[0m=\u001b[35m['databento', 'oanda', 'binance', 'synthetic', 'cryptocompare', 'yahoo', 'okx', 'binance_public', 'mock']\u001b[0m \u001b[36moutput_format\u001b[0m=\u001b[35mpolars\u001b[0m \u001b[36mstorage_enabled\u001b[0m=\u001b[35mTrue\u001b[0m \u001b[36mvalidation_enabled\u001b[0m=\u001b[35mTrue\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mStarting data load \u001b[0m \u001b[36masset_class\u001b[0m=\u001b[35mequities\u001b[0m \u001b[36mend\u001b[0m=\u001b[35m2025-01-15\u001b[0m \u001b[36mfrequency\u001b[0m=\u001b[35mdaily\u001b[0m \u001b[36mstart\u001b[0m=\u001b[35m2024-01-01\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mSPY\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mLoading SPY \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m0%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetching data for SPY \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m20%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1mdebug \u001b[0m] \u001b[1mRate limiter initialized \u001b[0m \u001b[36mmax_calls\u001b[0m=\u001b[35m60\u001b[0m \u001b[36mperiod\u001b[0m=\u001b[35m60.0\u001b[0m \u001b[36mprovider\u001b[0m=\u001b[35myahoo\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1mdebug \u001b[0m] \u001b[1mHTTP session initialized \u001b[0m \u001b[36mmax_connections\u001b[0m=\u001b[35m10\u001b[0m \u001b[36mtimeout\u001b[0m=\u001b[35m30.0\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mInitialized yahoo provider \u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetching OHLCV data \u001b[0m \u001b[36mend\u001b[0m=\u001b[35m2025-01-15\u001b[0m \u001b[36mfrequency\u001b[0m=\u001b[35mdaily\u001b[0m \u001b[36mname\u001b[0m=\u001b[35mYahooFinanceProvider\u001b[0m \u001b[36mprovider\u001b[0m=\u001b[35myahoo\u001b[0m \u001b[36mstart\u001b[0m=\u001b[35m2024-01-01\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mSPY\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetching data from Yahoo Finance\u001b[0m \u001b[36mend\u001b[0m=\u001b[35m2025-01-16\u001b[0m \u001b[36minterval\u001b[0m=\u001b[35m1d\u001b[0m \u001b[36mstart\u001b[0m=\u001b[35m2024-01-01\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mSPY\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSuccessfully fetched data \u001b[0m \u001b[36mrows\u001b[0m=\u001b[35m261\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mSPY\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSuccessfully fetched OHLCV data\u001b[0m \u001b[36mname\u001b[0m=\u001b[35mYahooFinanceProvider\u001b[0m \u001b[36mprovider\u001b[0m=\u001b[35myahoo\u001b[0m \u001b[36mrows\u001b[0m=\u001b[35m261\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mSPY\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetched 261 rows of data \u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetched 261 rows \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m50%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[33m\u001b[1mwarning \u001b[0m] \u001b[1mData already exists for equities/daily/SPY, overwriting\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mStoring data for SPY \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m80%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mData load completed \u001b[0m \u001b[36mkey\u001b[0m=\u001b[35mequities/daily/SPY\u001b[0m \u001b[36mrows\u001b[0m=\u001b[35m261\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mCompleted loading SPY \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m100%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" SPY: 261 rows → equities/daily/SPY\n",
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mStarting data load \u001b[0m \u001b[36masset_class\u001b[0m=\u001b[35mequities\u001b[0m \u001b[36mend\u001b[0m=\u001b[35m2025-01-15\u001b[0m \u001b[36mfrequency\u001b[0m=\u001b[35mdaily\u001b[0m \u001b[36mstart\u001b[0m=\u001b[35m2024-01-01\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mQQQ\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mLoading QQQ \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m0%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetching data for QQQ \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m20%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetching OHLCV data \u001b[0m \u001b[36mend\u001b[0m=\u001b[35m2025-01-15\u001b[0m \u001b[36mfrequency\u001b[0m=\u001b[35mdaily\u001b[0m \u001b[36mname\u001b[0m=\u001b[35mYahooFinanceProvider\u001b[0m \u001b[36mprovider\u001b[0m=\u001b[35myahoo\u001b[0m \u001b[36mstart\u001b[0m=\u001b[35m2024-01-01\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mQQQ\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetching data from Yahoo Finance\u001b[0m \u001b[36mend\u001b[0m=\u001b[35m2025-01-16\u001b[0m \u001b[36minterval\u001b[0m=\u001b[35m1d\u001b[0m \u001b[36mstart\u001b[0m=\u001b[35m2024-01-01\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mQQQ\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSuccessfully fetched data \u001b[0m \u001b[36mrows\u001b[0m=\u001b[35m261\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mQQQ\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSuccessfully fetched OHLCV data\u001b[0m \u001b[36mname\u001b[0m=\u001b[35mYahooFinanceProvider\u001b[0m \u001b[36mprovider\u001b[0m=\u001b[35myahoo\u001b[0m \u001b[36mrows\u001b[0m=\u001b[35m261\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mQQQ\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetched 261 rows of data \u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetched 261 rows \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m50%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[33m\u001b[1mwarning \u001b[0m] \u001b[1mData already exists for equities/daily/QQQ, overwriting\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mStoring data for QQQ \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m80%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mData load completed \u001b[0m \u001b[36mkey\u001b[0m=\u001b[35mequities/daily/QQQ\u001b[0m \u001b[36mrows\u001b[0m=\u001b[35m261\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mCompleted loading QQQ \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m100%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" QQQ: 261 rows → equities/daily/QQQ\n",
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mStarting data load \u001b[0m \u001b[36masset_class\u001b[0m=\u001b[35mequities\u001b[0m \u001b[36mend\u001b[0m=\u001b[35m2025-01-15\u001b[0m \u001b[36mfrequency\u001b[0m=\u001b[35mdaily\u001b[0m \u001b[36mstart\u001b[0m=\u001b[35m2024-01-01\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mIWM\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mLoading IWM \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m0%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetching data for IWM \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m20%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetching OHLCV data \u001b[0m \u001b[36mend\u001b[0m=\u001b[35m2025-01-15\u001b[0m \u001b[36mfrequency\u001b[0m=\u001b[35mdaily\u001b[0m \u001b[36mname\u001b[0m=\u001b[35mYahooFinanceProvider\u001b[0m \u001b[36mprovider\u001b[0m=\u001b[35myahoo\u001b[0m \u001b[36mstart\u001b[0m=\u001b[35m2024-01-01\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mIWM\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetching data from Yahoo Finance\u001b[0m \u001b[36mend\u001b[0m=\u001b[35m2025-01-16\u001b[0m \u001b[36minterval\u001b[0m=\u001b[35m1d\u001b[0m \u001b[36mstart\u001b[0m=\u001b[35m2024-01-01\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mIWM\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSuccessfully fetched data \u001b[0m \u001b[36mrows\u001b[0m=\u001b[35m261\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mIWM\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSuccessfully fetched OHLCV data\u001b[0m \u001b[36mname\u001b[0m=\u001b[35mYahooFinanceProvider\u001b[0m \u001b[36mprovider\u001b[0m=\u001b[35myahoo\u001b[0m \u001b[36mrows\u001b[0m=\u001b[35m261\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mIWM\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetched 261 rows of data \u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetched 261 rows \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m50%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[33m\u001b[1mwarning \u001b[0m] \u001b[1mData already exists for equities/daily/IWM, overwriting\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mStoring data for IWM \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m80%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mData load completed \u001b[0m \u001b[36mkey\u001b[0m=\u001b[35mequities/daily/IWM\u001b[0m \u001b[36mrows\u001b[0m=\u001b[35m261\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mCompleted loading IWM \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m100%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" IWM: 261 rows → equities/daily/IWM\n",
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mStarting data load \u001b[0m \u001b[36masset_class\u001b[0m=\u001b[35mequities\u001b[0m \u001b[36mend\u001b[0m=\u001b[35m2025-01-15\u001b[0m \u001b[36mfrequency\u001b[0m=\u001b[35mdaily\u001b[0m \u001b[36mstart\u001b[0m=\u001b[35m2024-01-01\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mTLT\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mLoading TLT \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m0%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetching data for TLT \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m20%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetching OHLCV data \u001b[0m \u001b[36mend\u001b[0m=\u001b[35m2025-01-15\u001b[0m \u001b[36mfrequency\u001b[0m=\u001b[35mdaily\u001b[0m \u001b[36mname\u001b[0m=\u001b[35mYahooFinanceProvider\u001b[0m \u001b[36mprovider\u001b[0m=\u001b[35myahoo\u001b[0m \u001b[36mstart\u001b[0m=\u001b[35m2024-01-01\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mTLT\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:43\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetching data from Yahoo Finance\u001b[0m \u001b[36mend\u001b[0m=\u001b[35m2025-01-16\u001b[0m \u001b[36minterval\u001b[0m=\u001b[35m1d\u001b[0m \u001b[36mstart\u001b[0m=\u001b[35m2024-01-01\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mTLT\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:44\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSuccessfully fetched data \u001b[0m \u001b[36mrows\u001b[0m=\u001b[35m261\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mTLT\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:44\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSuccessfully fetched OHLCV data\u001b[0m \u001b[36mname\u001b[0m=\u001b[35mYahooFinanceProvider\u001b[0m \u001b[36mprovider\u001b[0m=\u001b[35myahoo\u001b[0m \u001b[36mrows\u001b[0m=\u001b[35m261\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mTLT\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:44\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetched 261 rows of data \u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:44\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetched 261 rows \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m50%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:44\u001b[0m [\u001b[33m\u001b[1mwarning \u001b[0m] \u001b[1mData already exists for equities/daily/TLT, overwriting\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:44\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mStoring data for TLT \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m80%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:44\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mData load completed \u001b[0m \u001b[36mkey\u001b[0m=\u001b[35mequities/daily/TLT\u001b[0m \u001b[36mrows\u001b[0m=\u001b[35m261\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:44\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mCompleted loading TLT \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m100%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" TLT: 261 rows → equities/daily/TLT\n",
"\u001b[2m2026-06-15 22:26:44\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mStarting data load \u001b[0m \u001b[36masset_class\u001b[0m=\u001b[35mequities\u001b[0m \u001b[36mend\u001b[0m=\u001b[35m2025-01-15\u001b[0m \u001b[36mfrequency\u001b[0m=\u001b[35mdaily\u001b[0m \u001b[36mstart\u001b[0m=\u001b[35m2024-01-01\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mGLD\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:44\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mLoading GLD \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m0%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:44\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetching data for GLD \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m20%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:44\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetching OHLCV data \u001b[0m \u001b[36mend\u001b[0m=\u001b[35m2025-01-15\u001b[0m \u001b[36mfrequency\u001b[0m=\u001b[35mdaily\u001b[0m \u001b[36mname\u001b[0m=\u001b[35mYahooFinanceProvider\u001b[0m \u001b[36mprovider\u001b[0m=\u001b[35myahoo\u001b[0m \u001b[36mstart\u001b[0m=\u001b[35m2024-01-01\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mGLD\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:44\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetching data from Yahoo Finance\u001b[0m \u001b[36mend\u001b[0m=\u001b[35m2025-01-16\u001b[0m \u001b[36minterval\u001b[0m=\u001b[35m1d\u001b[0m \u001b[36mstart\u001b[0m=\u001b[35m2024-01-01\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mGLD\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:44\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSuccessfully fetched data \u001b[0m \u001b[36mrows\u001b[0m=\u001b[35m261\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mGLD\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:44\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mSuccessfully fetched OHLCV data\u001b[0m \u001b[36mname\u001b[0m=\u001b[35mYahooFinanceProvider\u001b[0m \u001b[36mprovider\u001b[0m=\u001b[35myahoo\u001b[0m \u001b[36mrows\u001b[0m=\u001b[35m261\u001b[0m \u001b[36msymbol\u001b[0m=\u001b[35mGLD\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:44\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetched 261 rows of data \u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:44\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mFetched 261 rows \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m50%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:44\u001b[0m [\u001b[33m\u001b[1mwarning \u001b[0m] \u001b[1mData already exists for equities/daily/GLD, overwriting\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:44\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mStoring data for GLD \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m80%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:44\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mData load completed \u001b[0m \u001b[36mkey\u001b[0m=\u001b[35mequities/daily/GLD\u001b[0m \u001b[36mrows\u001b[0m=\u001b[35m261\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2m2026-06-15 22:26:44\u001b[0m [\u001b[32m\u001b[1minfo \u001b[0m] \u001b[1mCompleted loading GLD \u001b[0m \u001b[36mprogress\u001b[0m=\u001b[35m100%\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" GLD: 261 rows → equities/daily/GLD\n"
]
}
],
"source": [
"from ml4t.data import DataManager\n",
"from ml4t.data.storage import HiveStorage\n",
"from ml4t.data.storage.backend import StorageConfig\n",
"from ml4t.data.universe import Universe\n",
"from ml4t.data.update_manager import GapDetector\n",
"from ml4t.data.validation import OHLCVValidator\n",
"\n",
"# One-line universe instead of hardcoded list\n",
"Universe.add_custom(\"etf_momentum\", [\"SPY\", \"QQQ\", \"IWM\", \"TLT\", \"GLD\"])\n",
"print(f\"Universe: {Universe.get('etf_momentum')}\")\n",
"\n",
"# DataManager with storage — fetch, store, and validate in one step\n",
"dm_config = StorageConfig(base_path=get_output_dir(2, \"dm_pipeline\"), compression=\"zstd\")\n",
"dm_storage = HiveStorage(config=dm_config)\n",
"dm = DataManager(storage=dm_storage, enable_validation=True)\n",
"\n",
"# Fetch and store all symbols\n",
"for symbol in Universe.get(\"etf_momentum\"):\n",
" key = dm.load(symbol, \"2024-01-01\", AS_OF_DATE, provider=\"yahoo\")\n",
" meta = dm.get_metadata(symbol)\n",
" rows = meta.get(\"row_count\", \"?\") if meta else \"?\"\n",
" print(f\" {symbol}: {rows} rows → {key}\")"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "62cbc930",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-16T02:26:44.237260Z",
"iopub.status.busy": "2026-06-16T02:26:44.237187Z",
"iopub.status.idle": "2026-06-16T02:26:44.286733Z",
"shell.execute_reply": "2026-06-16T02:26:44.286132Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" SPY: 261 rows, 1 issues, 11 gaps\n",
" QQQ: 261 rows, 1 issues, 11 gaps\n",
" IWM: 261 rows, 1 issues, 11 gaps\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" TLT: 261 rows, 1 issues, 11 gaps\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" GLD: 261 rows, 1 issues, 11 gaps\n"
]
}
],
"source": [
"# Validate and check gaps — compare to the manual validate_data() above\n",
"validator = OHLCVValidator(max_return_threshold=0.5)\n",
"gap_detector = GapDetector(exclude_weekends=True)\n",
"\n",
"for symbol in Universe.get(\"etf_momentum\"):\n",
" key = f\"equities/daily/{symbol}\"\n",
" if dm_storage.exists(key):\n",
" df = dm_storage.read(key).collect()\n",
"\n",
" result = validator.validate(df)\n",
" gaps = gap_detector.detect_gaps(df, frequency=\"daily\")\n",
"\n",
" status = \"OK\" if result.passed else f\"{result.error_count} issues\"\n",
" gap_status = f\"{len(gaps)} gaps\" if gaps else \"complete\"\n",
" print(f\" {symbol}: {len(df)} rows, {status}, {gap_status}\")"
]
},
{
"cell_type": "markdown",
"id": "b5327feb",
"metadata": {
"tags": []
},
"source": [
"The DataManager version replaces ~100 lines of manual provider instantiation,\n",
"data combination, and validation with a few lines. Under the hood it uses\n",
"the same providers and validation — see notebooks `17_data_management` and\n",
"`18_incremental_updates` for the full walkthrough."
]
},
{
"cell_type": "markdown",
"id": "a1283722",
"metadata": {
"tags": []
},
"source": [
"## Key Takeaways\n",
"\n",
"Two end-to-end pipelines wired through the validation/storage stack\n",
"from chapter §2.3.\n",
"\n",
"### Quantitative Findings\n",
"- **Equity stitch (AAPL/MSFT/JPM, 1990-now)**: each symbol's stitched\n",
" panel is ~8,800 daily rows — 7,113-7,114 from WikiPrices\n",
" (1990 → 2018-03-27) + 1,711 from Yahoo (2018-03-28 → 2025-01-15),\n",
" for 26,474 total rows across the three symbols. The validator\n",
" flags 3 issues — one >5-day gap per symbol corresponding to the\n",
" 2001-09-10 → 09-17 NYSE closure following 9/11 — which is the\n",
" expected behaviour for the calendar-day gap heuristic on\n",
" pre-2018 data.\n",
"- **Equity-pipeline ETF caveat**: the *case study* universe\n",
" (SPY/QQQ/IWM/TLT/GLD) is index ETFs, which are **not** in WikiPrices.\n",
" Running the same pipeline on those tickers produces 0 WikiPrices\n",
" rows + Yahoo-only data starting 2018-03-28 — the multi-source\n",
" stitch is real for stocks, vacuous for ETFs.\n",
"- **Crypto pipeline (BTCUSDT, ETHUSDT from 2024-01-01)**: 17,544 hours\n",
" per symbol, 100 % coverage of the expected 24/7 window, zero\n",
" duplicate timestamps.\n",
"- **DataManager equivalent** (§5): the 5-symbol Yahoo-only fetch +\n",
" HiveStorage write + OHLCVValidator + GapDetector loop reproduces\n",
" the manual pipeline above in ~20 lines instead of ~150.\n",
"\n",
"### Implications for Practitioners\n",
"- **Tag the source**: a `source` column makes provider mismatches\n",
" debuggable and migrations safe.\n",
"- **Match validators to cadence**: equity validators reject >5-day\n",
" gaps as anomalies; crypto validators expect every hour and reject\n",
" any >1.5 h gap.\n",
"- **Promote to DataManager once the pipeline stabilises**: explicit\n",
" class-based pipelines are great for teaching, but the production\n",
" path is the higher-level API (storage + validation + universe\n",
" built in).\n",
"\n",
"**Next**: `18_data_management` walks the `DataManager`, `Universe`,\n",
"and `HiveStorage` API in depth; `19_incremental_updates` shows the\n",
"gap-detection + update-strategy patterns that make daily refreshes\n",
"cheap."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.14.3"
},
"papermill": {
"default_parameters": {},
"duration": 10.15384,
"end_time": "2026-05-17T00:28:29.839926+00:00",
"environment_variables": {},
"exception": null,
"input_path": "02_financial_data_universe/17_complete_pipeline.ipynb",
"output_path": "02_financial_data_universe/17_complete_pipeline.ipynb",
"parameters": {},
"start_time": "2026-05-17T00:28:19.686086+00:00",
"version": "2.7.0"
},
"ml4t_provenance": {
"source_py_blob": "0209d0baad5ff0e88c88b8c925f0aacaad67f650",
"executed_at": "2026-06-16T02:27:14.562359+00:00",
"executor": "cpu-local",
"production": true,
"parameters": {}
}
},
"nbformat": 4,
"nbformat_minor": 5
}