Vibeleaderboard
Index / tool
Visit github.com
Category
Finance
Rank
No. 1505Tools index

Previous survey · No. 1447 ·

Pricing
Open Source
Type
TOOL
Builder
@joemccann
GitHub
182 stars
Date

About

A local-first financial data warehouse built for quantitative analysts and traders to store, analyze, and backtest market data across equities, futures, and volatility indices. Uses Parquet for storage, DuckDB for analytics, and supports production workflows with ClickHouse.

What it does

It collects daily price and volume bars, keeps one canonical snapshot per symbol, and rebuilds an analytical database when needed. Ingestion can fill historical gaps, validate records, preserve existing history, and replace snapshots atomically. Separate schemas handle equities, volatility products, and futures.

Why it's ranked here

The design makes a strong research foundation because canonical files remain independent of the analytical database, and failed updates should not expose partial snapshots. The verdict is mixed for heavier operations: current merges rewrite each symbol’s full history, while the repository’s own blueprint identifies missing leases, staged manifests, and stronger run coordination.

What's good

Atomic publication is concrete, not aspirational: temporary Parquet output is read back, checked, then replaced in one filesystem operation. Stable symbol identifiers survive rebuilds. Gap-only updates reduce unnecessary vendor requests, while Nasdaq and Stooq form an ordered recovery chain when Interactive Brokers misses a daily equity bar.

Tradeoffs

Setup carries substantial operational weight. Interactive Brokers ingestion needs an account and a running gateway, with two-factor authentication still part of the workflow. The documented environment targets modern macOS tooling. Full-history snapshot rewrites make small updates increasingly expensive, and cursor state does not prevent overlapping backfills or track window-level ownership.

How to use it well

Use it when a Python-oriented quant workflow needs reproducible daily datasets that remain queryable without a permanently running database service. Keep Parquet authoritative, rebuild DuckDB for local analysis, and add ClickHouse only for concurrent or larger queries. Treat it as data infrastructure, not a finished strategy, attribution, or visualization framework.

Technical notes+

clients/bronze_client.py defines PyArrow schemas for equity, volatility, and futures snapshots, merges rows by trade date, writes Snappy Parquet to a temporary sibling, validates it, and publishes with os.replace(). clients/db_client.py creates DuckDB tables and unique indexes, but its daily inserts iterate row by row and skip constraint conflicts. clients/ib_client.py wraps ib_insync, retries successive client IDs after error 326, and includes portfolio, market-data, and order operations. clients/daily_bar_fallback.py queries Nasdaq stocks, then ETFs, then Stooq, with throttling and retry handling. pyproject.toml requires Python 3.12 and configures pytest plus 100 percent coverage enforcement for clients and scripts, excluding clients/ib_client.py. package.json is a private Node 22 alert package whose sole runtime dependency is Nodemailer. docs/observability_defensive_blueprint.md explicitly records remaining full-snapshot rewrite, cursor ownership, leasing, and staged-manifest gaps.

Observed

License
MIT
Primary language
Python, with a small private Node.js alerts component
Installation surface
Shell bootstrap script, Python 3.12 or newer, and npm for alerting dependencies
Interfaces
Command-line ingestion and maintenance scripts plus importable Python clients
Platform support
macOS is listed as required, with Apple Silicon recommended
Canonical storage
Per-symbol Parquet snapshots compressed with Snappy
Analytics engines
DuckDB locally, with optional ClickHouse for aggregation and concurrency
Data providers
Interactive Brokers and CBOE for ingestion, with Nasdaq and Stooq fallback handling for daily U.S. equity bars

Read from README.md, package.json, pyproject.toml, docs/ib_tws_api.md, docs/backtesting.md, docs/observability_defensive_blueprint.md, clients/__init__.py, clients/db_client.py, clients/ib_client.py, clients/uw_client.py, clients/symbol_ids.py, clients/bronze_client.py, clients/daily_bar_fallback.py.

What it can do

  • Store historical OHLCV market data

    Historical price data (Open, High, Low, Close, Volume) for equities, futures, and volatility indicesOrganized data warehouse with Parquet file storage

  • Analyze market data with SQL queries

    SQL queries and stored market dataQuery results and analytics insights using DuckDB

  • Backtest trading strategies

    Trading strategy parameters and historical market dataBacktesting results and performance metrics

  • Convert daily bar data to production analytics format

    Daily OHLCV bar dataProduction-ready analytics data structures

  • Export data to ClickHouse for production workflows

    Processed market data from local warehouseData transferred to ClickHouse production environment

  • Process multi-asset class financial data

    Raw market data from equities, futures, and volatility indicesNormalized and structured financial datasets

Tags

financetradingdata-warehousequantitativemarket-dataparquetduckdbbacktesting

Tech Stack

Node.jsPython

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.