Quant.Explorer (quant v0.1.0-alpha.1)

Quant.Explorer - High-performance standardized financial data API for Elixir.

Fetch financial and cryptocurrency data from multiple providers with universal parameters and identical output schemas for seamless analysis.

Key Features

  • Universal Parameters: Same parameters work with ALL providers
  • Identical Schemas: All DataFrames have consistent column structures
  • High Performance: Built on Explorer's Polars backend
  • Type Safety: Strong typing and validation throughout
  • Multi-Provider: Yahoo Finance, Alpha Vantage, Binance, CoinGecko, Twelve Data

Quick Start

# Universal parameters work with any provider
{:ok, df} = Quant.Explorer.history("AAPL",
  provider: :yahoo_finance, interval: "1d", period: "1y")

{:ok, df} = Quant.Explorer.history("BTCUSDT",
  provider: :binance, interval: "1d", period: "1y")

# All DataFrames have identical schemas - combine seamlessly
DataFrame.concat_rows(df1, df2)

Standardized Parameters

  • :provider - Data provider (:yahoo_finance, :alpha_vantage, :binance, :coin_gecko, :twelve_data)
  • :interval - Standard intervals: "1m", "5m", "15m", "30m", "1h", "1d", "1w", "1mo"
  • :period - Standard periods: "1d", "5d", "1mo", "3mo", "6mo", "1y", "2y", "5y", "10y", "max"
  • :limit - Number of data points (1-5000)
  • :start_date/:end_date - Date range (Date, DateTime, or ISO string)
  • :currency - Base currency: "usd", "eur", "btc", "eth"
  • :api_key - API key for authentication

Summary

Functions

Gets configuration information for the library.

Alias for history/2. Deprecated - use history/2 directly.

Fetches standardized historical data with universal parameters.

Fetches company/asset information. Note: Info structure varies between providers and is not fully standardized.

Lists all available providers and their status.

Fetches standardized real-time quotes with universal parameters.

Searches for symbols with standardized results.

Lists supported currencies for crypto providers.

Lists supported standard intervals.

Lists supported standard periods.

Types

options()

@type options() :: keyword()

provider()

@type provider() :: atom()

symbol()

@type symbol() :: String.t()

symbols()

@type symbols() :: [symbol()]

Functions

config()

@spec config() :: map()

Gets configuration information for the library.

fetch(symbols, opts \\ [])

@spec fetch(symbol() | symbols(), options()) ::
  {:ok, Explorer.DataFrame.t()} | {:error, term()}

Alias for history/2. Deprecated - use history/2 directly.

history(symbols, opts \\ [])

@spec history(symbol() | symbols(), options()) ::
  {:ok, Explorer.DataFrame.t()} | {:error, term()}

Fetches standardized historical data with universal parameters.

All providers return identical DataFrame schemas with these columns:

  • symbol, timestamp, open, high, low, close, volume
  • adj_close, market_cap, provider, currency, timezone

Examples

# Same parameters work with any provider
{:ok, df} = Quant.Explorer.history("AAPL", provider: :yahoo_finance, interval: "1d", period: "1y")
{:ok, df} = Quant.Explorer.history("BTCUSDT", provider: :binance, interval: "1d", period: "1y")

# Combine data from multiple providers seamlessly
DataFrame.concat_rows(df1, df2)

info(symbol, opts \\ [])

@spec info(symbol(), options()) :: {:ok, map()} | {:error, term()}

Fetches company/asset information. Note: Info structure varies between providers and is not fully standardized.

providers()

@spec providers() :: map()

Lists all available providers and their status.

quote(symbols, opts \\ [])

@spec quote(symbol() | symbols(), options()) ::
  {:ok, Explorer.DataFrame.t()} | {:error, term()}

Fetches standardized real-time quotes with universal parameters.

All providers return identical DataFrame schemas with these columns:

  • symbol, price, change, change_percent, volume, high_24h, low_24h
  • market_cap, timestamp, provider, currency, market_state

search(query, opts \\ [])

@spec search(String.t(), options()) ::
  {:ok, Explorer.DataFrame.t()} | {:error, term()}

Searches for symbols with standardized results.

All providers return identical DataFrame schemas with these columns:

  • symbol, name, type, exchange, currency, country
  • sector, industry, market_cap, provider, match_score

supported_currencies()

@spec supported_currencies() :: [String.t()]

Lists supported currencies for crypto providers.

supported_intervals()

@spec supported_intervals() :: [String.t()]

Lists supported standard intervals.

supported_periods()

@spec supported_periods() :: [String.t()]

Lists supported standard periods.