Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion examples/option_graph.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
******************************************************************************/
use optionstratlib::greeks::equations::Greeks;
use optionstratlib::model::option::Options;
use optionstratlib::model::types::PositiveF64;
use optionstratlib::model::types::{ExpirationDate, OptionStyle, OptionType, Side};
use optionstratlib::pos;
use optionstratlib::utils::logger::setup_logger;
use optionstratlib::visualization::utils::Graph;
use std::error::Error;
Expand All @@ -19,7 +21,7 @@ fn create_sample_option() -> Options {
100.0,
ExpirationDate::Days(30.0),
0.2,
1,
pos!(1.0),
105.0,
0.05,
OptionStyle::Call,
Expand Down
4 changes: 3 additions & 1 deletion examples/position_graph.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
use chrono::Utc;
use optionstratlib::model::option::Options;
use optionstratlib::model::position::Position;
use optionstratlib::model::types::PositiveF64;
use optionstratlib::model::types::{ExpirationDate, OptionStyle, OptionType, Side};
use optionstratlib::pos;
use optionstratlib::visualization::utils::Graph;
use std::error::Error;

Expand All @@ -18,7 +20,7 @@ fn create_sample_option() -> Options {
100.0,
ExpirationDate::Days(30.0),
0.2,
10,
pos!(10.0),
105.0,
0.05,
OptionStyle::Call,
Expand Down
22 changes: 12 additions & 10 deletions examples/strategy_bull_call_spread.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
Date: 25/9/24
******************************************************************************/
use optionstratlib::model::types::ExpirationDate;
use optionstratlib::model::types::PositiveF64;
use optionstratlib::pos;
use optionstratlib::strategies::base::Strategies;
use optionstratlib::strategies::bull_call_spread::BullCallSpread;
use optionstratlib::utils::logger::setup_logger;
Expand All @@ -22,16 +24,16 @@ fn main() -> Result<(), Box<dyn Error>> {
5750.0, // long_strike_itm
5820.0, // short_strike
ExpirationDate::Days(2.0),
0.18, // implied_volatility
0.05, // risk_free_rate
0.0, // dividend_yield
2, // long quantity
85.04, // premium_long
29.85, // premium_short
0.78, // open_fee_long
0.78, // open_fee_long
0.73, // close_fee_long
0.73, // close_fee_short
0.18, // implied_volatility
0.05, // risk_free_rate
0.0, // dividend_yield
pos!(2.0), // long quantity
85.04, // premium_long
29.85, // premium_short
0.78, // open_fee_long
0.78, // open_fee_long
0.73, // close_fee_long
0.73, // close_fee_short
);

let price_range = strategy.best_range_to_show(1.0).unwrap();
Expand Down
26 changes: 14 additions & 12 deletions examples/strategy_call_butterfly.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
Date: 25/9/24
******************************************************************************/
use optionstratlib::model::types::ExpirationDate;
use optionstratlib::model::types::PositiveF64;
use optionstratlib::pos;
use optionstratlib::strategies::base::Strategies;
use optionstratlib::strategies::call_butterfly::CallButterfly;
use optionstratlib::utils::logger::setup_logger;
Expand All @@ -23,18 +25,18 @@ fn main() -> Result<(), Box<dyn Error>> {
5850.0, // long_strike_otm
5800.0, // short_strike
ExpirationDate::Days(2.0),
0.18, // implied_volatility
0.05, // risk_free_rate
0.0, // dividend_yield
1, // long quantity
2, // short_quantity
85.04, // premium_long
31.65, // premium_short
53.04, // open_fee_long
0.78, // open_fee_long
0.78, // close_fee_long
0.73, // close_fee_short
0.73, // close_fee_short
0.18, // implied_volatility
0.05, // risk_free_rate
0.0, // dividend_yield
pos!(1.0), // long quantity
pos!(2.0), // short_quantity
85.04, // premium_long
31.65, // premium_short
53.04, // open_fee_long
0.78, // open_fee_long
0.78, // close_fee_long
0.73, // close_fee_short
0.73, // close_fee_short
);

let price_range: Vec<f64> = (5681..=5881).map(|x| x as f64).collect();
Expand Down
26 changes: 14 additions & 12 deletions examples/strategy_call_butterfly_best_area.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
use optionstratlib::constants::ZERO;
use optionstratlib::model::chain::OptionChain;
use optionstratlib::model::types::ExpirationDate;
use optionstratlib::model::types::PositiveF64;
use optionstratlib::pos;
use optionstratlib::strategies::base::Strategies;
use optionstratlib::strategies::call_butterfly::CallButterfly;
use optionstratlib::strategies::utils::FindOptimalSide;
Expand All @@ -26,18 +28,18 @@ fn main() -> Result<(), Box<dyn Error>> {
ZERO, // long_strike_otm
ZERO, // short_strike
ExpirationDate::Days(2.0),
ZERO, // implied_volatility
0.05, // risk_free_rate
ZERO, // dividend_yield
2, // long quantity
4, // short_quantity
ZERO, // premium_long_itm
ZERO, // premium_long_otm
ZERO, // premium_short
0.78, // open_fee_long
0.78, // close_fee_long
0.73, // close_fee_short
0.73, // close_fee_short
ZERO, // implied_volatility
0.05, // risk_free_rate
ZERO, // dividend_yield
pos!(2.0), // long quantity
pos!(4.0), // short_quantity
ZERO, // premium_long_itm
ZERO, // premium_long_otm
ZERO, // premium_short
0.78, // open_fee_long
0.78, // close_fee_long
0.73, // close_fee_short
0.73, // close_fee_short
);

strategy.best_area(&option_chain, FindOptimalSide::Upper);
Expand Down
26 changes: 14 additions & 12 deletions examples/strategy_call_butterfly_best_ratio.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
use optionstratlib::constants::ZERO;
use optionstratlib::model::chain::OptionChain;
use optionstratlib::model::types::ExpirationDate;
use optionstratlib::model::types::PositiveF64;
use optionstratlib::pos;
use optionstratlib::strategies::base::Strategies;
use optionstratlib::strategies::call_butterfly::CallButterfly;
use optionstratlib::strategies::utils::FindOptimalSide;
Expand All @@ -26,18 +28,18 @@ fn main() -> Result<(), Box<dyn Error>> {
ZERO, // long_strike_otm
ZERO, // short_strike
ExpirationDate::Days(2.0),
ZERO, // implied_volatility
0.05, // risk_free_rate
ZERO, // dividend_yield
2, // long quantity
4, // short_quantity
ZERO, // premium_long_itm
ZERO, // premium_long_otm
ZERO, // premium_short
0.78, // open_fee_long
0.78, // close_fee_long
0.73, // close_fee_short
0.73, // close_fee_short
ZERO, // implied_volatility
0.05, // risk_free_rate
ZERO, // dividend_yield
pos!(2.0), // long quantity
pos!(4.0), // short_quantity
ZERO, // premium_long_itm
ZERO, // premium_long_otm
ZERO, // premium_short
0.78, // open_fee_long
0.78, // close_fee_long
0.73, // close_fee_short
0.73, // close_fee_short
);

strategy.best_ratio(&option_chain, FindOptimalSide::Range(5700.0, 5900.0));
Expand Down
4 changes: 3 additions & 1 deletion examples/strategy_graph.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
Date: 20/8/24
******************************************************************************/
use optionstratlib::model::types::ExpirationDate;
use optionstratlib::model::types::PositiveF64;
use optionstratlib::pos;
use optionstratlib::strategies::base::Strategies;
use optionstratlib::strategies::bull_call_spread::BullCallSpread;
use optionstratlib::utils::logger::setup_logger;
Expand All @@ -22,7 +24,7 @@ fn main() -> Result<(), Box<dyn Error>> {
0.2,
0.05,
0.0,
1,
pos!(1.0),
27.26,
5.33,
0.58,
Expand Down
22 changes: 12 additions & 10 deletions examples/strategy_iron_condor.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
use optionstratlib::model::types::ExpirationDate;
use optionstratlib::model::types::PositiveF64;
use optionstratlib::pos;
use optionstratlib::strategies::base::Strategies;
use optionstratlib::strategies::iron_condor::IronCondor;
use optionstratlib::utils::logger::setup_logger;
Expand All @@ -19,16 +21,16 @@ fn main() -> Result<(), Box<dyn Error>> {
2800.0, // long_call_strike
2500.0, // long_put_strike
ExpirationDate::Days(30.0),
0.1548, // implied_volatility
0.05, // risk_free_rate
0.0, // dividend_yield
2, // quantity
38.8, // premium_short_call
30.4, // premium_short_put
23.3, // premium_long_call
16.8, // premium_long_put
0.96, // open_fee
0.96, // close_fee
0.1548, // implied_volatility
0.05, // risk_free_rate
0.0, // dividend_yield
pos!(2.0), // quantity
38.8, // premium_short_call
30.4, // premium_short_put
23.3, // premium_long_call
16.8, // premium_long_put
0.96, // open_fee
0.96, // close_fee
);

let price_range: Vec<f64> = (2450..=2950).map(|x| x as f64).collect();
Expand Down
22 changes: 12 additions & 10 deletions examples/strategy_long_strangle.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
use optionstratlib::model::types::ExpirationDate;
use optionstratlib::model::types::PositiveF64;
use optionstratlib::pos;
use optionstratlib::strategies::base::Strategies;
use optionstratlib::strategies::strangle::LongStrangle;
use optionstratlib::utils::logger::setup_logger;
Expand All @@ -17,16 +19,16 @@ fn main() -> Result<(), Box<dyn Error>> {
2725.0, // call_strike
2560.0, // put_strike
ExpirationDate::Days(60.0),
0.1548, // implied_volatility
0.05, // risk_free_rate
0.0, // dividend_yield
2, // quantity
38.8, // premium_short_call
30.4, // premium_short_put
0.96, // open_fee_short_call
0.96, // close_fee_short_call
0.96, // open_fee_short_put
0.96, // close_fee_short_put
0.1548, // implied_volatility
0.05, // risk_free_rate
0.0, // dividend_yield
pos!(2.0), // quantity
38.8, // premium_short_call
30.4, // premium_short_put
0.96, // open_fee_short_call
0.96, // close_fee_short_call
0.96, // open_fee_short_put
0.96, // close_fee_short_put
);

let price_range: Vec<f64> = (2450..=2850).map(|x| x as f64).collect();
Expand Down
4 changes: 3 additions & 1 deletion examples/strategy_poor_mans_covered_call.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
******************************************************************************/

use optionstratlib::model::types::ExpirationDate;
use optionstratlib::model::types::PositiveF64;
use optionstratlib::pos;
use optionstratlib::strategies::base::Strategies;
use optionstratlib::strategies::poor_mans_covered_call::PoorMansCoveredCall;
use optionstratlib::utils::logger::setup_logger;
Expand All @@ -27,7 +29,7 @@ fn main() -> Result<(), Box<dyn Error>> {
0.17, // implied_volatility
0.05, // risk_free_rate
0.0, // dividend_yield
2, // quantity
pos!(2.0), // quantity
154.7, // premium_short_call
30.8, // premium_short_put
1.74, // open_fee_short_call
Expand Down
22 changes: 12 additions & 10 deletions examples/strategy_short_strangle.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
use optionstratlib::model::types::ExpirationDate;
use optionstratlib::model::types::PositiveF64;
use optionstratlib::pos;
use optionstratlib::strategies::base::Strategies;
use optionstratlib::strategies::strangle::ShortStrangle;
use optionstratlib::utils::logger::setup_logger;
Expand All @@ -17,16 +19,16 @@ fn main() -> Result<(), Box<dyn Error>> {
7450.0, // call_strike
7050.0, // put_strike
ExpirationDate::Days(45.0),
0.3745, // implied_volatility
0.05, // risk_free_rate
0.0, // dividend_yield
1, // quantity
84.2, // premium_short_call
353.2, // premium_short_put
7.01, // open_fee_short_call
7.01, // close_fee_short_call
7.01, // open_fee_short_put
7.01, // close_fee_short_put
0.3745, // implied_volatility
0.05, // risk_free_rate
0.0, // dividend_yield
pos!(1.0), // quantity
84.2, // premium_short_call
353.2, // premium_short_put
7.01, // open_fee_short_call
7.01, // close_fee_short_call
7.01, // open_fee_short_put
7.01, // close_fee_short_put
);

let price_range: Vec<f64> = (6400..=8100).map(|x| x as f64).collect();
Expand Down
22 changes: 12 additions & 10 deletions examples/strategy_short_strangle_delta.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
use optionstratlib::model::types::ExpirationDate;
use optionstratlib::model::types::PositiveF64;
use optionstratlib::pos;
use optionstratlib::strategies::base::Strategies;
use optionstratlib::strategies::strangle::ShortStrangle;
use optionstratlib::utils::logger::setup_logger;
Expand All @@ -17,16 +19,16 @@ fn main() -> Result<(), Box<dyn Error>> {
2480.0, // call_strike
2650.0, // put_strike
ExpirationDate::Days(3.0),
0.1548, // implied_volatility
0.05, // risk_free_rate
0.0, // dividend_yield
2, // quantity
46.3, // premium_short_call
4.6, // premium_short_put
0.96, // open_fee_short_call
0.96, // close_fee_short_call
0.96, // open_fee_short_put
0.96, // close_fee_short_put
0.1548, // implied_volatility
0.05, // risk_free_rate
0.0, // dividend_yield
pos!(2.0), // quantity
46.3, // premium_short_call
4.6, // premium_short_put
0.96, // open_fee_short_call
0.96, // close_fee_short_call
0.96, // open_fee_short_put
0.96, // close_fee_short_put
);

let price_range: Vec<f64> = (2450..=2850).map(|x| x as f64).collect();
Expand Down
4 changes: 3 additions & 1 deletion examples/time-and-rate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@

use optionstratlib::greeks::utils::big_n;
use optionstratlib::model::option::Options;
use optionstratlib::model::types::PositiveF64;
use optionstratlib::model::types::{ExpirationDate, OptionStyle, OptionType, Side};
use optionstratlib::pos;
use optionstratlib::pricing::black_scholes_model::black_scholes;
use optionstratlib::utils::logger::setup_logger;
use rayon::prelude::*;
Expand Down Expand Up @@ -137,7 +139,7 @@ fn main() {
opt.strike,
ExpirationDate::Days(best_t * 365.0),
opt.implied_volatility,
1,
pos!(1.0),
s,
best_r,
OptionStyle::Call,
Expand Down
Loading