investfly.models.marketdata.FutureProduct

MONTH_CODE_TO_NUM: Dict[str, int] = {'F': 1, 'G': 2, 'H': 3, 'J': 4, 'K': 5, 'M': 6, 'N': 7, 'Q': 8, 'U': 9, 'V': 10, 'X': 11, 'Z': 12}
class FutureType(builtins.str, enum.Enum):

Enum representing high-level future product categories.

AGRICULTURE = <FutureType.AGRICULTURE: 'AGRICULTURE'>
CURRENCY = <FutureType.CURRENCY: 'CURRENCY'>
INTEREST = <FutureType.INTEREST: 'INTEREST'>
ENERGY = <FutureType.ENERGY: 'ENERGY'>
EQUITY_INDEX = <FutureType.EQUITY_INDEX: 'EQUITY_INDEX'>
METALS = <FutureType.METALS: 'METALS'>
CRYPTOCURRENCY = <FutureType.CRYPTOCURRENCY: 'CRYPTOCURRENCY'>
class FutureProduct(builtins.str, enum.Enum):

Future Product Enum. A few commented out since their contracts are not available.

futureType: FutureType
description: str
contractMultiplier: float
tickSize: float
listedMonths: List[str]
exchange: str
def getMonths(self) -> List[tuple[str, int]]:

Return (month_code, month_number) pairs in listed order.

MZC = <FutureProduct.MZC: 'MZC'>
LE = <FutureProduct.LE: 'LE'>
MZW = <FutureProduct.MZW: 'MZW'>
ZC = <FutureProduct.ZC: 'ZC'>
ZW = <FutureProduct.ZW: 'ZW'>
XW = <FutureProduct.XW: 'XW'>
XC = <FutureProduct.XC: 'XC'>
XK = <FutureProduct.XK: 'XK'>
ZS = <FutureProduct.ZS: 'ZS'>
MZS = <FutureProduct.MZS: 'MZS'>
MZL = <FutureProduct.MZL: 'MZL'>
MZM = <FutureProduct.MZM: 'MZM'>
HE = <FutureProduct.HE: 'HE'>
M6A = <FutureProduct.M6A: 'M6A'>
M6B = <FutureProduct.M6B: 'M6B'>
MCD = <FutureProduct.MCD: 'MCD'>
M6E = <FutureProduct.M6E: 'M6E'>
TN = <FutureProduct.TN: 'TN'>
UB = <FutureProduct.UB: 'UB'>
ZB = <FutureProduct.ZB: 'ZB'>
ZF = <FutureProduct.ZF: 'ZF'>
ZN = <FutureProduct.ZN: 'ZN'>
ZT = <FutureProduct.ZT: 'ZT'>
SR3 = <FutureProduct.SR3: 'SR3'>
RB = <FutureProduct.RB: 'RB'>
CL = <FutureProduct.CL: 'CL'>
MCL = <FutureProduct.MCL: 'MCL'>
NG = <FutureProduct.NG: 'NG'>
QG = <FutureProduct.QG: 'QG'>
HO = <FutureProduct.HO: 'HO'>
BZ = <FutureProduct.BZ: 'BZ'>
QM = <FutureProduct.QM: 'QM'>
MNG = <FutureProduct.MNG: 'MNG'>
NQ = <FutureProduct.NQ: 'NQ'>
MNQ = <FutureProduct.MNQ: 'MNQ'>
RTY = <FutureProduct.RTY: 'RTY'>
YM = <FutureProduct.YM: 'YM'>
ES = <FutureProduct.ES: 'ES'>
MES = <FutureProduct.MES: 'MES'>
M2K = <FutureProduct.M2K: 'M2K'>
VXM = <FutureProduct.VXM: 'VXM'>
VX = <FutureProduct.VX: 'VX'>
MYM = <FutureProduct.MYM: 'MYM'>
GC = <FutureProduct.GC: 'GC'>
MGC = <FutureProduct.MGC: 'MGC'>
SIL = <FutureProduct.SIL: 'SIL'>
SI = <FutureProduct.SI: 'SI'>
HG = <FutureProduct.HG: 'HG'>
PL = <FutureProduct.PL: 'PL'>
SIC = <FutureProduct.SIC: 'SIC'>
MHG = <FutureProduct.MHG: 'MHG'>
MXP = <FutureProduct.MXP: 'MXP'>
BTC = <FutureProduct.BTC: 'BTC'>
MBT = <FutureProduct.MBT: 'MBT'>
MET = <FutureProduct.MET: 'MET'>
ETH = <FutureProduct.ETH: 'ETH'>
def getMarginRate(self) -> float:
def getMarginRequirementPerContract(self) -> float:
def calculateMarginRequirement(self, price: float, quantity: float) -> float: