Overall Statistics
Total Orders
2
Average Win
0%
Average Loss
0%
Compounding Annual Return
0.797%
Drawdown
2.200%
Expectancy
0
Start Equity
100000
End Equity
102662.42
Net Profit
2.662%
Sharpe Ratio
-2.118
Sortino Ratio
-2.53
Probabilistic Sharpe Ratio
15.822%
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
-0.026
Beta
0.072
Annual Standard Deviation
0.01
Annual Variance
0
Information Ratio
-0.614
Tracking Error
0.132
Treynor Ratio
-0.302
Total Fees
$0.00
Estimated Strategy Capacity
$43000000.00
Lowest Capacity Asset
SPY R735QTJ8XC9X
Portfolio Turnover
0.01%
# region imports
from AlgorithmImports import *
# endregion

class TDAmeritradeBrokerageExampleAlgorithm(QCAlgorithm):

    def initialize(self):
        self.set_start_date(2021, 1, 1)
        self.set_cash(100000)
        
        self.set_brokerage_model(BrokerageName.TD_AMERITRADE, AccountType.MARGIN)
        
        self._symbol = self.add_equity("SPY", Resolution.MINUTE).symbol

        # Set default order properites
        self.default_order_properties.time_in_force = TimeInForce.GOOD_TIL_CANCELED

    def on_data(self, data: Slice):
        if self.portfolio.invested:
            return

        # Place an order with the default order properties
        self.limit_order(self._symbol, 10, data[self._symbol].price + 10)

        # Place an order and with new order properties
        order_properties = TDAmeritradeOrderProperties()
        order_properties.time_in_force = TimeInForce.DAY
        ticket = self.limit_order(self._symbol, 10, round(data[self._symbol].price * .9, 2), order_properties = order_properties)
        
        # Update the order
        update_fields = UpdateOrderFields()
        update_fields.quantity = 8
        update_fields.limit_price = round(data[self._symbol].price + 10, 2)
        update_fields.tag = "Informative order tag"
        response = ticket.update(update_fields)
        if not self.live_mode and response.is_success:
            self.debug("Order updated successfully")