Accounts and Positions

get_managed_accounts

Signature


pub async fn get_managed_accounts( &self, req: ManagedAccountsRequest, ) -> Result<Vec<ManagedAccount>, TigerError>

Description

Institutional master account.

Parameters

ParameterRust typeRequirementSDK default
req.accountOption<String>Optional; most TradeClient methods inject the default account when NoneNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • TradeClient: Result<Vec<ManagedAccount>, TigerError>.
FieldRust typeDescription
accountStringAccount
account_typeStringAccount type
capabilityStringAccount capability
statusStringAccount status

Example


use std::sync::Arc;

use tigeropen::client::http_client::HttpClient;

use tigeropen::config::ClientConfig;

use tigeropen::error::TigerError;

use tigeropen::model::order::*;

use tigeropen::model::quote::*;

use tigeropen::model::quote_requests::*;

use tigeropen::model::trade_requests::*;

use tigeropen::push::*;

use tigeropen::quote::QuoteClient;

use tigeropen::trade::TradeClient;

async fn example_get_managed_accounts(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = trade.get_managed_accounts(ManagedAccountsRequest { ..Default::default() }).await?;

    Ok(())

}

Response example

[
  {
    "account": "402901",
    "accountType": "GLOBAL",
    "capability": "RegTMargin",
    "status": "TRADING"
  }
]

Rate limit

The base rate limit is 60 requests/min.


get_assets

Signature


pub async fn get_assets(&self, req: AssetsRequest) -> Result<Vec<Asset>, TigerError>

Description

Account injected; segment and market value omitted by default.

Parameters

ParameterRust typeRequirementSDK default
req.accountOption<String>Optional; most TradeClient methods inject the default account when NoneNone (omitted)
req.sub_accountsOption<Vec<String>>OptionalNone (omitted)
req.segmentOption<bool>OptionalNone (omitted)
req.market_valueOption<bool>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • TradeClient: Result<Vec<Asset>, TigerError>.
FieldRust typeDescription
accountStringAccount
capabilityStringAccount capability
currencyStringCurrency
buying_powerf64Buying power
cash_valuef64Cash value
net_liquidationf64Net liquidation value
realized_pnlf64Realized P&L
unrealized_pnlf64Unrealized P&L
segmentsVec<AssetSegment>Asset segments

AssetSegment fields:

FieldRust typeDescription
accountStringAccount
categoryStringSegment category
titleStringSegment title
net_liquidationf64Net liquidation value
cash_valuef64Cash value
available_fundsf64Available funds
equity_with_loanf64Equity with loan
excess_liquidityf64Excess liquidity
accrued_cashf64Accrued cash
accrued_dividendf64Accrued dividend
init_margin_reqf64Initial margin requirement
maint_margin_reqf64Maintenance margin requirement
gross_position_valuef64Gross position value
leveragef64Leverage

Example


use std::sync::Arc;

use tigeropen::client::http_client::HttpClient;

use tigeropen::config::ClientConfig;

use tigeropen::error::TigerError;

use tigeropen::model::order::*;

use tigeropen::model::quote::*;

use tigeropen::model::quote_requests::*;

use tigeropen::model::trade_requests::*;

use tigeropen::push::*;

use tigeropen::quote::QuoteClient;

use tigeropen::trade::TradeClient;

async fn example_get_assets(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = trade.get_assets(AssetsRequest { ..Default::default() }).await?;

    Ok(())

}

Response example

[
  {
    "account": "402901",
    "capability": "RegTMargin",
    "currency": "USD",
    "buyingPower": 150000.0,
    "cashValue": 85000.0,
    "netLiquidation": 250000.0,
    "realizedPnl": 3200.5,
    "unrealizedPnl": 1850.75
  }
]

Rate limit

The base rate limit is 60 requests/min.


get_prime_assets

Signature


pub async fn get_prime_assets( &self, req: AssetsRequest, ) -> Result<Option<PrimeAsset>, TigerError>

Description

Prime accounts; same request.

Parameters

ParameterRust typeRequirementSDK default
req.accountOption<String>Optional; most TradeClient methods inject the default account when NoneNone (omitted)
req.sub_accountsOption<Vec<String>>OptionalNone (omitted)
req.segmentOption<bool>OptionalNone (omitted)
req.market_valueOption<bool>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • TradeClient: Result<Option<PrimeAsset>, TigerError>.
FieldRust typeDescription
account_idStringAccount ID
update_timestampi64Update timestamp
segmentsVec<PrimeAssetSegment>Asset segments

PrimeAssetSegment fields:

