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.3.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.3-py3-none-any.whl (39.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: chronos_lab-0.1.3.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.3.tar.gz
Algorithm Hash digest
SHA256 28a68d49c42a03aaf2d9aee7aab8fbdac2ab6783c3abe6f61a74f5f13609c2fe
MD5 304564104f3e6e097b9df7847d04b72d
BLAKE2b-256 b17ce42b8b5cd8dc393c014935a3fd6f69291de94f4911db9d715ba939e2cb6f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chronos_lab-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 39.7 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 1818cd6c1e476d1e7f1fde8544d750a17b915c21248dec63e21bcb2ade328cd2
MD5 b53fb891e7e6ef057c75c88ca94645e1
BLAKE2b-256 858983b61d6c7e83bdf13c5b2756c1423c93a100a815f0168857064985bc5be5

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