Overall Statistics
Total Trades
2
Average Win
0%
Average Loss
0%
Compounding Annual Return
0.307%
Drawdown
2.200%
Expectancy
0
Net Profit
0.600%
Sharpe Ratio
0.187
Probabilistic Sharpe Ratio
8.627%
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
-0.001
Beta
0.072
Annual Standard Deviation
0.012
Annual Variance
0
Information Ratio
-0.294
Tracking Error
0.15
Treynor Ratio
0.03
Total Fees
$0.00
Estimated Strategy Capacity
$53000000.00
Lowest Capacity Asset
SPY R735QTJ8XC9X
# region imports
from AlgorithmImports import *
# endregion

class TDAmeritradeBrokerageExampleAlgorithm(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2021, 1, 1)
        self.SetCash(100000)
        
        self.SetBrokerageModel(BrokerageName.TDAmeritrade, AccountType.Margin)
        
        self.symbol = self.AddEquity("SPY", Resolution.Minute).Symbol

        # Set default order properites
        self.DefaultOrderProperties.TimeInForce = TimeInForce.GoodTilCanceled

    def OnData(self, data: Slice):
        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 = TDAmeritradeOrderProperties()
        orderProperties.TimeInForce = TimeInForce.Day
        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")