Overall Statistics
Total Orders
2
Average Win
0%
Average Loss
0%
Compounding Annual Return
1.071%
Drawdown
2.100%
Expectancy
0
Start Equity
100000
End Equity
104230.05
Net Profit
4.230%
Sharpe Ratio
-2.346
Sortino Ratio
-2.756
Probabilistic Sharpe Ratio
25.919%
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
-0.029
Beta
0.074
Annual Standard Deviation
0.01
Annual Variance
0
Information Ratio
-0.768
Tracking Error
0.127
Treynor Ratio
-0.325
Total Fees
$0.00
Estimated Strategy Capacity
$37000000.00
Lowest Capacity Asset
SPY R735QTJ8XC9X
Portfolio Turnover
0.00%
# region imports
from AlgorithmImports import *
# endregion

class CharlesSchwabBrokerageExampleAlgorithm(QCAlgorithm):

    def initialize(self):
        self.set_start_date(2021, 1, 1)
        self.set_cash(100000)
        
        self.set_brokerage_model(BrokerageName.CHARLES_SCHWAB, 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 = CharlesSchwabOrderProperties()
        order_properties.time_in_force = TimeInForce.DAY
        order_properties.extended_regular_trading_hours = True
        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")