CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-td-ameritrade-python-api

A python client library for the TD Ameritrade API.

Overview
Eval results
Files

enums-constants.mddocs/

Enumerations and Constants

The enums module provides comprehensive constants and enumerations for all TD Ameritrade API parameters. These values ensure valid API requests and provide validation for order parameters, streaming field IDs, and endpoint arguments.

Core Import

from td.enums import *

Capabilities

Order Session Constants

Trading session specifications for when orders should be executed.

class ORDER_SESSION:
    NORMAL: str = 'NORMAL'
    AM: str = 'AM'
    PM: str = 'PM'
    SEAMLESS: str = 'SEAMLESS'

Values:

  • NORMAL: Regular trading hours (9:30 AM - 4:00 PM ET)
  • AM: Pre-market session (4:00 AM - 9:30 AM ET)
  • PM: After-hours session (4:00 PM - 8:00 PM ET)
  • SEAMLESS: Extended hours trading session

Order Duration Constants

Time-in-force specifications for order validity periods.

class DURATION:
    DAY: str = 'DAY'
    GOOD_TILL_CANCEL: str = 'GOOD_TILL_CANCEL'
    FILL_OR_KILL: str = 'FILL_OR_KILL'

Values:

  • DAY: Order valid for current trading day only
  • GOOD_TILL_CANCEL: Order remains active until filled or manually canceled
  • FILL_OR_KILL: Order must be filled immediately and completely or canceled

Order Strategy Types

Defines the strategy type for single orders versus complex order combinations.

class ORDER_STRATEGY_TYPE:
    SINGLE: str = 'SINGLE'
    OCO: str = 'OCO'
    TRIGGER: str = 'TRIGGER'

Values:

  • SINGLE: Individual standalone order
  • OCO: One-Cancels-Other order pair
  • TRIGGER: Conditional trigger order

Quantity Types

Specifications for how order quantities are interpreted.

class QUANTITY_TYPE:
    ALL_SHARES: str = 'ALL_SHARES'
    DOLLARS: str = 'DOLLARS'
    SHARES: str = 'SHARES'

Values:

  • ALL_SHARES: All available shares in the position
  • DOLLARS: Dollar amount rather than share count
  • SHARES: Specific number of shares

Asset Types

Asset classifications for different instrument types.

class ORDER_ASSET_TYPE:
    EQUITY: str = 'EQUITY'
    OPTION: str = 'OPTION'
    INDEX: str = 'INDEX'
    MUTUAL_FUND: str = 'MUTUAL_FUND'
    CASH_EQUIVALENT: str = 'CASH_EQUIVALENT'
    FIXED_INCOME: str = 'FIXED_INCOME'
    CURRENCY: str = 'CURRENCY'

Values:

  • EQUITY: Common stocks and ETFs
  • OPTION: Options contracts
  • INDEX: Index instruments
  • MUTUAL_FUND: Mutual fund shares
  • CASH_EQUIVALENT: Money market and cash equivalents
  • FIXED_INCOME: Bonds and fixed income securities
  • CURRENCY: Foreign exchange instruments

Complex Order Strategy Types

Multi-leg options strategies and complex order combinations.

class COMPLEX_ORDER_STRATEGY_TYPE:
    NONE: str = 'NONE'
    COVERED: str = 'COVERED'
    VERTICAL: str = 'VERTICAL'
    BACK_RATIO: str = 'BACK_RATIO'
    CALENDAR: str = 'CALENDAR'
    DIAGONAL: str = 'DIAGONAL'
    STRADDLE: str = 'STRADDLE'
    STRANGLE: str = 'STRANGLE'
    COLLAR_SYNTHETIC: str = 'COLLAR_SYNTHETIC'
    BUTTERFLY: str = 'BUTTERFLY'
    CONDOR: str = 'CONDOR'
    IRON_CONDOR: str = 'IRON_CONDOR'
    VERTICAL_ROLL: str = 'VERTICAL_ROLL'
    COLLAR_WITH_STOCK: str = 'COLLAR_WITH_STOCK'
    DOUBLE_DIAGONAL: str = 'DOUBLE_DIAGONAL'
    UNBALANCED_BUTTERFLY: str = 'UNBALANCED_BUTTERFLY'
    UNBALANCED_CONDOR: str = 'UNBALANCED_CONDOR'
    UNBALANCED_IRON_CONDOR: str = 'UNBALANCED_IRON_CONDOR'
    UNBALANCED_VERTICAL_ROLL: str = 'UNBALANCED_VERTICAL_ROLL'
    CUSTOM: str = 'CUSTOM'

Order Instructions

Trade instructions specifying buy/sell actions for different asset types.

