Skip to main content

tickerflow

One await fetch() call. Crypto, stocks, forex. Zero API keys. Automatic provider fallback.

CI PyPI Python License GitHub Stars


from tickerflow import fetch

candles = await fetch("BTCUSDT")   # crypto  → Binance → CoinGecko → Kraken → KuCoin → yfinance
candles = await fetch("AAPL")      # stocks  → yfinance → Tiingo → Finnhub
candles = await fetch("EURUSD")    # forex   → yfinance → Finnhub

One function. Any ticker. Any asset class. If the first provider fails, the next one picks up — automatically. No API keys needed for basic use.

demo

Install

pip install tickerflow

Extras for power users:

pip install "tickerflow[pandas]"   # DataFrame output
pip install "tickerflow[serve]"    # self-hosted API server
pip install "tickerflow[chart]"    # terminal charts
pip install "tickerflow[ai]"       # Pydantic AI integration
pip install "tickerflow[all]"      # everything

Quick Start

import asyncio
from tickerflow import fetch

async def main():
    # Fetch 10 daily candles — provider is auto-selected
    candles = await fetch("BTCUSDT", interval="1d", limit=10)
    for c in candles[-3:]:
        print(f"{c.time}  O:{c.open:.2f}  H:{c.high:.2f}  L:{c.low:.2f}  C:{c.close:.2f}")

    # Want a DataFrame instead? One flag.
    df = await fetch("AAPL", interval="1d", limit=30, as_dataframe=True)
    print(df.describe())

asyncio.run(main())

CLI

# Auto-routes to the best provider
tickerflow fetch BTCUSDT 1d 10

# Force a provider
tickerflow fetch EURUSD 1d 20 --provider yfinance

# Output formats
tickerflow fetch AAPL 1d 10 --csv
tickerflow fetch AAPL 1d 10 --json

# Terminal chart — screenshot-worthy
tickerflow chart BTCUSDT 1d 30

# Self-hosted market data API
tickerflow serve --port 8000

Terminal Chart

Render OHLCV data directly in your terminal with tickerflow chart:

tickerflow chart BTCUSDT 1d 30

Renders Unicode candlestick charts with ANSI green/red coloring and a volume pane — pure stdlib, zero dependencies. Supports --no-color and respects NO_COLOR.

No extra install needed — included in the base package.

Self-Hosted API

One command starts a FastAPI server with live market data endpoints:

tickerflow serve --port 8000

Then:

curl localhost:8000/ohlcv/BTCUSDT?interval=1d&limit=5
curl localhost:8000/providers/BTCUSDT
curl localhost:8000/health

Returns structured JSON — plug it into any frontend, dashboard, or automation. No rate limit, no vendor lock-in, runs on your machine.

Requires: pip install "tickerflow[serve]"

DataFrame Output

90% of Python finance users want a DataFrame. One flag:

df = await fetch("BTCUSDT", interval="1d", limit=30, as_dataframe=True)
print(df.describe())

Returns a pandas.DataFrame with columns time (UTC datetime), open, high, low, close, volume.

Requires: pip install "tickerflow[pandas]"

Provider Routing

The router automatically detects asset class from the symbol and tries providers in order. If one fails, the next picks up.

BTCUSDT  →  Binance  →  CoinGecko  →  Kraken  →  KuCoin  →  yfinance
AAPL     →  yfinance  →  Tiingo (daily/weekly)  →  Finnhub
WM.TO    →  yfinance  →  Finnhub
EURUSD   →  yfinance  →  Finnhub

fallback

Provider Latency Key required Asset classes
Binance ~50–150 ms No Crypto
KuCoin ~100–200 ms No Crypto
Kraken ~100–250 ms No Crypto
CoinGecko ~200–400 ms No Crypto
yfinance ~300–800 ms No Stocks, Forex, Crypto
Tiingo ~200–400 ms Yes (free) Stocks, ETFs
Finnhub ~200–500 ms Yes (paid) Stocks, Forex

Supported Intervals

1m · 5m · 15m · 1h · 4h · 1d · 1w

Caching

Responses are cached in memory with interval-aware TTLs:

Interval TTL
1m 30s
5m 2 min
15m 5 min
1h 30 min
4h 2h
1d 4h
1w 24h

Disable: OHLCV_CACHE_ENABLED=false

Pydantic AI Integration

Use tickerflow as a tool in your Pydantic AI agents:

from pydantic_ai import Agent
from tickerflow import fetch

agent = Agent("openai:gpt-4o", instructions="You are a market analyst.")

@agent.tool
async def fetch_market_data(ctx, symbol: str, interval: str = "1d", limit: int = 30) -> str:
    candles = await fetch(symbol, interval=interval, limit=limit)
    if not candles:
        return f"No data for {symbol}"
    last = candles[-1]
    return f"{symbol}: O={last.open:.2f} H={last.high:.2f} L={last.low:.2f} C={last.close:.2f}"

See examples/pydantic_ai_agent.py for a complete working agent.

Requires: pip install "tickerflow[ai]"

Why This Exists

I built tickerflow because I was tired of wiring up different API clients for crypto vs stocks vs forex. I wanted one async fetch() call that handles everything — and falls back automatically when a provider is down.

This is the market data layer for my Pydantic AI Pine Script Expert agent. If you're building AI agents, trading bots, or data pipelines that need multi-asset OHLCV data with zero configuration — this is it.

Examples

See examples/ for runnable scripts:

Roadmap

Shipped in v0.2

  • pandas DataFrame output
  • tickerflow serve — self-hosted FastAPI market data API
  • tickerflow chart — terminal candlestick charts
  • Pydantic AI integration example

Planned

  • OKX and Bybit providers
  • WebSocket streaming
  • Async context manager support

Contributing

See CONTRIBUTING.md for development setup, how to add providers, and PR guidelines.

License

MIT

Download files

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

Source Distribution

tickerflow-0.2.5.tar.gz (35.4 kB view details)

Uploaded Source

Built Distribution

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

tickerflow-0.2.5-py3-none-any.whl (29.6 kB view details)

Uploaded Python 3

File details

Details for the file tickerflow-0.2.5.tar.gz.

File metadata

  • Download URL: tickerflow-0.2.5.tar.gz
  • Upload date:
  • Size: 35.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.2

File hashes

Hashes for tickerflow-0.2.5.tar.gz
Algorithm Hash digest
SHA256 d235905ce2850c097dd9d09e98e7710eef907e7ee4600ca8b1f3fdb6a936fb7e
MD5 9ae346eb6295253f7805bd0b7cb9c164
BLAKE2b-256 e8c8c286586a84f0bc25aa215b524d7ae2f74a969946613d578cd6da218bcc97

See more details on using hashes here.

File details

Details for the file tickerflow-0.2.5-py3-none-any.whl.

File metadata

  • Download URL: tickerflow-0.2.5-py3-none-any.whl
  • Upload date:
  • Size: 29.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.2

File hashes

Hashes for tickerflow-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 d72aea714dfa2d38ab052fa762125e427c6124b3eb57f9363b6d8ed9f0226ca6
MD5 46e9afb41dc2fd39adc2073cafee9b0b
BLAKE2b-256 11fd970a21d0724e5aaca68802a4a502c84cf36384b47b01abad6beb3de6ef6d

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.5 This release

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

Supported by

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