OptionStratLib v0.16.5: 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
- American Options: Barone-Adesi-Whaley approximation for early exercise
- Exotic Options: Complete support for 14 exotic option types (see below)
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 (with spot leg support), Poor Man's Covered Call
- Protection: Protective Puts, Collars
- Custom: Flexible custom strategy framework
- Multi-Asset: Strategies combining options with spot, futures, or perpetuals
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
12. Exotic Option Pricing
Complete pricing support for all exotic option types:
- Asian: Arithmetic and geometric average price options
- Barrier: Up/Down, In/Out barrier options with rebates
- Binary: Cash-or-nothing and asset-or-nothing options
- Lookback: Fixed and floating strike lookback options
- Compound: Options on options
- Chooser: Options to choose call or put at future date
- Cliquet: Forward-starting options with local caps/floors
- Rainbow: Multi-asset best-of/worst-of options
- Spread: Kirk's approximation for price differentials
- Quanto: Currency-protected options
- Exchange: Margrabe's formula for asset exchange
- Power: Non-linear payoff options
Quality & Discipline (0.16.x)
The 0.16 line is a quality-hardening release. Every change below is
enforced crate-wide and documented in CHANGELOG.md:
- Checked
Decimalarithmetic. Every monetary-path kernel routes throughd_add/d_sub/d_mul/d_div/d_sum/d_sum_iterinmodel::decimal. Overflow on any monetary expression surfacesDecimalError::Overflow { operation, lhs, rhs }tagged with a static call-site string; no silent wraparound. - Non-finite
f64guards. Everyf64 → Decimalboundary inside pricing, Greeks, volatility, and simulation is wrapped withfinite_decimal(..)and surfaces a domain-specificNonFinite { context, value }variant (PricingError,GreeksError,VolatilityError,SimulationError) instead of collapsing silently toDecimal::ZERO. NonZeroUsizestep counts.price_binomial,monte_carlo_option_pricing,telegraphand related kernels takestd::num::NonZeroUsizeforsteps/simulations; zero is structurally invalid at the type level. Use thenz!(N)macro at literal call sites.Positiveat every public boundary. Monetary values, strikes, quantities, volatilities arePositive(newtype aroundDecimal). Strategy-level P&L goes throughPositive::new_decimal(..)at every point where a signedDecimalwould otherwise be clamped toPositive, so inverted strikes or out-of-range optimizer candidates return typedStrategyErrorrather than panicking.- Zero unchecked indexing in production code.
#![deny(clippy::indexing_slicing)]is enforced crate-wide with scoped, documented escapes per module. Tests stay permissive via#![cfg_attr(test, allow(..))]. Production paths use.get(..).ok_or_else(..)with typed errors. - Doc coverage floor.
#![deny(missing_docs, rustdoc::broken_intra_doc_links)]. Everypubitem has a///summary; everyResultreturner documents its# Errorscontract. - Structured tracing.
#[tracing::instrument]on the public hot paths:pricing::black_scholes,pricing::monte_carlo_option_pricing,pricing::price_binomial,volatility::implied_volatility, and the strategy optimizer entry pointsget_best_ratio/get_best_area. Noprintln!/eprintln!/dbg!/log::anywhere insrc/. - Compiler-attribute discipline.
#[must_use]on every pure function and builder,#[inline]on small hot-path helpers,#[cold] #[inline(never)]on every error constructor,#[repr(u8)]on small stable enums, canonical#[derive]ordering. - Deterministic simulation tests.
utils::deterministic_rng(seed)provides a canonical seededStdRngfor Monte-Carlo / simulation tests, so precision shifts in upstream arithmetic cannot flip assertions by luck. - Pricing-identity regression tests.
tests/unit/pricing/identities_test.rslocks put-call parity on a grid, CRR binomial convergence to Black-Scholes, and the Greek sanity identities (Γ_c = Γ_p,Vega_c = Vega_p,Δ_c − Δ_p ≈ e^{-qT}).
Arithmetic-Error Cascade
flowchart LR
subgraph Kernels["Numeric kernels (model / pricing / greeks / volatility / simulation)"]
DADD["d_add / d_sub / d_mul / d_div"]
DSUM["d_sum / d_sum_iter"]
FD["finite_decimal(f64)"]
end
subgraph Errors["Typed errors (error/*)"]
DOV["DecimalError::Overflow { operation, lhs, rhs }"]
PNF["PricingError::NonFinite { context, value }"]
GNF["GreeksError::NonFinite"]
VNF["VolatilityError::NonFinite"]
SNF["SimulationError::NonFinite"]
end
DADD -- "checked_*" --> DOV
DSUM -- "checked_*" --> DOV
FD -- "NaN / ±∞ guard" --> PNF
FD --> GNF
FD --> VNF
FD --> SNF
DOV -- "#[from]" --> PNF
DOV -- "#[from]" --> GNF
DOV -- "#[from]" --> VNF
DOV -- "#[from]" --> SNF
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 utilitiesleg/: Multi-instrument leg support for strategiestraits.rs: Common leg traits (LegAble,Marginable,Fundable,Expirable)spot.rs:SpotPositionfor underlying asset positionsperpetual.rs:PerpetualPositionfor crypto perpetual swapsfuture.rs:FuturePositionfor exchange-traded futuresleg_enum.rs:Legenum unifying all position types
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 implementationsamerican.rs: Barone-Adesi-Whaley approximation- Exotic Options:
asian.rs: Asian option pricingbarrier.rs: Barrier option pricingbinary.rs: Binary/Digital option pricinglookback.rs: Lookback option pricingcompound.rs: Compound option pricingchooser.rs: Chooser option pricingcliquet.rs: Cliquet option pricingrainbow.rs: Rainbow option pricingspread.rs: Spread option pricingquanto.rs: Quanto option pricingexchange.rs: Exchange option pricingpower.rs: Power option pricing
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
Metrics (metrics/)
Performance, risk, and liquidity metrics analysis:
- Price Metrics: Volatility skew curves
- Risk Metrics:
- Implied Volatility curves (by strike) and surfaces (strike vs time)
- Risk Reversal curves (by strike)
- Dollar Gamma curves (by strike)
- Composite Metrics:
- Vanna-Volga Hedge surfaces (price vs volatility)
- Delta-Gamma Profile curves (by strike) and surfaces (price vs time)
- Smile Dynamics curves (by strike) and surfaces (strike vs time)
- Liquidity Metrics:
- Bid-Ask Spread curves (by strike)
- Volume Profile curves (by strike) and surfaces (strike vs time)
- Open Interest Distribution curves (by strike)
- Stress Metrics:
- Volatility Sensitivity curves (by strike) and surfaces (price vs volatility)
- Time Decay Profile curves (by strike) and surfaces (price vs time)
- Price Shock Impact curves (by strike) and surfaces (price vs volatility)
- Temporal Metrics:
- Theta curves (by strike) and surfaces (price vs time)
- Charm (Delta Decay) curves (by strike) and surfaces (price vs time)
- Color (Gamma Decay) curves (by strike) and surfaces (price vs time)
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 Leg {
<<enumeration>>
Option(Position)
Spot(SpotPosition)
Future(FuturePosition)
Perpetual(PerpetualPosition)
+is_option()
+is_spot()
+is_linear()
+delta()
+pnl_at_price()
}
class SpotPosition {
+symbol: String
+quantity: Positive
+cost_basis: Positive
+side: Side
+date: DateTime<Utc>
+open_fee: Positive
+close_fee: Positive
+pnl_at_price()
+delta()
+market_value()
+break_even_price()
}
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
Bermuda
Asian
Barrier
Binary
Lookback
Compound
Chooser
Cliquet
Rainbow
Spread
Quanto
Exchange
Power
}
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
Leg o-- Position : Option variant
Leg o-- SpotPosition : Spot variant
SpotPosition *-- Side : has
SpotPosition *-- Positive : uses
Options *-- OptionStyle : has
Options *-- OptionType : has
Options *-- Side : has
Options *-- ExpirationDate : has
Options *-- Positive : uses
Pricing Models Architecture
flowchart TB
subgraph Standard["Standard Options"]
EU[European]
AM[American]
BE[Bermuda]
end
subgraph PathDependent["Path-Dependent"]
AS[Asian]
LB[Lookback]
BA[Barrier]
CL[Cliquet]
end
subgraph MultiAsset["Multi-Asset"]
RB[Rainbow]
SP[Spread]
EX[Exchange]
end
subgraph Special["Special Payoffs"]
BI[Binary]
PW[Power]
QU[Quanto]
CO[Compound]
CH[Chooser]
end
BS[black_scholes] --> EU
BS --> PathDependent
BS --> MultiAsset
BS --> Special
BAW[barone_adesi_whaley] --> AM
BIN[binomial_model] --> AM
BIN --> BE
MC[monte_carlo] --> PathDependent
Strategy Traits System
classDiagram
class Strategable {
<<trait>>
Master trait combining all capabilities
}
class BasicAble {
<<trait>>
+get_underlying_price()
+get_underlying_symbol()
+get_expiration()
+get_title()
}
class Positionable {
<<trait>>
+get_positions()
+add_position()
+modify_position()
}
class Strategies {
<<trait>>
+get_net_premium_received()
+get_max_profit()
+get_max_loss()
+get_total_cost()
}
class BreakEvenable {
<<trait>>
+get_break_even_points()
+calculate_break_even()
}
class Profit {
<<trait>>
+get_point_at_price()
+calculate_profit_at()
}
class Greeks {
<<trait>>
+delta()
+gamma()
+theta()
+vega()
}
class DeltaNeutrality {
<<trait>>
+get_delta()
+suggest_delta_adjustments()
}
class Graph {
<<trait>>
+to_plot()
+write_html()
+write_png()
}
Strategable --|> BasicAble
Strategable --|> Positionable
Strategable --|> Strategies
Strategable --|> BreakEvenable
Strategable --|> Profit
Strategable --|> Greeks
Strategable --|> DeltaNeutrality
Strategable --|> Graph
Metrics Framework
flowchart LR
subgraph OptionChain
OC[OptionChain]
end
subgraph Curves["Curve Metrics"]
IV_C[IV Curve]
RR_C[Risk Reversal]
DG_C[Dollar Gamma]
TH_C[Theta Curve]
VA_C[Vanna Curve]
SK_C[Skew Curve]
end
subgraph Surfaces["Surface Metrics"]
IV_S[IV Surface]
TH_S[Theta Surface]
CH_S[Charm Surface]
VS_S[Vol Sensitivity]
TD_S[Time Decay]
end
OC --> Curves
OC --> Surfaces
Curves --> |"2D Analysis"| Analysis[Risk Analysis]
Surfaces --> |"3D Analysis"| Analysis
Observability
Public hot paths are annotated with #[tracing::instrument].
Enable a subscriber in the consumer crate (the library itself never
installs one) to surface structured spans:
flowchart LR
APP[Consumer application] -- "installs" --> SUB["tracing_subscriber"]
subgraph Spans["Instrumented public fns"]
BS["pricing::black_scholes\n(strike, style, side)"]
MC["pricing::monte_carlo_option_pricing\n(steps, simulations, strike, style, side)"]
BI["pricing::price_binomial\n(strike, asset, steps, style, side)"]
IV["volatility::implied_volatility\n(market_price, strike, max_iterations)"]
OPT["Optimizable::get_best_ratio/area\n(side, criteria)"]
end
BS --> SUB
MC --> SUB
BI --> SUB
IV --> SUB
OPT --> SUB
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/spot ownership with call selling for income (now with full spot leg support)
- 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.85 or higher (Rust 2024 edition)
- Cargo package manager
Installation
Add OptionStratLib to your Cargo.toml:
[]
= "0.16.5"
Or use cargo to add it to your project:
Optional Features
The library includes optional features for enhanced functionality:
[]
= { = "0.16.5", = ["plotly"] }
plotly: Enables interactive visualization using plotly.rsstatic_export: PNG / SVG export viaplotly_static(pulls in async runtime)async: Enables asynchronous I/O operations for OptionChain and OHLCV data (tokio + reqwest + futures)
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 ;
use dec;
use Greeks;
Working with Trading Strategies
use ;
use ExpirationDate;
use Strategies;
use BullCallSpread;
use ;
use Graph;
use dec;
use Error;
Advanced Features: Volatility Analysis
use *;
Custom Strategy Creation
use *;
Testing
OptionStratLib ships with a large, fully deterministic test suite (3760 unit / integration tests + 205 doctests + property- and identity-based regressions):
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 under
tests/ - Strategy Tests: Comprehensive strategy validation
- Pricing Model Tests: Accuracy and performance testing
- Greeks Tests: Mathematical precision validation
- Visualization Tests: Chart generation and export testing
- Property-Based Tests: Mathematical invariant testing with
proptest(tests/property/put_call_parity_test.rs,greeks_bounds_test.rs) - Identity Regression Tests:
tests/unit/pricing/identities_test.rslocks put-call parity, CRR → Black-Scholes convergence, and Greek sanity (Γ_c = Γ_p,Vega_c = Vega_p,Δ_c − Δ_p ≈ e^{-qT}). - Deterministic Monte-Carlo Tests: Seeded via
[
utils::deterministic_rng] so arithmetic-precision shifts can't flip assertions. - Exotic Options Tests: Complete coverage for all 14 exotic option types.
Benchmarking
Run performance benchmarks:
Generate test coverage report:
Examples
Examples live in self-contained sub-crates under examples/, each
with its own Cargo.toml:
examples_strategies/: 25+ strategy demosexamples_strategies_best/: Optimizer entry points (get_best_area/get_best_ratio) per strategyexamples_strategies_delta/: Delta-neutrality workflowsexamples_chain/: Option chain construction, import/export, and async I/Oexamples_curves/: Greek curves (charm,color,d1,d2,delta,gamma,rho,theta, …) and vector curvesexamples_surfaces/: 3-D volatility surfacesexamples_metrics/: Price / risk / liquidity / stress / temporal / composite metric curves and surfacesexamples_volatility/: Implied-volatility solver walkthroughsexamples_simulation/: Monte-Carlo random-walk demos forLongCall,ShortPut, position / strategy simulators, and random-walk-of-chainexamples_exotics/: Exotic option pricing (barrier, cliquet, …)examples_visualization/: Interactive chart wiring
Run any binary with the usual cargo invocation (from the repo root, so relative data-fixture paths resolve correctly):
Simulation-heavy demos (*_strategy_simulation, position_simulator,
strategy_simulator, random_walk_chain) use a demo-friendly
hourly grid so cargo run finishes in a few seconds in debug mode;
bump n_steps / n_simulations inside the binary if you want a
finer sample.
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.16.5 - 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