class ORDER_INSTRUCTIONS:
    BUY: str = 'BUY'
    SELL: str = 'SELL'
    BUY_TO_COVER: str = 'BUY_TO_COVER'
    SELL_SHORT: str = 'SELL_SHORT'
    BUY_TO_OPEN: str = 'BUY_TO_OPEN'
    BUY_TO_CLOSE: str = 'BUY_TO_CLOSE'
    SELL_TO_OPEN: str = 'SELL_TO_OPEN'
    SELL_TO_CLOSE: str = 'SELL_TO_CLOSE'
    EXCHANGE: str = 'EXCHANGE'

Values:

  • BUY: Buy shares or long position
  • SELL: Sell shares or close long position
  • BUY_TO_COVER: Cover short position
  • SELL_SHORT: Create short position
  • BUY_TO_OPEN: Open long options position
  • BUY_TO_CLOSE: Close short options position
  • SELL_TO_OPEN: Open short options position
  • SELL_TO_CLOSE: Close long options position
  • EXCHANGE: Exchange or conversion transaction

Order Types

Execution type specifications for trade orders.

class ORDER_TYPE:
    MARKET: str = 'MARKET'
    LIMIT: str = 'LIMIT'
    STOP: str = 'STOP'
    STOP_LIMIT: str = 'STOP_LIMIT'
    TRAILING_STOP: str = 'TRAILING_STOP'
    MARKET_ON_CLOSE: str = 'MARKET_ON_CLOSE'
    EXERCISE: str = 'EXERCISE'
    TRAILING_STOP_LIMIT: str = 'TRAILING_STOP_LIMIT'
    NET_DEBIT: str = 'NET_DEBIT'
    NET_CREDIT: str = 'NET_CREDIT'
    NET_ZERO: str = 'NET_ZERO'

Values:

  • MARKET: Execute at current market price
  • LIMIT: Execute at specified price or better
  • STOP: Stop loss order triggered at stop price
  • STOP_LIMIT: Stop order with limit price execution
  • TRAILING_STOP: Stop loss that trails the market price
  • MARKET_ON_CLOSE: Execute at closing auction
  • EXERCISE: Exercise options contract
  • TRAILING_STOP_LIMIT: Trailing stop with limit price
  • NET_DEBIT: Multi-leg order with net debit
  • NET_CREDIT: Multi-leg order with net credit
  • NET_ZERO: Multi-leg order with no net cost

Option Chain Enumerations

Constants for option chain API requests and filtering.

class OPTION_CHAIN_STRATEGY:
    SINGLE: str = 'SINGLE'
    ANALYTICAL: str = 'ANALYTICAL'
    COVERED: str = 'COVERED'
    VERTICAL: str = 'VERTICAL'
    CALENDAR: str = 'CALENDAR'
    STRANGLE: str = 'STRANGLE'
    STRADDLE: str = 'STRADDLE'
    BUTTERFLY: str = 'BUTTERFLY'
    CONDOR: str = 'CONDOR'
    DIAGONAL: str = 'DIAGONAL'
    COLLAR: str = 'COLLAR'
    ROLL: str = 'ROLL'

class OPTION_CHAIN_RANGE:
    ITM: str = 'ITM'
    NTM: str = 'NTM'
    OTM: str = 'OTM'
    SAK: str = 'SAK'
    SBK: str = 'SBK'
    SNK: str = 'SNK'
    ALL: str = 'ALL'

class OPTION_CHAIN_EXP_MONTH:
    JAN: str = 'JAN'
    FEB: str = 'FEB'
    MAR: str = 'MAR'
    APR: str = 'APR'
    MAY: str = 'MAY'
    JUN: str = 'JUN'
    JUL: str = 'JUL'
    AUG: str = 'AUG'
    SEP: str = 'SEP'
    OCT: str = 'OCT'
    NOV: str = 'NOV'
    DEC: str = 'DEC'

class OPTION_CHAIN_OPTION_TYPE:
    S: str = 'S'
    NS: str = 'NS'
    ALL: str = 'ALL'

API Endpoint Validation

Dictionary containing validation rules and parameter requirements for API endpoints.

ENDPOINT_ARGUMENTS: Dict[str, Dict] = {
    # Comprehensive validation dictionary for all API endpoints
    # Contains required parameters, valid values, and constraints
}

Chart Data Validation

Valid combinations of parameters for historical price data requests.

VALID_CHART_VALUES: Dict[str, Dict] = {
    # Valid period types, frequencies, and their combinations
    # Used to validate get_price_history() parameters
}

Streaming Field IDs

Field ID mappings for streaming data subscriptions.

STREAM_FIELD_IDS: Dict[str, Dict] = {
    # Field ID mappings for different streaming services
    # Maps human-readable field names to numeric IDs
}

