Supported Models
Tastytrade
Introduction
This page explains the TastytradeBrokerageModel
, including the asset classes it supports, its default security-level models, and its default markets.
SetBrokerageModel(BrokerageName.Tastytrade, AccountType.Cash); SetBrokerageModel(BrokerageName.Tastytrade, AccountType.Margin);
self.set_brokerage_model(BrokerageName.TASTYTRADE, AccountType.CASH) self.set_brokerage_model(BrokerageName.TASTYTRADE, AccountType.MARGIN)
To view the implementation of this model, see the LEAN GitHub repository.
Orders
The TastytradeBrokerageModel
supports several order types, order properties, and order updates.
Order Types
The following table describes the available order types for each asset class that the TastytradeBrokerageModel
supports:
Order Type | Equity | Equity Options | Futures | Future Options | Index Options |
---|---|---|---|---|---|
Market | ![]() | ![]() | ![]() | ![]() | ![]() |
Limit | ![]() | ![]() | ![]() | ![]() | ![]() |
Stop market | ![]() | ![]() | ![]() | ![]() | ![]() |
Stop limit | ![]() | ![]() | ![]() | ![]() | ![]() |
Order Properties
The TastytradeBrokerageModel
supports custom order properties. The following table describes the members of the TastytradeOrderProperties
object that you can set to customize order execution.
Property | Data Type | Description | Default Value |
---|---|---|---|
TimeInForce time_in_force | TimeInForce | A TimeInForce instruction to apply to the order. The following instructions are supported:
| TimeInForce.GoodTilCanceled TimeInForce.GOOD_TIL_CANCELED |
public override void Initialize() { // Set the default order properties DefaultOrderProperties = new TastytradeOrderProperties { TimeInForce = TimeInForce.GoodTilCanceled }; } public override void OnData(Slice slice) { // Use default order order properties LimitOrder(_symbol, quantity, limitPrice); // Override the default order properties LimitOrder(_symbol, quantity, limitPrice, orderProperties: new TastytradeOrderProperties { TimeInForce = TimeInForce.Day }); }
def initialize(self) -> None: # Set the default order properties self.default_order_properties = TastytradeOrderProperties() self.default_order_properties.time_in_force = TimeInForce.GOOD_TIL_CANCELED def on_data(self, slice: Slice) -> None: # Use default order order properties self.limit_order(self._symbol, quantity, limit_price) # Override the default order properties order_properties = TastytradeOrderProperties() order_properties.time_in_force = TimeInForce.DAY self.limit_order(self._symbol, quantity, limit_price, order_properties=order_properties)
Updates
The TastytradeBrokerageModel
supports order updates.
Handling Splits
If you're using raw data normalization and you have active orders with a limit, stop, or trigger price in the market for a US Equity when a stock split occurs, the following properties of your orders automatically adjust to reflect the stock split:
- Quantity
- Limit price
- Stop price
- Trigger price
Fills
The following table shows the fill model that the TastytradeBrokerageModel
uses for each SecurityType
:
SecurityType | Fill Model |
---|---|
Equity | EquityFillModel |
Future | FutureFillModel |
FutureOption | FutureOptionFillModel |
Remaining SecurityType values | ImmediateFillModel |
Slippage
The TastytradeBrokerageModel
uses the NullSlippageModel.
Fees
The TastytradeBrokersBrokerageModel
uses the TastytradeFeeModel with the default argument values. We model current Tastytrade fees on all assets.
Buying Power
The TastytradeBrokerageModel
sets the buying power model based on the asset class of the security. The following table shows the default buying power model of each asset class:
SecurityMarginModel
FutureMarginModel
OptionMarginModel
If you have a margin account, the TastytradeBrokerageModel
allows 2x leverage for Equities. The remaining asset classes are derivatives.
Settlement
The following table shows which settlement model the TastytradeBrokerageModel
uses based on the security type and your account type:
Security Type | Account Type | Settlement Model |
---|---|---|
Equity | Cash | DelayedSettlementModel with the default settlement rules |
Option | Cash | DelayedSettlementModel with the default settlement rules |
Future | Any | FutureSettlementModel |
For all other cases, the TastytradeBrokerageModel
uses the ImmediateSettlementModel.
// For US Equities with a cash account: security.SetSettlementModel(new DelayedSettlementModel(Equity.DefaultSettlementDays, Equity.DefaultSettlementTime)); // For Equity Options with a cash account: security.SetSettlementModel(new DelayedSettlementModel(Option.DefaultSettlementDays, Option.DefaultSettlementTime)); // For Futures security.SetSettlementModel(new FutureSettlementModel()); // For remaining cases: security.SetSettlementModel(new ImmediateSettlementModel());
# For US Equities with a cash account: security.set_settlement_model(DelayedSettlementModel(Equity.DEFAULT_SETTLEMENT_DAYS, Equity.DEFAULT_SETTLEMENT_TIME)) # For Equity Options with a cash account: security.set_settlement_model(DelayedSettlementModel(Option.DEFAULT_SETTLEMENT_DAYS, Option.DEFAULT_SETTLEMENT_TIME)) # For Futures security.set_settlement_model(FutureSettlementModel()) # For remaining cases: security.set_settlement_model(ImmediateSettlementModel())
Margin Interest Rate
The TastytradeBrokerageModel
uses the NullMarginInterestRateModel.