← Files EdgePilot ResearchARCHIVED FILE

backtest_core_src/edgepilot_backtest_core/models.py

1.21 KB · Oct 2, 2026 · 00:31 UTC

↓ Download file

from __future__ import annotations

from dataclasses import dataclass, field
from datetime import datetime
from pathlib import Path
from typing import Any

from edgepilot_backtest_core.discovery import StrategyDescriptor


@dataclass(frozen=True)
class MarketRequest:
    instrument_id: str
    bar_type: str
    venue: str
    data_type: str = "bars"


@dataclass(frozen=True)
class VenueRequest:
    name: str
    adapter_options: dict[str, Any] = field(default_factory=dict)
    starting_balance: float = 100_000.0
    base_currency: str = "USDT"
    account_type: str = "MARGIN"
    oms_type: str = "NETTING"
    maker_fee_bps: float | None = None
    taker_fee_bps: float | None = None
    default_leverage: float = 1.0
    leverages: dict[str, float] | None = None
    allow_cash_borrowing: bool = False
    liquidation_enabled: bool = False
    liquidation_trigger_ratio: float = 1.0
    liquidation_cancel_open_orders: bool = True


@dataclass(frozen=True)
class BacktestRequest:
    strategy: StrategyDescriptor
    markets: tuple[MarketRequest, ...]
    venues: tuple[VenueRequest, ...]
    start: datetime
    end: datetime
    parameters: dict[str, Any]
    catalog_path: Path
    runs_path: Path
    preset_name: str | None = None

SHA-256: a96bc5362fb86c277306ece700e1846b6d5c3649b970a84f2366a5ae3a7d36a1