Overall Statistics
Total Trades
1
Average Win
0%
Average Loss
0%
Compounding Annual Return
16.013%
Drawdown
16.700%
Expectancy
0
Net Profit
25.035%
Sharpe Ratio
0.616
Sortino Ratio
0.834
Probabilistic Sharpe Ratio
42.565%
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
-0
Beta
0.999
Annual Standard Deviation
0.142
Annual Variance
0.02
Information Ratio
-0.55
Tracking Error
0
Treynor Ratio
0.088
Total Fees
$1.31
Estimated Strategy Capacity
$1000000000.00
Lowest Capacity Asset
SPY R735QTJ8XC9X
Portfolio Turnover
0.19%
# region imports
from AlgorithmImports import *
# endregion

class CustomFillModelAlgorithm(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2022, 6, 28)
        self.SetCash(100000)
        security = self.AddEquity("SPY", Resolution.Daily)
        security.SetFillModel(MyFillModel())

    def OnData(self, data: Slice):
        if not self.Portfolio.Invested:
            self.SetHoldings("SPY", 1)

class MyFillModel(FillModel):

    def MarketFill(self, asset: Security, order: MarketOrder) -> OrderEvent:
        return super().MarketFill(asset, order)

    def LimitFill(self, asset: Security, order: LimitOrder) -> OrderEvent:
        return super().LimitFill(asset, order)

    def LimitIfTouchedFill(self, asset: Security, order: LimitIfTouchedOrder) -> OrderEvent:
        return super().LimitIfTouchedFill(asset, order)

    def StopMarketFill(self, asset: Security, order: StopMarketOrder) -> OrderEvent:
        return super().StopMarketFill(asset, order)

    def StopLimitFill(self, asset: Security, order: StopLimitOrder) -> OrderEvent:
        return super().StopLimitFill(asset, order)

    def TrailingStopFill(self, asset: Security, order: TrailingStopOrder) -> OrderEvent:
        return super().TrailingStopFill(asset, order)

    def MarketOnOpenFill(self, asset: Security, order: MarketOnOpenOrder) -> OrderEvent:
        return super().MarketOnOpenFill(asset, order)

    def MarketOnCloseFill(self, asset: Security, order: MarketOnCloseOrder) -> OrderEvent:
        return super().MarketOnCloseFill(asset, order)

    def ComboMarketFill(self, order: Order, parameters: FillModelParameters) -> List[OrderEvent]:
        return super().ComboMarketFill(order, parameters)
    
    def ComboLimitFill(self, order: Order, parameters: FillModelParameters) -> List[OrderEvent]:
        return super().ComboLimitFill(order, parameters)
    
    def ComboLegLimitFill(self, order: Order, parameters: FillModelParameters) -> List[OrderEvent]:
        return super().ComboLegLimitFill(order, parameters)