"""
Type stubs for Tepilora Analytics API.

AUTO-GENERATED by scripts/generate_sdk.py - DO NOT EDIT MANUALLY!
Provides IDE autocomplete for dynamic analytics methods.
"""
from __future__ import annotations

from dataclasses import dataclass
from typing import Any, Dict, List, Optional, Union


@dataclass(frozen=True)
class AnalyticsFunction:
    """Callable analytics function with introspection."""
    _api: AnalyticsAPI
    name: str

    def __call__(
        self,
        *,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
        **params: Any,
    ) -> Any: ...

    def info(self, *, refresh: bool = False) -> Dict[str, Any]: ...
    def help(self) -> str: ...


@dataclass(frozen=True)
class AsyncAnalyticsFunction:
    """Async callable analytics function."""
    _api: AsyncAnalyticsAPI
    name: str

    async def __call__(
        self,
        *,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
        **params: Any,
    ) -> Any: ...

    async def info(self, *, refresh: bool = False) -> Dict[str, Any]: ...
    async def help(self) -> str: ...


class AnalyticsAPI:
    """Analytics API with 68 operations.

    All methods support:
    - as_table: Return as 'pandas', 'polars', or 'pyarrow' DataFrame
    - strict: Validate parameters against schema
    """

    def __init__(self, client: Any) -> None: ...

    def list(self, *, category: Optional[str] = None, refresh: bool = False) -> Dict[str, Any]:
        """List available analytics functions."""
        ...

    def info(self, function: str, *, refresh: bool = False) -> Dict[str, Any]:
        """Get detailed info for a function."""
        ...

    def help(self, function: Optional[str] = None) -> str:
        """Get help text for a function or list all."""
        ...

    def search(self, text: str, *, category: Optional[str] = None) -> List[str]:
        """Search functions by name."""
        ...

    def schema(self, function: str) -> Dict[str, Any]:
        """Get parameter schema for a function."""
        ...

    def example(self, function: str, *, identifiers: Optional[Any] = None, **overrides: Any) -> str:
        """Get example code for a function."""
        ...

    def __getattr__(self, name: str) -> AnalyticsFunction: ...
    def __dir__(self) -> List[str]: ...

    def annual_returns(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Annualized returns

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def annual_volatility(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Annualized volatility

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def average_drawdown(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Average drawdown

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def batch(
        self,
        *,
        operations: List[Any],
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Batch analytics

        Args:
            operations: List of operations [{function, params}]
            identifiers: List of TepiloraCodes
            prices: Shared prices data
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def best_period(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Best period return

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def burke_ratio(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Burke ratio

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def capture_ratio(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Up/down capture ratio

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def cumulative_performance(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Cumulative performance

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def downside_capture(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Downside capture

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def downside_deviation(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Downside deviation

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def drawdown(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Drawdown series

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def drawdown_duration(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Drawdown duration

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def egarch_volatility(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """EGARCH volatility

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def factor_attribution(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Factor attribution

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def factor_regression(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        model: Optional[str] = "FF3",
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Factor regression (FF3/FF5)

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            model: FF3|FF5|Carhart
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def gain_loss_ratio(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Gain/loss ratio

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def garch_forecast(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        horizon: Optional[int] = 10,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """GARCH forecast

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            horizon: Forecast horizon
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def garch_volatility(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """GARCH volatility

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def hurst_exponent(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Hurst exponent

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def info(
        self,
        *,
        function: str,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Get function info

        Args:
            function: Function name
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def list(
        self,
        *,
        category: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """List analytics functions

        Args:
            category: Filter by category
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def log_returns(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Log returns

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def max_drawdown(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Maximum drawdown

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def momentum(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 21,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Momentum indicator

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Lookback period
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def monthly_returns(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Monthly returns

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def monthly_volatility(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Monthly volatility

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def omega_ratio(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        threshold: Optional[float] = 0.0,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Omega ratio

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            threshold: Return threshold
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def pain_index(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Pain index

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def profit_factor(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Profit factor

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rate_of_change(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 21,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rate of change

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Lookback period
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def relative_strength(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Relative strength

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def returns(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Simple returns

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_alpha(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        rf: Optional[float] = 0.0,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling alpha

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            rf: Risk-free rate
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_autocorrelation(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 63,
        lag: Optional[int] = 1,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling autocorrelation

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            lag: Autocorrelation lag
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_beta(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling beta

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_beta_timing(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling beta timing

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_cagr(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling CAGR

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_calmar(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling Calmar ratio

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_correlation(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 63,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling correlation

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_covariance(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 63,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling covariance

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_cvar(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        confidence: Optional[float] = 0.95,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling CVaR (Expected Shortfall)

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            confidence: Confidence level
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_downside_beta(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling downside beta

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_factor_regression(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        model: Optional[str] = "FF3",
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling factor regression

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            model: FF3|FF5|Carhart
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_garch(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling GARCH

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_information_ratio(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling information ratio

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_kurtosis(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 63,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling kurtosis

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_r_squared(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling R-squared

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_regression(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling regression

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_residuals(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling residuals

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_sharpe(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        rf: Optional[float] = 0.0,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling Sharpe ratio

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            rf: Risk-free rate
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_skewness(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 63,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling skewness

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_sortino(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        rf: Optional[float] = 0.0,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling Sortino ratio

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            rf: Risk-free rate
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_treynor(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        rf: Optional[float] = 0.0,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling Treynor ratio

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            rf: Risk-free rate
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_upside_beta(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling upside beta

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_var(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        confidence: Optional[float] = 0.95,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling Value at Risk

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            confidence: Confidence level
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_variance(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 21,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling variance

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def rolling_volatility(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 21,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling volatility

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def semi_deviation(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Semi-deviation

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def semi_variance(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Semi-variance

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def sterling_ratio(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Sterling ratio

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def tail_ratio(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Tail ratio

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def tracking_error(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Tracking error

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def tracking_error_volatility(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Tracking error volatility

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def ulcer_index(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Ulcer index

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def upside_capture(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Upside capture

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def upside_deviation(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Upside deviation

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def win_rate(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Win rate (% positive periods)

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    def worst_period(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Worst period return

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...


class AsyncAnalyticsAPI:
    """Async Analytics API with 68 operations."""

    def __init__(self, client: Any) -> None: ...

    async def list(self, *, category: Optional[str] = None, refresh: bool = False) -> Dict[str, Any]: ...
    async def info(self, function: str, *, refresh: bool = False) -> Dict[str, Any]: ...
    async def help(self, function: Optional[str] = None) -> str: ...
    async def search(self, text: str, *, category: Optional[str] = None) -> List[str]: ...
    async def schema(self, function: str) -> Dict[str, Any]: ...
    def __getattr__(self, name: str) -> AsyncAnalyticsFunction: ...

    async def annual_returns(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Annualized returns

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def annual_volatility(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Annualized volatility

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def average_drawdown(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Average drawdown

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def batch(
        self,
        *,
        operations: List[Any],
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Batch analytics

        Args:
            operations: List of operations [{function, params}]
            identifiers: List of TepiloraCodes
            prices: Shared prices data
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def best_period(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Best period return

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def burke_ratio(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Burke ratio

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def capture_ratio(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Up/down capture ratio

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def cumulative_performance(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Cumulative performance

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def downside_capture(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Downside capture

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def downside_deviation(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Downside deviation

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def drawdown(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Drawdown series

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def drawdown_duration(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Drawdown duration

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def egarch_volatility(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """EGARCH volatility

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def factor_attribution(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Factor attribution

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def factor_regression(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        model: Optional[str] = "FF3",
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Factor regression (FF3/FF5)

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            model: FF3|FF5|Carhart
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def gain_loss_ratio(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Gain/loss ratio

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def garch_forecast(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        horizon: Optional[int] = 10,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """GARCH forecast

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            horizon: Forecast horizon
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def garch_volatility(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """GARCH volatility

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def hurst_exponent(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Hurst exponent

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def info(
        self,
        *,
        function: str,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Get function info

        Args:
            function: Function name
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def list(
        self,
        *,
        category: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """List analytics functions

        Args:
            category: Filter by category
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def log_returns(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Log returns

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def max_drawdown(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Maximum drawdown

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def momentum(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 21,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Momentum indicator

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Lookback period
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def monthly_returns(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Monthly returns

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def monthly_volatility(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Monthly volatility

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def omega_ratio(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        threshold: Optional[float] = 0.0,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Omega ratio

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            threshold: Return threshold
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def pain_index(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Pain index

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def profit_factor(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Profit factor

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rate_of_change(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 21,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rate of change

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Lookback period
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def relative_strength(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Relative strength

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def returns(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Simple returns

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_alpha(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        rf: Optional[float] = 0.0,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling alpha

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            rf: Risk-free rate
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_autocorrelation(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 63,
        lag: Optional[int] = 1,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling autocorrelation

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            lag: Autocorrelation lag
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_beta(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling beta

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_beta_timing(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling beta timing

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_cagr(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling CAGR

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_calmar(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling Calmar ratio

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_correlation(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 63,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling correlation

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_covariance(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 63,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling covariance

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_cvar(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        confidence: Optional[float] = 0.95,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling CVaR (Expected Shortfall)

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            confidence: Confidence level
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_downside_beta(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling downside beta

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_factor_regression(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        model: Optional[str] = "FF3",
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling factor regression

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            model: FF3|FF5|Carhart
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_garch(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling GARCH

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_information_ratio(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling information ratio

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_kurtosis(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 63,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling kurtosis

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_r_squared(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling R-squared

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_regression(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling regression

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_residuals(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling residuals

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_sharpe(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        rf: Optional[float] = 0.0,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling Sharpe ratio

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            rf: Risk-free rate
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_skewness(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 63,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling skewness

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_sortino(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        rf: Optional[float] = 0.0,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling Sortino ratio

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            rf: Risk-free rate
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_treynor(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        rf: Optional[float] = 0.0,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling Treynor ratio

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            rf: Risk-free rate
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_upside_beta(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling upside beta

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_var(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 252,
        confidence: Optional[float] = 0.95,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling Value at Risk

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            confidence: Confidence level
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_variance(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 21,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling variance

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def rolling_volatility(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        period: Optional[int] = 21,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Rolling volatility

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            period: Rolling window
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def semi_deviation(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Semi-deviation

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def semi_variance(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Semi-variance

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def sterling_ratio(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Sterling ratio

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def tail_ratio(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Tail ratio

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def tracking_error(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Tracking error

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def tracking_error_volatility(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Tracking error volatility

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def ulcer_index(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Ulcer index

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def upside_capture(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Upside capture

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def upside_deviation(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Upside deviation

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def win_rate(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Win rate (% positive periods)

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...
    async def worst_period(
        self,
        *,
        identifiers: Optional[Union[str, List[str]]] = None,
        prices: Optional[Dict[str, Any]] = None,
        prices_file: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
        options: Optional[Dict[str, Any]] = None,
        context: Optional[Dict[str, Any]] = None,
        response_format: Optional[str] = None,
        as_table: Optional[str] = None,
        strict: bool = False,
    ) -> Any:
        """Worst period return

        Args:
            identifiers: List of TepiloraCodes
            prices: User-provided prices (DataFrame or dict)
            prices_file: Path to prices file
            start_date: Start date (YYYY-MM-DD)
            end_date: End date (YYYY-MM-DD)
            as_table: Return as 'pandas', 'polars', or 'pyarrow'
            strict: Validate params against schema
        """
        ...


class _ModuleAnalyticsProxy:
    """Module-level proxy for analytics."""
    def __getattr__(self, name: str) -> Any: ...
    def __dir__(self) -> List[str]: ...


analytics: _ModuleAnalyticsProxy