CSV Field Mappings

Field mappings for CSV output formatting of streaming data.

CSV_FIELD_KEYS: Dict[str, str] = {
    # Level 1 data field mappings for CSV output
}

CSV_FIELD_KEYS_LEVEL_2: Dict[str, str] = {
    # Level 2 data field mappings for CSV output
}

Usage Examples

Order Construction with Enums

from td.orders import Order, OrderLeg
from td.enums import ORDER_TYPE, ORDER_SESSION, DURATION, ORDER_INSTRUCTIONS, ORDER_ASSET_TYPE

# Create a limit order using enums
order = Order()
order.order_type(ORDER_TYPE.LIMIT)
order.order_session(ORDER_SESSION.NORMAL)
order.order_duration(DURATION.DAY)
order.order_price(150.00)

# Create order leg using enums
leg = OrderLeg()
leg.order_leg_instruction(ORDER_INSTRUCTIONS.BUY)
leg.order_leg_asset(ORDER_ASSET_TYPE.EQUITY, 'AAPL')
leg.order_leg_quantity(100)

order.add_order_leg(leg)

Complex Options Strategy

from td.enums import COMPLEX_ORDER_STRATEGY_TYPE, ORDER_INSTRUCTIONS, ORDER_ASSET_TYPE

# Vertical spread using enums
vertical = Order()
vertical.order_type(ORDER_TYPE.NET_DEBIT)
vertical.complex_order_type(COMPLEX_ORDER_STRATEGY_TYPE.VERTICAL)
vertical.order_session(ORDER_SESSION.NORMAL)
vertical.order_duration(DURATION.DAY)

# Buy leg
buy_leg = OrderLeg()
buy_leg.order_leg_instruction(ORDER_INSTRUCTIONS.BUY_TO_OPEN)
buy_leg.order_leg_asset(ORDER_ASSET_TYPE.OPTION, 'AAPL_030724C150')
buy_leg.order_leg_quantity(1)

# Sell leg
sell_leg = OrderLeg()
sell_leg.order_leg_instruction(ORDER_INSTRUCTIONS.SELL_TO_OPEN)
sell_leg.order_leg_asset(ORDER_ASSET_TYPE.OPTION, 'AAPL_030724C155')
sell_leg.order_leg_quantity(1)

vertical.add_order_leg(buy_leg)
vertical.add_order_leg(sell_leg)

Option Chain Filtering

from td.option_chain import OptionChain
from td.enums import OPTION_CHAIN_STRATEGY, OPTION_CHAIN_RANGE, OPTION_CHAIN_OPTION_TYPE

# Build option chain request with enum filters
chain = OptionChain()
chain.add_chain_key('symbol', 'AAPL')
chain.add_chain_key('strategy', OPTION_CHAIN_STRATEGY.SINGLE)
chain.add_chain_key('range', OPTION_CHAIN_RANGE.ITM)
chain.add_chain_key('optionType', OPTION_CHAIN_OPTION_TYPE.ALL)

# Get option chain data
option_data = client.get_options_chain(chain)

Streaming Field Selection

from td.enums import STREAM_FIELD_IDS

# Subscribe to specific Level 1 fields
streaming_client.level_one_quotes(
    symbols=['AAPL', 'MSFT'],
    fields=['0', '1', '2', '3', '8', '9']  # Symbol, bid, ask, last, volume, last size
)

# Use field mappings for readable code (if available)
level1_fields = ['0', '1', '2', '3']  # Common Level 1 fields
streaming_client.level_one_quotes(['GOOGL'], fields=level1_fields)

Validation Usage

from td.enums import ENDPOINT_ARGUMENTS, VALID_CHART_VALUES

# Validate price history parameters
period_type = 'day'
frequency_type = 'minute'

if period_type in VALID_CHART_VALUES:
    valid_frequencies = VALID_CHART_VALUES[period_type].get(frequency_type, [])
    if 1 in valid_frequencies:
        history = client.get_price_history(
            symbol='AAPL',
            period_type=period_type,
            frequency_type=frequency_type,
            frequency=1
        )

Important Notes

  • Always use enum values instead of hardcoded strings to prevent API errors
  • Field IDs for streaming are numeric strings (e.g., '0', '1', '2')
  • Complex order strategies may have specific requirements for legs and prices
  • Validation dictionaries help ensure API requests meet TD Ameritrade requirements
  • Some enum values may be restricted based on account permissions or market conditions

Install with Tessl CLI

npx tessl i tessl/pypi-td-ameritrade-python-api

docs

authentication.md

client-api.md

enums-constants.md

exceptions.md

index.md

order-management.md

streaming.md

utilities.md

tile.json