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
| Parameter | Type | Required | Description |
|---|---|---|---|
| req.account | Option<String> | No | Account |
| req.contract_id | Option<i64> | Yes | Contract ID |
| req.exercise_type | Option<String> | Yes | Exercise or Expire |
| req.quantity | Option<f64> | Yes | Exercise quantity |
| req.executing_date | Option<String> | Conditional | Required for Exercise type |
| req.is_force | Option<bool> | Conditional | Required for Exercise type |
| req.itm_rate | Option<i32> | No | For Expire type, range 0..10 |
| req.secret_key | Option<String> | No | Institutional 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| req.account | Option<String> | No | Account |
| req.id | Option<i64> | Yes | Exercise record ID |
| req.secret_key | Option<String> | No | Institutional 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| req.account | Option<String> | No | Account |
| req.contract_id | Option<i64> | Yes | Contract ID |
| req.exercise_type | Option<String> | Yes | Exercise type |
| req.quantity | Option<f64> | Yes | Exercise quantity |
| req.executing_date | Option<String> | Conditional | Required 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| req.account | Option<String> | No | Account |
| req.page | Option<i32> | No | Page number |
| req.page_size | Option<i32> | No | Page size |
Response
| Field | Type | Description |
|---|---|---|
| contract_id | i64 | Contract ID |
| symbol | String | Symbol |
| expiry | String | Expiration date |
| strike | f64 | Strike price |
| right | String | PUT/CALL |
| position | f64 | Position quantity |
| market | String | Market |
| currency | String | Currency |
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
| Parameter | Type | Required | Description |
|---|---|---|---|
| req.account | Option<String> | No | Account |
| req.page | Option<i32> | No | Page number |
| req.page_size | Option<i32> | No | Page size |
Response
| Field | Type | Description |
|---|---|---|
| id | i64 | Record ID |
| contract_id | i64 | Contract ID |
| symbol | String | Symbol |
| expiry | String | Expiration date |
| strike | f64 | Strike price |
| right | String | PUT/CALL |
| exercise_type | String | Exercise/Expire |
| quantity | f64 | Exercise quantity |
| status | String | Status |
| executing_date | String | Execution date |
| create_time | i64 | Created 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
}
]Updated 1 day ago
