Overall Statistics
Total Trades
18
Average Win
0.01%
Average Loss
-0.01%
Compounding Annual Return
-1.167%
Drawdown
0.000%
Expectancy
-0.636
Net Profit
-0.045%
Sharpe Ratio
-10.367
Probabilistic Sharpe Ratio
0.541%
Loss Rate
78%
Win Rate
22%
Profit-Loss Ratio
0.64
Alpha
-0.009
Beta
-0.007
Annual Standard Deviation
0.001
Annual Variance
0
Information Ratio
-5.81
Tracking Error
0.057
Treynor Ratio
1.537
Total Fees
$45.00
Estimated Strategy Capacity
$1000.00
Lowest Capacity Asset
SPY 31O8Q8CJ4BUQU|SPY R735QTJ8XC9X
using System;
using QuantConnect.Data;
using QuantConnect.Securities;
using QuantConnect.Securities.Option;
using QuantConnect.Securities.Option.StrategyMatcher;

namespace QuantConnect {   
    
    
    public class ConstantFeeTest: QCAlgorithm {
        
        const int INITIAL_CAPITAL = 100000;	
       	private List<Symbol> symbols;		
        private Symbol spySymbol;
        
        private List<OptionContract> put_Contracts;	
        
        public override void Initialize() {
        		
            SetStartDate(2021, 6, 1);         
            SetEndDate(2021, 6, 11);
            SetCash(INITIAL_CAPITAL);
            
            SetWarmUp(TimeSpan.FromDays(30), Resolution.Minute);
           
            put_Contracts = null;
        	symbols = new List<Symbol>();
            Option option = (Option) null;
     
            option = AddOption("SPY", Resolution.Minute);
        	option.SetFilter(universe => from symbol in universe
        		.WeeklysOnly()
        		.Strikes(-20, 10)
        		.Expiration(TimeSpan.Zero, TimeSpan.FromDays(21))
        		where symbol.ID.OptionRight == OptionRight.Put
        		select symbol);
    			spySymbol = option.Symbol;
           
        	//Tried both of these.
        	Securities[spySymbol].FeeModel = new ConstantFeeModel(.06M);
        	//option.FeeModel = new ConstantFeeModel(.06M);
        	
            option.PriceModel = OptionPriceModels.BjerksundStensland();
            var optionMuliplier = option.ContractMultiplier;
     
	    	Schedule.On( DateRules.EveryDay(), 	TimeRules.At(9,35),  () => ExecuteTrade() );
	    	Schedule.On( DateRules.EveryDay(), 	TimeRules.At(10,00),  () => Liquidate() );
    	
    	}

        public void ExecuteTrade() {
        	Symbol s = put_Contracts.First().Symbol;
        	
        	//Buy and sell 10 contracts each day.
        	Order(s,10);
        	
        }
        
        public override void OnData(Slice slice) {
        	
        	OptionChain chain;
           	List<OptionContract> putContracts = new List<OptionContract>();
			
			if ( slice.OptionChains.TryGetValue(spySymbol, out chain) ) {
                if (chain.Count() == 0) 
                    return;
        	
                put_Contracts = chain 
                    .Where(c => c.Right == OptionRight.Put )
                    .ToList();
            
                if (put_Contracts.Count() == 0) 
                    return;
               
            } else {
            	return;
            }
		
    	}
    
    
    }
    	
    
	


}