Overall Statistics
Total Orders
17
Average Win
26.01%
Average Loss
-4.86%
Compounding Annual Return
14.237%
Drawdown
21.600%
Expectancy
4.557
Start Equity
100000
End Equity
723217.54
Net Profit
623.218%
Sharpe Ratio
0.722
Sortino Ratio
0.756
Probabilistic Sharpe Ratio
20.314%
Loss Rate
12%
Win Rate
88%
Profit-Loss Ratio
5.35
Alpha
0.023
Beta
0.719
Annual Standard Deviation
0.121
Annual Variance
0.015
Information Ratio
-0.02
Tracking Error
0.076
Treynor Ratio
0.122
Total Fees
$97.89
Estimated Strategy Capacity
$1500000000.00
Lowest Capacity Asset
SPY R735QTJ8XC9X
Portfolio Turnover
0.31%
from AlgorithmImports import *
from datetime import timedelta

class SpyVsSpyAlgorithm(QCAlgorithm):

    def initialize(self):
        self.set_start_date(2010, 1, 1)

        self.max_total_portfolio_value = -1
        self.timestamp = None

        self.symbol = self.add_equity("SPY", Resolution.DAILY).symbol

    def on_data(self, slice):

        if not self.portfolio.invested:
            if self.timestamp is None or self.time > (self.timestamp + timedelta(days=30)):
                self.set_holdings(self.symbol, 1)
                self.timestamp = None
        else:
            if self.max_total_portfolio_value > 0:
                if self.portfolio.total_portfolio_value < 0.96 * self.max_total_portfolio_value:
                    self.liquidate()
                    self.timestamp = self.time
                    self.max_total_portfolio_value = -1

            self.max_total_portfolio_value = self.portfolio.total_portfolio_value