zfin/src/models/option.zig

35 lines
891 B
Zig

const Date = @import("date.zig").Date;
pub const ContractType = enum {
call,
put,
};
/// A single options contract in a chain.
pub const OptionContract = struct {
/// Full OCC symbol (e.g., "O:AAPL211022C000150000")
contract_symbol: ?[]const u8 = null,
contract_type: ContractType,
strike: f64,
expiration: Date,
bid: ?f64 = null,
ask: ?f64 = null,
last_price: ?f64 = null,
volume: ?u64 = null,
open_interest: ?u64 = null,
implied_volatility: ?f64 = null,
// Greeks
delta: ?f64 = null,
gamma: ?f64 = null,
theta: ?f64 = null,
vega: ?f64 = null,
};
/// Full options chain for an underlying asset at a given expiration.
pub const OptionsChain = struct {
underlying_symbol: []const u8,
underlying_price: ?f64 = null,
expiration: Date,
calls: []const OptionContract,
puts: []const OptionContract,
};