FieldRust typeDescription
capabilityStringAccount capability
categoryStringSegment category
currencyStringCurrency
cash_balancef64Cash balance
cash_available_for_tradef64Cash available for trading
gross_position_valuef64Gross position value
equity_with_loanf64Equity with loan
net_liquidationf64Net liquidation value
init_marginf64Initial margin
maintain_marginf64Maintenance margin
overnight_marginf64Overnight margin
unrealized_plf64Unrealized P&L
unrealized_pl_by_cost_of_carryf64Unrealized P&L by cost of carry
realized_plf64Realized P&L
total_today_plf64Total P&L today
excess_liquidationf64Excess liquidity
overnight_liquidationf64Overnight liquidity
buying_powerf64Buying power
locked_fundsf64Locked funds
leveragef64Leverage
uncollectedf64Uncollected funds
currency_assetsVec<CurrencyAsset>Per-currency assets
consolidated_seg_typesVec<String>Consolidated segment types

CurrencyAsset fields:

FieldRust typeDescription
currencyStringCurrency
cash_balancef64Cash balance
cash_available_for_tradef64Cash available for trading
forex_ratef64FX rate

Example


use std::sync::Arc;

use tigeropen::client::http_client::HttpClient;

use tigeropen::config::ClientConfig;

use tigeropen::error::TigerError;

use tigeropen::model::order::*;

use tigeropen::model::quote::*;

use tigeropen::model::quote_requests::*;

use tigeropen::model::trade_requests::*;

use tigeropen::push::*;

use tigeropen::quote::QuoteClient;

use tigeropen::trade::TradeClient;

async fn example_get_prime_assets(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = trade.get_prime_assets(AssetsRequest { ..Default::default() }).await?;

    Ok(())

}

Response example

{
  "accountId": "402901",
  "updateTimestamp": 1738180800000,
  "segments": [
    {
      "category": "S",
      "currency": "USD",
      "buyingPower": 150000.0,
      "cash": 85000.0,
      "grossPositionValue": 165000.0
    }
  ]
}

Rate limit

The base rate limit is 60 requests/min.


get_aggregate_assets

Signature


pub async fn get_aggregate_assets( &self, req: AggregateAssetsRequest, ) -> Result<Option<AggregateAssets>, TigerError>

Description

Base currency/segment optional; supported aggregate/institutional accounts only.

Parameters

ParameterRust typeRequirementSDK default
req.accountOption<String>Optional; most TradeClient methods inject the default account when NoneNone (omitted)
req.base_currencyOption<String>OptionalNone (omitted)
req.seg_typeOption<String>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • TradeClient: Result<Option<AggregateAssets>, TigerError>.
FieldRust typeDescription
account_idStringAccount ID
net_liquidationf64Net liquidation value
gross_position_valuef64Gross position value
cash_balancef64Cash balance
base_currencyStringBase currency
currency_assetsVec<CurrencyAsset>Per-currency assets; see Get Prime Assets

Example


use std::sync::Arc;

use tigeropen::client::http_client::HttpClient;

use tigeropen::config::ClientConfig;

use tigeropen::error::TigerError;

use tigeropen::model::order::*;

use tigeropen::model::quote::*;

use tigeropen::model::quote_requests::*;

use tigeropen::model::trade_requests::*;

use tigeropen::push::*;

use tigeropen::quote::QuoteClient;

use tigeropen::trade::TradeClient;

async fn example_get_aggregate_assets(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = trade.get_aggregate_assets(AggregateAssetsRequest { ..Default::default() }).await?;

    Ok(())

}

Response example

{
  "accountId": "402901",
  "netLiquidation": 250000.0,
  "grossPositionValue": 165000.0,
  "cashBalance": 85000.0,
  "baseCurrency": "USD",
  "currencyAssets": [
    {
      "currency": "USD",
      "cashBalance": 85000.0,
      "cashAvailableForTrade": 85000.0,
      "forexRate": 1.0
    }
  ]
}

Rate limit

The base rate limit is 60 requests/min.


get_analytics_asset

Signature


pub async fn get_analytics_asset( &self, req: AnalyticsAssetRequest, ) -> Result<Vec<AnalyticsAsset>, TigerError>

Description

Dates are YYYY-MM-DD; segment optional.

Parameters

ParameterRust typeRequirementSDK default
req.accountOption<String>Optional; most TradeClient methods inject the default account when NoneNone (omitted)
req.seg_typeOption<String>OptionalNone (omitted)
req.start_dateOption<String>OptionalNone (omitted)
req.end_dateOption<String>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • TradeClient: Result<Vec<AnalyticsAsset>, TigerError>.
FieldRust typeDescription
dateStringDate
holding_valuef64Holding value
cash_balancef64Cash balance
pnlf64P&L
pnl_ratef64P&L rate
net_value_indexf64Net value index
currencyStringCurrency
seg_typeStringSegment type

