OptionStratLib v0.13.1: Financial Options Library
Table of Contents
- Introduction
- Features
- Core Modules
- Trading Strategies
- Setup Instructions
- Library Usage
- Usage Examples
- Testing
- Contribution and Contact
Introduction
OptionStratLib is a comprehensive Rust library for options trading and strategy development across multiple asset classes. This versatile toolkit enables traders, quants, and developers to model, analyze, and visualize options strategies with a robust, type-safe approach. The library focuses on precision with decimal-based calculations, extensive test coverage, and a modular architecture built on modern Rust 2024 edition.
Features
1. Pricing Models
- Black-Scholes Model: European options pricing with full Greeks support
- Binomial Tree Model: American and European options with early exercise capability
- Monte Carlo Simulations: Complex pricing scenarios and path-dependent options
- Telegraph Process Model: Advanced stochastic modeling for jump-diffusion processes
2. Greeks Calculation
- Complete Greeks suite: Delta, Gamma, Theta, Vega, Rho, Vanna, Vomma, Veta, Charm, Color
- Real-time sensitivity analysis
- Greeks visualization and risk profiling
- Custom Greeks implementations with adjustable parameters
3. Volatility Models
- Implied volatility calculation using Newton-Raphson method
- Volatility surface construction and interpolation
- Historical volatility estimation
- Advanced volatility modeling tools
4. Option Chain Management
- Complete option chain construction and analysis
- Strike price generation algorithms
- Chain data import/export (CSV/JSON formats)
- Advanced filtering and selection tools
- Option data grouping and organization
5. Trading Strategies (25+ Strategies)
- Single Leg: Long/Short Calls and Puts
- Spreads: Bull/Bear Call/Put Spreads
- Butterflies: Long/Short Butterfly Spreads, Call Butterfly
- Complex: Iron Condor, Iron Butterfly
- Volatility: Long/Short Straddles and Strangles
- Income: Covered Calls, Poor Man's Covered Call
- Protection: Protective Puts, Collars
- Custom: Flexible custom strategy framework
6. Risk Management & Analysis
- Position tracking and management
- Break-even analysis with multiple break-even points
- Profit/Loss calculations at various price points
- Risk profiles and comprehensive visualizations
- Delta neutrality analysis and adjustment
- Probability analysis for strategy outcomes
7. Backtesting Framework
- Comprehensive backtesting engine
- Performance metrics calculation
- Strategy optimization tools
- Historical analysis capabilities
8. Simulation Tools
- Monte Carlo simulations for strategy testing
- Telegraph process implementation
- Random walk simulations
- Custom simulation frameworks
- Parametrized simulations with adjustable inputs
9. Visualization & Plotting
- Strategy payoff diagrams
- Greeks visualization
- 3D volatility surfaces
- Risk profiles and P&L charts
- Interactive charts (powered by
plotly.rs) - Binomial tree visualization
- Comprehensive plotting utilities
10. Data Management
- Efficient decimal-based calculations using
rust_decimal - CSV/JSON import/export functionality
- Time series data handling
- Price series management and manipulation
- Robust data validation and error handling
11. Mathematical Tools
- Curve interpolation techniques
- Surface construction and analysis
- Geometric operations for financial modeling
- Advanced mathematical utilities for options pricing
Core Modules
The library is organized into the following key modules:
Model (model/)
Core data structures and types for options trading:
option.rs: Complete option structures with pricing and Greeksposition.rs: Position management and P&L trackingexpiration.rs: Flexible expiration date handling (Days/DateTime)positive.rs: Type-safe positive number implementationtypes.rs: Common enums (OptionType, Side, OptionStyle)trade.rs: Trade execution and managementformat.rs: Data formatting utilities
Pricing Models (pricing/)
Advanced pricing engines for options valuation:
black_scholes_model.rs: European options pricing with Greeksbinomial_model.rs: American/European options with early exercisemonte_carlo.rs: Path-dependent and exotic options pricingtelegraph.rs: Jump-diffusion process modelingpayoff.rs: Payoff function implementations
Strategies (strategies/)
Comprehensive trading strategy implementations:
base.rs: Core traits (Strategable, BasicAble, Positionable, etc.)- Single Leg:
long_call.rs,short_call.rs,long_put.rs,short_put.rs - Spreads:
bull_call_spread.rs,bear_call_spread.rs,bull_put_spread.rs,bear_put_spread.rs - Butterflies:
long_butterfly_spread.rs,short_butterfly_spread.rs,call_butterfly.rs - Complex:
iron_condor.rs,iron_butterfly.rs - Volatility:
long_straddle.rs,short_straddle.rs,long_strangle.rs,short_strangle.rs - Income:
covered_call.rs,poor_mans_covered_call.rs - Protection:
protective_put.rs,collar.rs custom.rs: Flexible custom strategy frameworkprobabilities/: Probability analysis for strategy outcomesdelta_neutral/: Delta neutrality analysis and adjustment
Volatility (volatility/)
Volatility modeling and analysis:
utils.rs: Implied volatility calculation (Newton-Raphson method)traits.rs: Volatility model interfaces- Advanced volatility surface construction
Greeks (greeks/)
Complete Greeks calculation suite:
- Delta, Gamma, Theta, Vega, Rho, Vanna, Vomma, Veta, Charm, Color calculations
- Real-time sensitivity analysis
- Greeks-based risk management
Chains (chains/)
Option chain management and analysis:
chain.rs: Option chain construction and manipulationutils.rs: Chain analysis and filtering tools- CSV/JSON import/export functionality
- Strike price generation algorithms
Backtesting (backtesting/)
Strategy performance analysis:
metrics.rs: Performance metrics calculationresults.rs: Backtesting results managementtypes.rs: Backtesting data structures
Simulation (simulation/)
Monte Carlo and stochastic simulations:
- Random walk implementations
- Telegraph process modeling
- Custom simulation frameworks
- Parametrized simulation tools
Visualization (visualization/)
Comprehensive plotting and charting:
plotly.rs: Interactive charts with Plotly integration- Strategy payoff diagrams
- Greeks visualization
- 3D volatility surfaces
- Risk profile charts
Risk Management (risk/)
Risk analysis and management tools:
- Position risk metrics
- Break-even analysis
- Risk profile generation
P&L (pnl/)
Profit and loss calculation:
- Real-time P&L tracking
- Historical P&L analysis
- Performance attribution
Curves & Surfaces (curves/, surfaces/)
Mathematical tools for financial modeling:
- Curve interpolation techniques
- Surface construction and analysis
- 3D visualization capabilities
Error Handling (error/)
Robust error management:
- Comprehensive error types for each module
- Type-safe error propagation
- Detailed error reporting
Core Components
classDiagram
class Options {
+option_type: OptionType
+side: Side
+underlying_symbol: String
+strike_price: Positive
+expiration_date: ExpirationDate
+implied_volatility: Positive
+quantity: Positive
+underlying_price: Positive
+risk_free_rate: Decimal
+option_style: OptionStyle
+dividend_yield: Positive
+exotic_params: Option~ExoticParams~
+calculate_price_black_scholes()
+calculate_price_binomial()
+time_to_expiration()
+is_long()
+is_short()
+validate()
+to_plot()
+calculate_implied_volatility()
+delta()
+gamma()
+theta()
+vega()
+rho()
+vanna()
+vomma()
+veta()
+charm()
+color()
}
class Position {
+option: Options
+position_cost: Positive
+entry_date: DateTime<Utc>
+open_fee: Positive
+close_fee: Positive
+net_cost()
+net_premium_received()
+unrealized_pnl()
+pnl_at_expiration()
+validate()
}
class ExpirationDate {
+Days(Positive)
+Date(NaiveDate)
+get_years()
+get_date()
+get_date_string()
+from_string()
}
class Positive {
+value: Decimal
+ZERO: Positive
+ONE: Positive
+format_fixed_places()
+round_to_nice_number()
+is_positive()
}
class OptionStyle {
<<enumeration>>
Call
Put
}
class OptionType {
<<enumeration>>
European
American
}
class Side {
<<enumeration>>
Long
Short
}
class Graph {
<<interface>>
+graph_data()
+graph_config()
+to_plot()
+write_html()
+write_png()
+write_svg()
+write_jpeg()
}
class Greeks {
<<interface>>
+delta()
+gamma()
+theta()
+vega()
+rho()
+calculate_all_greeks()
}
Options --|> Greeks : implements
Options --|> Graph : implements
Position o-- Options : contains
Options *-- OptionStyle : has
Options *-- OptionType : has
Options *-- Side : has
Options *-- ExpirationDate : has
Options *-- Positive : uses
Trading Strategies
OptionStratLib provides 25+ comprehensive trading strategies organized by complexity and market outlook:
Single Leg Strategies
Basic directional strategies for beginners:
- Long Call: Bullish strategy with unlimited upside potential
- Short Call: Bearish strategy collecting premium with limited profit
- Long Put: Bearish strategy with high profit potential
- Short Put: Bullish strategy collecting premium with assignment risk
Spread Strategies
Defined risk strategies with limited profit/loss:
- Bull Call Spread: Moderately bullish with limited risk and reward
- Bear Call Spread: Moderately bearish credit spread
- Bull Put Spread: Moderately bullish credit spread
- Bear Put Spread: Moderately bearish debit spread
Butterfly Strategies
Market neutral strategies profiting from low volatility:
- Long Butterfly Spread: Profits from price staying near middle strike
- Short Butterfly Spread: Profits from price moving away from middle strike
- Call Butterfly: Butterfly using only call options
Complex Multi-Leg Strategies
Advanced strategies for experienced traders:
- Iron Condor: Market neutral strategy with wide profit zone
- Iron Butterfly: Market neutral strategy with narrow profit zone
Volatility Strategies
Strategies that profit from volatility changes:
- Long Straddle: Profits from high volatility in either direction
- Short Straddle: Profits from low volatility (range-bound market)
- Long Strangle: Similar to straddle but with different strikes
- Short Strangle: Credit strategy profiting from low volatility
Income Generation Strategies
Strategies focused on generating regular income:
- Covered Call: Stock ownership with call selling for income
- Poor Man's Covered Call: LEAPS-based covered call alternative
Protection Strategies
Risk management and hedging strategies:
- Protective Put: Downside protection for stock positions
- Collar: Combination of covered call and protective put
Custom Strategy Framework
- Custom Strategy: Flexible framework for creating any multi-leg strategy
- Supports unlimited number of legs
- Full integration with all analysis tools
- Complete trait implementation for consistency
Strategy Analysis Features
All strategies include comprehensive analysis capabilities:
- Profit/Loss Analysis: P&L at any price point and time
- Break-Even Points: Multiple break-even calculations
- Greeks Analysis: Real-time risk metrics
- Probability Analysis: Success probability calculations
- Delta Neutrality: Delta-neutral position analysis
- Visualization: Interactive payoff diagrams and risk profiles
- Optimization: Find optimal strikes and expirations
Strategy Traits System
All strategies implement a comprehensive trait system:
- Strategable: Master trait combining all strategy capabilities
- BasicAble: Basic strategy information (symbol, price, etc.)
- Positionable: Position management and modification
- Strategies: Core strategy calculations (P&L, break-even, etc.)
- Validable: Strategy validation and error checking
- BreakEvenable: Break-even point calculations
- Profit: Profit/loss analysis at various price points
- Greeks: Greeks calculations for risk management
- DeltaNeutrality: Delta-neutral analysis and adjustments
- ProbabilityAnalysis: Outcome probability calculations
- Graph: Visualization and plotting capabilities
Setup Instructions
Prerequisites
- Rust 1.80 or higher (2024 edition)
- Cargo package manager
Installation
Add OptionStratLib to your Cargo.toml:
[]
= "0.6.1"
Or use cargo to add it to your project:
Optional Features
The library includes optional features for enhanced functionality:
[]
= { = "0.6.1", = ["plotly"] }
plotly: Enables interactive visualization using plotly.rs
Building from Source
Clone the repository and build using Cargo:
Run comprehensive test suite:
Generate documentation:
Run benchmarks:
Library Usage
Basic Option Creation and Pricing
use ;
use pos;
use dec;
use Greeks;
// Create a European call option
let option = new;
// Calculate option price using Black-Scholes
let price = option.calculate_price_black_scholes.unwrap;
info!;
// Calculate Greeks for risk management
let delta = option.delta.unwrap;
let gamma = option.gamma.unwrap;
let theta = option.theta.unwrap;
let vega = option.vega.unwrap;
let vanna = option.vanna.unwrap;
let vomma = option.vomma.unwrap;
let veta = option.veta.unwrap;
let charm = option.charm.unwrap;
let color = option.color.unwrap;
info!;
Working with Trading Strategies
use ;
use Strategies;
use BullCallSpread;
use ;
use Graph;
use dec;
use Error;
Advanced Features: Volatility Analysis
use *;
Custom Strategy Creation
use *;
// Define common parameters
let underlying_symbol = "DAX".to_string;
let underlying_price = pos!;
let expiration = Days;
let implied_volatility = pos!;
let risk_free_rate = dec!;
let dividend_yield = pos!;
let fee = pos!;
// Create a long put option
let long_put_option = new;
let long_put = new;
// Create a long call option
let long_call_option = new;
let long_call = new;
// Create CustomStrategy with the positions
let positions = vec!;
let strategy = new;
info!;
Testing
OptionStratLib includes a comprehensive test suite with over 1000 unit and integration tests:
Running Tests
Run all tests:
Run tests for specific modules:
Run tests with output:
Test Categories
- Unit Tests: Individual function and method testing
- Integration Tests: Cross-module functionality testing
- Strategy Tests: Comprehensive strategy validation
- Pricing Model Tests: Accuracy and performance testing
- Greeks Tests: Mathematical precision validation
- Visualization Tests: Chart generation and export testing
Benchmarking
Run performance benchmarks:
Generate test coverage report:
Examples
The library includes extensive examples organized by functionality:
examples/examples_strategies/: Complete strategy examples (25+ strategies)examples/examples_chains/: Option chain analysis examplesexamples/examples_pricing/: Pricing model demonstrationsexamples/examples_visualization/: Interactive chart examplesexamples/examples_volatility/: Volatility analysis examplesexamples/examples_simulation/: Monte Carlo and simulation examples
Run examples:
Contribution and Contact
Contributing
Contributions are welcome! Please follow these guidelines:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
Development Setup
Code Quality
- All code must pass
cargo clippywithout warnings - Format code with
cargo fmt - Add tests for new functionality
- Update documentation for API changes
- Follow Rust 2024 edition best practices
Support
- Issues: Report bugs and request features on GitHub
- Discussions: Join community discussions on GitHub Discussions
- Documentation: Comprehensive docs available at docs.rs
OptionStratLib v0.7.0 - Built with ❤️ in Rust for the financial community
Contribution and Contact
We welcome contributions to this project! If you would like to contribute, please follow these steps:
- Fork the repository.
- Create a new branch for your feature or bug fix.
- Make your changes and ensure that the project still builds and all tests pass.
- Commit your changes and push your branch to your forked repository.
- Submit a pull request to the main repository.
If you have any questions, issues, or would like to provide feedback, please feel free to contact the project maintainer:
Contact Information
- Author: Joaquín Béjar García
- Email: jb@taunais.com
- Telegram: @joaquin_bejar
- Repository: https://github.com/joaquinbejar/OptionStratLib
- Documentation: https://docs.rs/optionstratlib
We appreciate your interest and look forward to your contributions!
✍️ License
Licensed under MIT license