Quant.Explorer.SchemaStandardizer (quant v0.1.0-alpha.1)
Comprehensive schema standardization for financial data analysis.
This module provides unified parameter handling and output schema standardization across all providers to ensure complete interoperability for financial analysis.
Design Principles
- Universal Parameters: All providers accept the same parameter names
- Automatic Translation: Provider-specific parameters are translated internally
- Consistent Output: All DataFrames have identical schemas regardless of provider
- Type Safety: Strong typing and validation for all fields
- Timezone Handling: All timestamps normalized to UTC with timezone info
Summary
Functions
Standardizes historical data DataFrame to consistent schema.
Standardizes query parameters across all providers.
Standardizes quote data DataFrame to consistent schema.
Standardizes search results DataFrame to consistent schema.
Lists all supported currencies.
Lists all supported standard intervals.
Lists all supported standard periods.
Validates parameter compatibility with provider.
Functions
@spec standardize_history_schema( Explorer.DataFrame.t(), keyword() ) :: {:ok, Explorer.DataFrame.t()} | {:error, term()}
Standardizes historical data DataFrame to consistent schema.
Standard Historical Data Schema
symbol(string): Stock/crypto symboltimestamp(datetime): UTC timestamp with timezone infoopen(f64): Opening pricehigh(f64): Highest pricelow(f64): Lowest priceclose(f64): Closing pricevolume(s64): Trading volumeadj_close(f64): Adjusted closing price (when available)market_cap(f64): Market capitalization (crypto only)provider(string): Data source providercurrency(string): Price currencytimezone(string): Original timezone
Standardizes query parameters across all providers.
Standard Parameters
:interval- Time interval: "1m", "5m", "15m", "30m", "1h", "1d", "1w", "1mo":period- Time period: "1d", "5d", "1mo", "3mo", "6mo", "1y", "2y", "5y", "10y", "max":limit- Number of data points to return (integer):start_date- Start date (Date, DateTime, or ISO string):end_date- End date (Date, DateTime, or ISO string):currency- Base currency for crypto quotes: "usd", "eur", "btc", "eth":adjusted- Whether to use adjusted prices (boolean, default: true):api_key- API key for authentication
Returns
{:ok, standardized_params} or {:error, reason}
@spec standardize_quote_schema( Explorer.DataFrame.t(), keyword() ) :: {:ok, Explorer.DataFrame.t()} | {:error, term()}
Standardizes quote data DataFrame to consistent schema.
Standard Quote Data Schema
symbol(string): Stock/crypto symbolprice(f64): Current pricechange(f64): Absolute price changechange_percent(f64): Percentage changevolume(s64): Current/24h volumehigh_24h(f64): 24-hour high pricelow_24h(f64): 24-hour low pricemarket_cap(f64): Market capitalization (when available)timestamp(datetime): UTC timestampprovider(string): Data source providercurrency(string): Quote currencymarket_state(string): Market state (open/closed/pre/post)
@spec standardize_search_schema( Explorer.DataFrame.t(), keyword() ) :: {:ok, Explorer.DataFrame.t()} | {:error, term()}
Standardizes search results DataFrame to consistent schema.
Standard Search Results Schema
symbol(string): Trading symbolname(string): Full company/asset nametype(string): Asset type (stock, etf, crypto, forex, index)exchange(string): Primary exchangecurrency(string): Trading currencycountry(string): Country/regionsector(string): Business sector (when available)industry(string): Industry classification (when available)market_cap(f64): Market capitalization (when available)provider(string): Data source providermatch_score(f64): Search relevance score (0.0 - 1.0)
@spec supported_currencies() :: [String.t()]
Lists all supported currencies.
@spec supported_intervals() :: [String.t()]
Lists all supported standard intervals.
@spec supported_periods() :: [String.t()]
Lists all supported standard periods.
Validates parameter compatibility with provider.