Overall Statistics
Total Trades
2
Average Win
0%
Average Loss
0%
Compounding Annual Return
1.677%
Drawdown
0.500%
Expectancy
0
Net Profit
1.560%
Sharpe Ratio
1.408
Probabilistic Sharpe Ratio
67.498%
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
0
Beta
0
Annual Standard Deviation
0.008
Annual Variance
0
Information Ratio
1.408
Tracking Error
0.008
Treynor Ratio
0
Total Fees
$2.00
Estimated Strategy Capacity
$2600000.00
Lowest Capacity Asset
SPY R735QTJ8XC9X
class InteractiveBrokersBrokerageExampleAlgorithm(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2021, 1, 1)
        self.SetCash(100000)
        
        self.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage, AccountType.Margin)
        
        self.symbol = self.AddEquity("SPY", Resolution.Minute, extendedMarketHours = True).Symbol
        
        # Set default order properites
        self.DefaultOrderProperties = InteractiveBrokersOrderProperties()
        self.DefaultOrderProperties.Account = "TestAccount1"   # Only for FA accounts
        self.DefaultOrderProperties.FaProfile = "TestProfile1" # Only for FA accounts
        self.DefaultOrderProperties.FaGroup = "TestGroup1"     # Only for FA accounts
        self.DefaultOrderProperties.FaMethod = "EqualQuantity" # Only for FA accounts
        self.DefaultOrderProperties.TimeInForce = TimeInForce.GoodTilCanceled
        self.DefaultOrderProperties.OutsideRegularTradingHours = False


    def OnData(self, data):
        if self.Portfolio.Invested:
            return
        
        # Place an order with the default order properties
        self.LimitOrder(self.symbol, 10, data[self.symbol].Price + 10)
        
        # Place an order and with new order properties
        orderProperties = InteractiveBrokersOrderProperties()
        orderProperties.Account = "TestAccount2"   # Only for FA accounts
        orderProperties.FaProfile = "TestProfile2" # Only for FA accounts
        orderProperties.FaGroup = "TestGroup2"     # Only for FA accounts
        orderProperties.FaMethod = "NetLiq"        # Only for FA accounts
        orderProperties.OutsideRegularTradingHours = True
        ticket = self.LimitOrder(self.symbol, 10, round(data[self.symbol].Price * .9, 2), orderProperties = orderProperties)
        
        # Update the order
        update_fields = UpdateOrderFields()
        update_fields.Quantity = 8
        update_fields.LimitPrice = round(data[self.symbol].Price + 10, 2)
        update_fields.Tag = "Informative order tag"
        response = ticket.Update(update_fields)
        if not self.LiveMode and response.IsSuccess:
            self.Debug("Order updated successfully")