Option Exercise

Submit Option Exercise

Signature

pub async fn submit_option_exercise(&self, mut req: OptionExerciseSubmitRequest) -> Result<Option<bool>, TigerError>

Description

Submit an option exercise or expiry handling request.

Parameters

ParameterTypeRequiredDescription
req.accountOption<String>NoAccount
req.contract_idOption<i64>YesContract ID
req.exercise_typeOption<String>YesExercise or Expire
req.quantityOption<f64>YesExercise quantity
req.executing_dateOption<String>ConditionalRequired for Exercise type
req.is_forceOption<bool>ConditionalRequired for Exercise type
req.itm_rateOption<i32>NoFor Expire type, range 0..10
req.secret_keyOption<String>NoInstitutional trader key

Response

Result<Option<bool>, TigerError>Some(true) indicates the request was accepted.

Example

use tigeropen::model::trade_requests::OptionExerciseSubmitRequest;

let success = trade.submit_option_exercise(OptionExerciseSubmitRequest {
    contract_id: Some(55678),
    exercise_type: Some("Exercise".into()),
    quantity: Some(1.0),
    executing_date: Some("2026-09-19".into()),
    is_force: Some(false),
    ..Default::default()
}).await?;

Cancel Option Exercise

Signature

pub async fn cancel_option_exercise(&self, mut req: OptionExerciseCancelRequest) -> Result<Option<bool>, TigerError>

Description

Cancel a submitted exercise record. Only records in New status can be cancelled.

Parameters

ParameterTypeRequiredDescription
req.accountOption<String>NoAccount
req.idOption<i64>YesExercise record ID
req.secret_keyOption<String>NoInstitutional trader key

Response

Result<Option<bool>, TigerError>Some(true) indicates cancellation was successful.

Example

use tigeropen::model::trade_requests::OptionExerciseCancelRequest;

let cancelled = trade.cancel_option_exercise(OptionExerciseCancelRequest {
    id: Some(12345),
    ..Default::default()
}).await?;

Option Exercise Check

Signature

pub async fn option_exercise_check(&self, mut req: OptionExerciseCheckRequest) -> Result<Option<bool>, TigerError>

Description

Check whether an option exercise is feasible.

Parameters

ParameterTypeRequiredDescription
req.accountOption<String>NoAccount
req.contract_idOption<i64>YesContract ID
req.exercise_typeOption<String>YesExercise type
req.quantityOption<f64>YesExercise quantity
req.executing_dateOption<String>ConditionalRequired for Exercise type

Response

Result<Option<bool>, TigerError>Some(true) means exercise is allowed.

Example

use tigeropen::model::trade_requests::OptionExerciseCheckRequest;

let ok = trade.option_exercise_check(OptionExerciseCheckRequest {
    contract_id: Some(55678),
    exercise_type: Some("Exercise".into()),
    quantity: Some(1.0),
    executing_date: Some("2026-09-19".into()),
    ..Default::default()
}).await?;

Get Option Exercise Positions

Signature

pub async fn get_option_exercise_positions(&self, mut req: OptionExercisePositionsRequest) -> Result<Vec<OptionExercisePosition>, TigerError>

Description

Get exercisable option positions.

Parameters

ParameterTypeRequiredDescription
req.accountOption<String>NoAccount
req.pageOption<i32>NoPage number
req.page_sizeOption<i32>NoPage size

Response

FieldTypeDescription
contract_idi64Contract ID
symbolStringSymbol
expiryStringExpiration date
strikef64Strike price
rightStringPUT/CALL
positionf64Position quantity
marketStringMarket
currencyStringCurrency

Example

use tigeropen::model::trade_requests::OptionExercisePositionsRequest;

let positions = trade.get_option_exercise_positions(
    OptionExercisePositionsRequest::default()
).await?;
for p in &positions {
    println!("{} {} strike={} qty={}", p.symbol, p.right, p.strike, p.position);
}

Response Example

[
  {
    "contract_id": 55678,
    "symbol": "AAPL",
    "sec_type": "OPT",
    "expiry": "20260919",
    "strike": 200.0,
    "right": "CALL",
    "position": 2.0,
    "market": "US",
    "currency": "USD"
  }
]

Get Option Exercise Records

Signature

pub async fn get_option_exercise_records(&self, mut req: OptionExerciseRecordsRequest) -> Result<Vec<OptionExerciseRecord>, TigerError>

Description

Get historical exercise/expiry records.

Parameters

ParameterTypeRequiredDescription
req.accountOption<String>NoAccount
req.pageOption<i32>NoPage number
req.page_sizeOption<i32>NoPage size

Response

FieldTypeDescription
idi64Record ID
contract_idi64Contract ID
symbolStringSymbol
expiryStringExpiration date
strikef64Strike price
rightStringPUT/CALL
exercise_typeStringExercise/Expire
quantityf64Exercise quantity
statusStringStatus
executing_dateStringExecution date
create_timei64Created at (ms)

Example

use tigeropen::model::trade_requests::OptionExerciseRecordsRequest;

let records = trade.get_option_exercise_records(
    OptionExerciseRecordsRequest::default()
).await?;
for r in &records {
    println!("{} {} qty={} status={}", r.symbol, r.exercise_type, r.quantity, r.status);
}

Response Example

[
  {
    "id": 12345,
    "contract_id": 55678,
    "symbol": "AAPL",
    "expiry": "20260919",
    "strike": 200.0,
    "right": "CALL",
    "exercise_type": "Exercise",
    "quantity": 1.0,
    "status": "Submitted",
    "executing_date": "2026-09-19",
    "create_time": 1719216000000
  }
]

Did this page help you?