Example


use std::sync::Arc;

use tigeropen::client::http_client::HttpClient;

use tigeropen::config::ClientConfig;

use tigeropen::error::TigerError;

use tigeropen::model::order::*;

use tigeropen::model::quote::*;

use tigeropen::model::quote_requests::*;

use tigeropen::model::trade_requests::*;

use tigeropen::push::*;

use tigeropen::quote::QuoteClient;

use tigeropen::trade::TradeClient;

async fn example_get_analytics_asset(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = trade.get_analytics_asset(AnalyticsAssetRequest { ..Default::default() }).await?;

    Ok(())

}

Response example

[
  {
    "date": "2025-01-29",
    "holdingValue": 165000.0,
    "cashBalance": 85000.0,
    "pnl": 2350.8,
    "pnlRate": 0.0142,
    "netValueIndex": 1.0142,
    "currency": "USD",
    "segType": "SEC"
  }
]

get_positions

Signature


pub async fn get_positions(&self, req: PositionsRequest) -> Result<Vec<Position>, TigerError>

Description

Account injected; filter by type, currency, market, symbol, subaccounts, and option attributes. The request object has no pagination controls.

Parameters

ParameterRust typeRequirementSDK default
req.accountOption<String>Optional; most TradeClient methods inject the default account when NoneNone (omitted)
req.sec_typeOption<String>OptionalNone (omitted)
req.currencyOption<String>OptionalNone (omitted)
req.marketOption<String>OptionalNone (omitted)
req.symbolOption<String>OptionalNone (omitted)
req.sub_accountsOption<Vec<String>>OptionalNone (omitted)
req.expiryOption<String>OptionalNone (omitted)
req.strikeOption<String>OptionalNone (omitted)
req.rightOption<String>OptionalNone (omitted)
req.asset_quote_typeOption<String>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • TradeClient: Result<Vec<Position>, TigerError>.
FieldRust typeDescription
accountOption<String>Account
symbolOption<String>Symbol
sec_typeOption<String>Security type
marketOption<String>Market
currencyOption<String>Currency
positionOption<i64>Position quantity
average_costOption<f64>Average cost
market_valueOption<f64>Market value
realized_pnlOption<f64>Realized P&L
unrealized_pnlOption<f64>Unrealized P&L
unrealized_pnl_percentOption<f64>Unrealized P&L percentage
contract_idOption<i64>Contract ID
identifierOption<String>Contract identifier
nameOption<String>Contract name
latest_priceOption<f64>Latest price
multiplierOption<f64>Contract multiplier

Example


use std::sync::Arc;

use tigeropen::client::http_client::HttpClient;

use tigeropen::config::ClientConfig;

use tigeropen::error::TigerError;

use tigeropen::model::order::*;

use tigeropen::model::quote::*;

use tigeropen::model::quote_requests::*;

use tigeropen::model::trade_requests::*;

use tigeropen::push::*;

use tigeropen::quote::QuoteClient;

use tigeropen::trade::TradeClient;

async fn example_get_positions(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = trade.get_positions(PositionsRequest { ..Default::default() }).await?;

    Ok(())

}

Response example

[
  {
    "account": "402901",
    "symbol": "AAPL",
    "secType": "STK",
    "market": "US",
    "currency": "USD",
    "position": 100,
    "averageCost": 178.35,
    "marketValue": 19550.0
  }
]

Rate limit

The base rate limit is 60 requests/min.


get_estimate_tradable_quantity

Signature


pub async fn get_estimate_tradable_quantity( &self, req: EstimateTradableQuantityRequest, ) -> Result<Option<EstimateTradableQuantity>, TigerError>

Description

Symbol/type/action required; limit price conditional; derivative fields conditional.

Parameters

ParameterRust typeRequirementSDK default
req.accountOption<String>Optional; most TradeClient methods inject the default account when NoneNone (omitted)
req.symbolOption<String>Required by the server; not prevalidated by the SDKNone (omitted)
req.sec_typeOption<String>Required by the server; not prevalidated by the SDKNone (omitted)
req.actionOption<String>Required by the server; not prevalidated by the SDKNone (omitted)
req.order_typeOption<String>OptionalNone (omitted)
req.limit_priceOption<f64>OptionalNone (omitted)
req.marketOption<String>OptionalNone (omitted)
req.currencyOption<String>OptionalNone (omitted)
req.expiryOption<String>OptionalNone (omitted)
req.strikeOption<String>OptionalNone (omitted)
req.rightOption<String>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • TradeClient: Result<Option<EstimateTradableQuantity>, TigerError>.
FieldRust typeDescription
tradable_quantityf64Tradable quantity
max_cash_buy_quantityf64Maximum cash-buy quantity
max_margin_buy_quantityf64Maximum margin-buy quantity
max_short_sell_quantityf64Maximum short-sell quantity
max_position_sell_quantityf64Maximum position-sell quantity
cash_buying_powerf64Cash buying power
currencyStringCurrency

Example


use std::sync::Arc;

use tigeropen::client::http_client::HttpClient;

use tigeropen::config::ClientConfig;

use tigeropen::error::TigerError;

use tigeropen::model::order::*;

use tigeropen::model::quote::*;

use tigeropen::model::quote_requests::*;

use tigeropen::model::trade_requests::*;

use tigeropen::push::*;

use tigeropen::quote::QuoteClient;

use tigeropen::trade::TradeClient;

async fn example_get_estimate_tradable_quantity(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = trade.get_estimate_tradable_quantity(EstimateTradableQuantityRequest { symbol: Some("AAPL".into()), sec_type: Some("STK".into()), action: Some("BUY".into()), ..Default::default() }).await?;

    Ok(())

}

Response example

{
  "tradableQuantity": 500,
  "maxCashBuyQuantity": 430,
  "maxMarginBuyQuantity": 760,
  "maxShortSellQuantity": 300,
  "maxPositionSellQuantity": 100,
  "cashBuyingPower": 85000.0,
  "currency": "USD"
}

Rate limit

The base rate limit is 60 requests/min.


get_derivative_contracts

Signature


pub async fn get_derivative_contracts( &self, req: DerivativeContractsRequest, ) -> Result<Vec<Contract>, TigerError>

Description

Symbols/type required; expiry optional.

Parameters

ParameterRust typeRequirementSDK default
req.accountOption<String>Optional; most TradeClient methods inject the default account when NoneNone (omitted)
req.symbolsOption<Vec<String>>OptionalNone (omitted)
req.sec_typeOption<String>OptionalNone (omitted)
req.expiryOption<String>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • TradeClient: Result<Vec<Contract>, TigerError>.
FieldRust typeDescription
contract_idOption<i64>Contract ID
symbolStringSymbol
sec_typeStringSecurity type
currencyOption<String>Currency
exchangeOption<String>Exchange
primary_exchangeOption<String>Primary exchange
expiryOption<String>Expiration date
strikeOption<f64>Strike price
rightOption<String>PUT/CALL
multiplierOption<f64>Contract multiplier
identifierOption<String>Contract identifier
nameOption<String>Contract name
marketOption<String>Market
tradeableOption<bool>Whether tradeable
conidOption<i64>Internal contract ID
short_marginOption<f64>Short margin ratio
short_initial_marginOption<f64>Short initial margin ratio
short_maintenace_marginOption<f64>Short maintenance margin ratio; Rust field spelling is retained from the SDK
long_initial_marginOption<f64>Long initial margin
long_maintenace_marginOption<f64>Long maintenance margin; Rust field spelling is retained from the SDK
tick_sizesOption<Vec<TickSize>>Minimum tick-size ranges
lot_sizeOption<f64>Lot size

TickSize fields:

FieldRust typeDescription
beginOption<String>Range start price
endOption<String>Range end price
tick_sizeOption<f64>Minimum tick size
r#typeOption<String>Range type

Example


use std::sync::Arc;

use tigeropen::client::http_client::HttpClient;

use tigeropen::config::ClientConfig;

use tigeropen::error::TigerError;

use tigeropen::model::order::*;

use tigeropen::model::quote::*;

use tigeropen::model::quote_requests::*;

use tigeropen::model::trade_requests::*;

use tigeropen::push::*;

use tigeropen::quote::QuoteClient;

use tigeropen::trade::TradeClient;

async fn example_get_derivative_contracts(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {

    let result_0 = trade.get_derivative_contracts(DerivativeContractsRequest { ..Default::default() }).await?;

    Ok(())

}

Response example

[
  {
    "contractId": 265598,
    "symbol": "AAPL",
    "secType": "OPT",
    "currency": "USD",
    "exchange": "CBOE",
    "primaryExchange": "CBOE",
    "expiry": "2025-02-21",
    "strike": 195.0
  }
]

Rate limit

The base rate limit is 60 requests/min. get_quote_contract and get_derivative_contracts both use quote_contract and share this quota.



Did this page help you?