Options Forecasting and Trading Framework
Project description
OpTrade
OpTrade is a complete toolkit for quantitative research and development of options trading strategies. By abstracting away the complexity of data handling and experimental setup, researchers and traders can focus on what matters most: developing and testing alpha-generating ideas.
Installation
The recommended way to install OptTrade is via pip:
pip install optrade
Example (Single Contract)
# Step 1: Find and initialize the optimal contract
from optrade.data import Contract
contract = Contract.find_optimal(
root="AAPL",
start_date="20230103", # First trading day of 2023
target_tte=30, # Desired expiration: 30 days
tte_tolerance=(20, 40), # Min 20, max 40 days expiration
interval_min=1, # Data requested at 1-min level
moneyness="ATM", # At-the-money option
)
# Step 2: Load market data (NBBO quotes and OHLCV)
df = contract.load_data()
# Step 3: Transform raw data into ML-ready features
from optrade.data.features import transform_features
data = transform_features(
df=df,
core_feats=[
"option_returns", # Option price returns
"stock_returns", # Underlying stock returns
"moneyness", # Log(S/K)
"option_lob_imbalance", # Order book imbalance
"stock_quote_spread", # Bid-ask spread normalized
],
tte_feats=["sqrt", "exp_decay"], # Time-to-expiration features
datetime_feats=["minute_of_day", "hour_of_week"], # Time features
strike=contract.strike,
exp=contract.exp,
).values
# Step 4: Create dataset for time series forecasting
from optrade.data.forecasting import ForecastingDataset
from torch.utils.data import DataLoader
torch_dataset = ForecastingDataset(
data=data,
seq_len=100, # 100-minute lookback window
pred_len=10, # 10-minute forecast horizon
target_channels=[0], # Forecast option returns (first column)
)
torch_loader = DataLoader(torch_dataset)
Overview
🔄 Data Pipeline OpTrade integrates with ThetaData's API for affordable options and security data access (down to 1-min resolution). The framework processes NBBO quotes and OHLCVC metrics through a contract selection system optimizing for moneyness, expiration windows, and volatility-scaled strikes.
🌐 Market Environments Built-in market environments enable precise universe selection through multifaceted filtering. OpTrade supports composition by major indices, fundamental-based screening (e.g., PE ratio, market cap), and Fama-French model categorization.
🧪 Experimental Pipeline The experimentation framework supports PyTorch and scikit-learn for options forecasting with online Neptune logging, hyperparameter tuning, and model version control, supporting both online and offline experiment tracking.
🧮 Featurization OpTrade provides option market features including mid-price derivations, order book imbalance metrics, quote spreads, and moneyness calculations. Time-to-expiration transformations capture theta decay effects, while datetime features extract cyclical market patterns for intraday seasonality.
🤖 Models OpTrade includes several off-the-shelf PyTorch and scikit-learn models, including state-of-the-art architectures for time series forecasting alongside tried and true machine learning methods.
Advanced Usage
Multi-contract Data
# Step 1: Find optimal contracts within date range
from optrade.data import ContractDataset
contract_dataset = ContractDataset(
root="AMZN",
total_start_date="20220101",
total_end_date="20220301",
contract_stride=1,
interval_min=1,
right="P",
target_tte=3,
tte_tolerance=(1,10),
moneyness="ITM",
strike_band=0.05,
volatility_scaled=True,
volatility_scalar=0.1,
hist_vol=0.1117,
)
contract_dataset.generate()
# Step 2: Transform market data into ML-ready dataset
from optrade.data.torch import get_forecasting_dataset
from torch.utils.data import DataLoader
torch_dataset = get_forecasting_dataset(
contracts=contract_dataset,
core_feats=["option_returns"],
tte_feats=["sqrt"],
datetime_feats=["sin_minute_of_day"],
tte_tolerance=(25, 35),
seq_len=100,
pred_len=10,
verbose=True
)
torch_loader = DataLoader(torch_dataset)
Contact
For queries, please contact: xmootoo at gmail dot com.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file optrade-0.0.5.tar.gz.
File metadata
- Download URL: optrade-0.0.5.tar.gz
- Upload date:
- Size: 16.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.1 CPython/3.13.2 Darwin/23.2.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
befa6e5091ac369a9d8b6ad16f4a94361331877877373eee315526ab871ca33a
|
|
| MD5 |
b6948201f6ec7695cd8269a7584686d3
|
|
| BLAKE2b-256 |
7bc239c69c27704dcb985dfdcdb3f4733ae08fd080cdbb1b0084887f7f490630
|
File details
Details for the file optrade-0.0.5-py3-none-any.whl.
File metadata
- Download URL: optrade-0.0.5-py3-none-any.whl
- Upload date:
- Size: 17.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.1 CPython/3.13.2 Darwin/23.2.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b189d455cddfb250c034cd75fb768ea607d11fa070e9896f5fd63748ac0e936
|
|
| MD5 |
5c4849a4fdb9122d97586a85cf63a280
|
|
| BLAKE2b-256 |
12e60f425b81bfe26b454b8ed2ec98af152119ef9f274dcb9bf9dd2cd909d7f2
|