investfly.models.strategy.StandardStrategyConfig

@dataclass
class StandardStrategyConfig:

Configuration-based standard strategy contract shared with the Java backend and the UI.

Three sections, mirroring the user-facing strategy builder steps: (1) scopeConfig - the signal-universe security set (2) openPositionConfig - the open trigger expression + signal -> trade order conversion (3) closePositionConfig - the close criteria + traded-security-specific close rules

Option strategies are detected by openPositionConfig.tradeOrderBuilder being an OptionStrategyOrderBuilder; in that case the signal universe is STOCK (the underlying) and the traded security is OPTION (the legs derived per signal).

StandardStrategyConfig( scopeConfig: investfly.models.strategy.SecurityUniverseSelector, openPositionConfig: OpenPositionConfig, closePositionConfig: ClosePositionConfig)
openPositionConfig: OpenPositionConfig
closePositionConfig: ClosePositionConfig
def isOptionStrategy(self) -> bool:
@staticmethod
def fromDict( json_dict: Dict[str, Any]) -> StandardStrategyConfig:
def toDict(self) -> Dict[str, Any]:
@dataclass
class ClosePositionConfig:
ClosePositionConfig( standardCloseCriteria: investfly.models.strategy.StandardCloseCriteria | None, orderType: investfly.models.portfolio.OrderType | None = None, closeExpression: investfly.models.strategy.SecurityFilterExpression | None = None, closePositionRules: Optional[investfly.models.strategy.ClosePositionRules] = None)
standardCloseCriteria: investfly.models.strategy.StandardCloseCriteria | None
orderType: investfly.models.portfolio.OrderType | None = None
closePositionRules: Optional[investfly.models.strategy.ClosePositionRules] = None
@staticmethod
def fromDict( json_dict: Dict[str, Any]) -> ClosePositionConfig:
def toDict(self) -> Dict[str, Any]:
@dataclass
class OpenPositionConfig:
OpenPositionConfig( positionType: investfly.models.portfolio.PositionType, orderType: investfly.models.portfolio.OrderType, openExpression: investfly.models.strategy.SecurityFilterExpression, percentAllocation: float, tradeOrderBuilder: Optional[investfly.models.strategy.TradeOrderBuilder] = None)
percentAllocation: float
tradeOrderBuilder: Optional[investfly.models.strategy.TradeOrderBuilder] = None
@staticmethod
def fromDict( json_dict: Dict[str, Any]) -> OpenPositionConfig:
def toDict(self) -> Dict[str, Any]: