Overall Statistics
Total Trades
1
Average Win
0%
Average Loss
0%
Compounding Annual Return
12.634%
Drawdown
33.900%
Expectancy
0
Net Profit
50.834%
Sharpe Ratio
0.646
Probabilistic Sharpe Ratio
21.554%
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
0.147
Beta
-0.199
Annual Standard Deviation
0.19
Annual Variance
0.036
Information Ratio
-0.002
Tracking Error
0.295
Treynor Ratio
-0.616
Total Fees
$23.44
class SimpleAlgoWithFundFees(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2017,2,1)  
        self.SetCash(1000000)  
        self.AddEquity("SPY", Resolution.Daily)
        self.accum_fees = 0
        self.start_tpv = self.Portfolio.TotalPortfolioValue
        self.Schedule.On(self.DateRules.MonthEnd(), self.TimeRules.Midnight, self.addFee)
        
    def OnData(self, data):
        self.fee_adj_tpv = self.Portfolio.TotalPortfolioValue - self.accum_fees
        self.Plot("Fee Adjusted Equity", self.fee_adj_tpv)
        if not self.Portfolio.Invested:
            self.SetHoldings("SPY", 1)
            
    def addFee(self, fix_pct = .02, profit_pct = .2):
        if not self.Time.month == 12: return
        self.accum_fees += self.start_tpv * fix_pct + profit_pct * max(0, self.Portfolio.TotalPortfolioValue - self.start_tpv)
        self.start_tpv = self.Portfolio.TotalPortfolioValue