Skip to main content

Time series research laboratory

Project description

chronos-lab

A lightweight Python library for time series financial data analysis with modular architecture. Install only what you need—from minimal data fetching to full-featured storage capabilities.

Features

Modular Design: Install only what you need with optional extras 📊 Multiple Data Sources: Yahoo Finance (free) and Intrinio (institutional) ⚡ High-Performance Storage: ArcticDB for time series, datasets for metadata 🔄 Flexible Outputs: MultiIndex DataFrames or symbol dictionaries 📈 Intraday Support: 1m, 5m, 15m, 1h bars for algorithmic trading 🌐 Distributed Workflows: DynamoDB datasets for multi-process coordination

📚 Read the full documentation

Installation

Requires Python 3.12+ on macOS or Linux.

# Quick start: Yahoo Finance only
uv pip install chronos-lab[yfinance]

# With persistence: Add ArcticDB storage
uv pip install chronos-lab[yfinance,arcticdb]

# Professional: Add Intrinio data
uv pip install chronos-lab[yfinance,intrinio,arcticdb]

# With AWS: Add S3 and DynamoDB support
uv pip install chronos-lab[yfinance,arcticdb,aws]

Or with pip:

pip install chronos-lab[yfinance,arcticdb]

Configuration

On first import, chronos-lab creates ~/.chronos_lab/.env with default settings:

# Edit configuration
nano ~/.chronos_lab/.env

Configure API keys (Intrinio), storage paths (ArcticDB, datasets), and logging. All settings support environment variable overrides. See the Configuration Guide for details.

Quick Start

Fetching Market Data

Get daily or intraday price data with one line:

from chronos_lab.sources import ohlcv_from_yfinance

# Daily data for the last year
prices = ohlcv_from_yfinance(
    symbols=['AAPL', 'MSFT', 'GOOGL'],
    period='1y'
)

# 5-minute intraday bars
intraday = ohlcv_from_yfinance(
    symbols=['SPY', 'QQQ'],
    period='5d',
    interval='5m'
)

Returns a MultiIndex DataFrame with (date, symbol) levels for easy multi-symbol analysis.

Persistent Storage

Time Series Storage (ArcticDB)

Store OHLCV data in high-performance ArcticDB for later retrieval:

from chronos_lab.sources import ohlcv_from_yfinance
from chronos_lab.storage import ohlcv_to_arcticdb

# Fetch and store
prices = ohlcv_from_yfinance(symbols=['AAPL', 'MSFT', 'GOOGL'], period='1y')
ohlcv_to_arcticdb(ohlcv=prices, library_name='yfinance', adb_mode='write')

# Read back with date filtering and pivoting
from chronos_lab.sources import ohlcv_from_arcticdb

wide_prices = ohlcv_from_arcticdb(
    symbols=['AAPL', 'MSFT', 'GOOGL'],
    period='3m',
    columns=['close'],
    pivot=True,
    group_by='column',
    library_name='yfinance'
)

Structured Data Storage (Datasets)

Store watchlists, portfolio compositions, and security metadata as datasets:

from chronos_lab.storage import to_dataset
from chronos_lab.sources import from_dataset, ohlcv_from_yfinance

# Create and store a watchlist
watchlist = {
    'big_tech': ['AAPL', 'MSFT', 'GOOGL', 'AMZN', 'META'],
    'semiconductors': ['NVDA', 'AMD', 'INTC', 'TSM', 'QCOM']
}
to_dataset(dataset_name='my_watchlist', dataset=watchlist)

# Load watchlist and fetch prices
saved_watchlist = from_dataset(dataset_name='my_watchlist', output_dict=True)
all_symbols = saved_watchlist['big_tech'] + saved_watchlist['semiconductors']

prices = ohlcv_from_yfinance(
    symbols=all_symbols,
    period='5d'
)

print(f"Fetched {len(all_symbols)} symbols: {prices.shape}")

Datasets vs ArcticDB: Use datasets for structured metadata (portfolios, watchlists, security details) and ArcticDB for time series (OHLCV prices). In distributed environments, datasets can be stored in DynamoDB for multi-process workflows.

Institutional Data (Intrinio)

Access professional financial data with an Intrinio subscription:

from chronos_lab.sources import ohlcv_from_intrinio

prices = ohlcv_from_intrinio(
    symbols=['AAPL', 'MSFT'],
    start_date='2024-01-01',
    interval='daily'  # or '5m', '1h', etc.
)

Documentation

Why chronos-lab?

Modular: Start with just Yahoo Finance, add ArcticDB when you need persistence, scale to Intrinio for institutional data.

Fast: ArcticDB provides columnar storage optimized for time series queries. Datasets offer instant metadata lookups.

Flexible: MultiIndex DataFrames for analysis, pivoted wide format for charting, symbol dictionaries for individual processing.

Production-Ready: S3 backend for ArcticDB, DynamoDB for datasets, environment-based configuration for dev/staging/prod.

License

MIT License - see LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chronos_lab-0.1.4.tar.gz (132.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chronos_lab-0.1.4-py3-none-any.whl (39.6 kB view details)

Uploaded Python 3

File details

Details for the file chronos_lab-0.1.4.tar.gz.

File metadata

  • Download URL: chronos_lab-0.1.4.tar.gz
  • Upload date:
  • Size: 132.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for chronos_lab-0.1.4.tar.gz
Algorithm Hash digest
SHA256 d1de0d2fba5f3c461405f7d4004313a2006fd1b30a64de172a0042f534bd48da
MD5 da88d23ade8d8f5eebdf4aea0588b5bd
BLAKE2b-256 e83f1a65df4029755dd7b04a1e71c215463d47690c393d6c029d7997d60c894b

See more details on using hashes here.

File details

Details for the file chronos_lab-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: chronos_lab-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 39.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for chronos_lab-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 19272e829622eb5e10caa17e7a828ade284c4353293c7a80c55adc02afcdfdae
MD5 02103f618f447843b67fb99cfb0a27e6
BLAKE2b-256 d9ca8269409cfcb4750e78760e100d14b2b349e56f4ce3b337504f778718b139

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page