investfly.models.strategy.StrategyExecutionContext

Strategy execution context.

This module defines the StrategyExecutionContext dataclass that provides deployment-specific context data to strategy instances during execution.

@dataclass
class StrategyExecutionContext:

Execution context for a strategy instance.

The execution context contains per-execution data that is specific to a strategy deployment. This context is created by the execution engine and injected into strategy instances before their methods are called.

The context provides deployment-agnostic access to:

  • Portfolio state (positions, balances, performance)
  • Universe securities (resolved list of securities to evaluate)

Attributes: portfolio: The current portfolio state containing open/closed positions, balances, and performance as returned by the portfolio API (virtual or broker-backed). This is broker-derived account state only — it does not include application-defined groupings of option legs (brokers do not expose multi-leg structure after fill). openOptionGroups: Engine-supplemented view of multi-leg option structures for this tick. Populated in backtest by reconstructing groups from open option positions; live execution hydrates Java's reconciled open-position-group endpoint. Used for group-level exit logic (e.g. DTE cutoff) that requires knowing which legs belong together, including underlying stock/ETF legs for buy-write structures. universeSecurities: List of Security objects representing all securities in the strategy's trading universe. This is the resolved list based on the security universe selector returned by TradingStrategy.getSecurityUniverseSelector().

Example: The execution engine creates and injects the context:

context = StrategyExecutionContext(
    portfolio=current_portfolio,
    universeSecurities=resolved_securities
)
strategy.setContext(context)
Strategies access context data via convenience methods:
portfolio = self.getPortfolio()
universe = self.getUniverseSecurities()
StrategyExecutionContext( portfolio: investfly.models.portfolio.Portfolio, universeSecurities: List[investfly.models.marketdata.Security], currentTime: datetime.datetime, openOptionGroups: List[investfly.models.portfolio.OptionPositionGroup] = <factory>)
universeSecurities: List[investfly.models.marketdata.Security]
currentTime: datetime.datetime