@@ -381,14 +381,12 @@ impl Collar {
381381 if call_strike >= cost_basis {
382382 let capital_gain = ( call_strike - cost_basis) * quantity;
383383 let total_profit = capital_gain. to_dec ( ) + net_premium - total_fees. to_dec ( ) ;
384- Ok ( Positive :: new_decimal ( total_profit. max ( Decimal :: ZERO ) )
385- . unwrap_or ( Positive :: ZERO ) )
384+ Ok ( Positive :: new_decimal ( total_profit. max ( Decimal :: ZERO ) ) . unwrap_or ( Positive :: ZERO ) )
386385 } else {
387386 // Call strike below cost basis
388387 let capital_loss = ( cost_basis - call_strike) * quantity;
389388 let total_profit = net_premium - capital_loss. to_dec ( ) - total_fees. to_dec ( ) ;
390- Ok ( Positive :: new_decimal ( total_profit. max ( Decimal :: ZERO ) )
391- . unwrap_or ( Positive :: ZERO ) )
389+ Ok ( Positive :: new_decimal ( total_profit. max ( Decimal :: ZERO ) ) . unwrap_or ( Positive :: ZERO ) )
392390 }
393391 }
394392
@@ -405,14 +403,12 @@ impl Collar {
405403 if cost_basis >= put_strike {
406404 let capital_loss = ( cost_basis - put_strike) * quantity;
407405 let total_loss = capital_loss. to_dec ( ) - net_premium + total_fees. to_dec ( ) ;
408- Ok ( Positive :: new_decimal ( total_loss. max ( Decimal :: ZERO ) )
409- . unwrap_or ( Positive :: ZERO ) )
406+ Ok ( Positive :: new_decimal ( total_loss. max ( Decimal :: ZERO ) ) . unwrap_or ( Positive :: ZERO ) )
410407 } else {
411408 // Put strike above cost basis (unusual but possible)
412409 let capital_gain = ( put_strike - cost_basis) * quantity;
413410 let total_loss = total_fees. to_dec ( ) - net_premium - capital_gain. to_dec ( ) ;
414- Ok ( Positive :: new_decimal ( total_loss. max ( Decimal :: ZERO ) )
415- . unwrap_or ( Positive :: ZERO ) )
411+ Ok ( Positive :: new_decimal ( total_loss. max ( Decimal :: ZERO ) ) . unwrap_or ( Positive :: ZERO ) )
416412 }
417413 }
418414
@@ -497,7 +493,7 @@ impl BreakEvenable for Collar {
497493 let fees_per_share = self . total_fees ( ) . to_dec ( ) / self . spot_leg . quantity . to_dec ( ) ;
498494
499495 let break_even = self . spot_leg . cost_basis . to_dec ( ) - net_premium_per_share + fees_per_share;
500-
496+
501497 if let Ok ( be) = Positive :: new_decimal ( break_even) {
502498 self . break_even_points . push ( be. round_to ( 2 ) ) ;
503499 }
@@ -601,7 +597,7 @@ impl BasicAble for Collar {
601597
602598 fn get_option_basic_type ( & self ) -> HashSet < OptionBasicType < ' _ > > {
603599 let mut hash_set = HashSet :: new ( ) ;
604-
600+
605601 let long_put = & self . long_put . option ;
606602 hash_set. insert ( OptionBasicType {
607603 option_style : & long_put. option_style ,
@@ -623,7 +619,7 @@ impl BasicAble for Collar {
623619
624620 fn get_implied_volatility ( & self ) -> HashMap < OptionBasicType < ' _ > , & Positive > {
625621 let mut map = HashMap :: new ( ) ;
626-
622+
627623 let long_put = & self . long_put . option ;
628624 map. insert (
629625 OptionBasicType {
@@ -651,7 +647,7 @@ impl BasicAble for Collar {
651647
652648 fn get_quantity ( & self ) -> HashMap < OptionBasicType < ' _ > , & Positive > {
653649 let mut map = HashMap :: new ( ) ;
654-
650+
655651 let long_put = & self . long_put . option ;
656652 map. insert (
657653 OptionBasicType {
@@ -801,8 +797,11 @@ impl ProbabilityAnalysis for Collar {
801797 let risk_free_rate = option. risk_free_rate ;
802798
803799 // Loss range: from put strike up to break-even
804- let mut loss_range =
805- ProfitLossRange :: new ( Some ( self . put_strike ( ) ) , Some ( break_even_point) , Positive :: ZERO ) ?;
800+ let mut loss_range = ProfitLossRange :: new (
801+ Some ( self . put_strike ( ) ) ,
802+ Some ( break_even_point) ,
803+ Positive :: ZERO ,
804+ ) ?;
806805
807806 loss_range. calculate_probability (
808807 & self . spot_leg . cost_basis ,
@@ -844,22 +843,22 @@ mod tests {
844843 fn create_test_collar ( ) -> Collar {
845844 Collar :: new (
846845 "AAPL" . to_string ( ) ,
847- pos_or_panic ! ( 150.0 ) , // underlying price
848- pos_or_panic ! ( 145.0 ) , // put strike
849- pos_or_panic ! ( 160.0 ) , // call strike
846+ pos_or_panic ! ( 150.0 ) , // underlying price
847+ pos_or_panic ! ( 145.0 ) , // put strike
848+ pos_or_panic ! ( 160.0 ) , // call strike
850849 ExpirationDate :: Days ( pos_or_panic ! ( 30.0 ) ) ,
851- pos_or_panic ! ( 0.25 ) , // implied volatility
852- dec ! ( 0.05 ) , // risk-free rate
853- pos_or_panic ! ( 0.01 ) , // dividend yield
854- Positive :: HUNDRED , // quantity
855- pos_or_panic ! ( 2.50 ) , // put premium
856- pos_or_panic ! ( 3.00 ) , // call premium
857- Positive :: ONE , // spot open fee
858- Positive :: ONE , // spot close fee
859- pos_or_panic ! ( 0.65 ) , // put open fee
860- pos_or_panic ! ( 0.65 ) , // put close fee
861- pos_or_panic ! ( 0.65 ) , // call open fee
862- pos_or_panic ! ( 0.65 ) , // call close fee
850+ pos_or_panic ! ( 0.25 ) , // implied volatility
851+ dec ! ( 0.05 ) , // risk-free rate
852+ pos_or_panic ! ( 0.01 ) , // dividend yield
853+ Positive :: HUNDRED , // quantity
854+ pos_or_panic ! ( 2.50 ) , // put premium
855+ pos_or_panic ! ( 3.00 ) , // call premium
856+ Positive :: ONE , // spot open fee
857+ Positive :: ONE , // spot close fee
858+ pos_or_panic ! ( 0.65 ) , // put open fee
859+ pos_or_panic ! ( 0.65 ) , // put close fee
860+ pos_or_panic ! ( 0.65 ) , // call open fee
861+ pos_or_panic ! ( 0.65 ) , // call close fee
863862 )
864863 }
865864
@@ -996,7 +995,7 @@ mod tests {
996995 fn test_is_put_itm ( ) {
997996 let collar = create_test_collar ( ) ;
998997
999- assert ! ( collar. is_put_itm( pos_or_panic!( 140.0 ) ) ) ; // Below put strike
998+ assert ! ( collar. is_put_itm( pos_or_panic!( 140.0 ) ) ) ; // Below put strike
1000999 assert ! ( !collar. is_put_itm( pos_or_panic!( 145.0 ) ) ) ; // At put strike
10011000 assert ! ( !collar. is_put_itm( pos_or_panic!( 150.0 ) ) ) ; // Above put strike
10021001 }
@@ -1007,7 +1006,7 @@ mod tests {
10071006
10081007 assert ! ( !collar. is_call_itm( pos_or_panic!( 155.0 ) ) ) ; // Below call strike
10091008 assert ! ( !collar. is_call_itm( pos_or_panic!( 160.0 ) ) ) ; // At call strike
1010- assert ! ( collar. is_call_itm( pos_or_panic!( 165.0 ) ) ) ; // Above call strike
1009+ assert ! ( collar. is_call_itm( pos_or_panic!( 165.0 ) ) ) ; // Above call strike
10111010 }
10121011
10131012 #[ test]
0 commit comments