Overall Statistics
Total Trades
452
Average Win
0.88%
Average Loss
-0.76%
Compounding Annual Return
2.026%
Drawdown
11.900%
Expectancy
0.238
Net Profit
48.096%
Sharpe Ratio
0.518
Loss Rate
42%
Win Rate
58%
Profit-Loss Ratio
1.15
Alpha
0.015
Beta
0.299
Annual Standard Deviation
0.04
Annual Variance
0.002
Information Ratio
0.022
Tracking Error
0.04
Treynor Ratio
0.07
Total Fees
$2396.74
 
 
from datetime import date, timedelta, datetime
import pandas as pd

class PayDay_Anomaly(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2000, 1, 1)
        self.SetEndDate(datetime.now())
        self.SetCash(100000)
        
        self.symbol = "SPY"
        data = self.AddEquity(self.symbol, Resolution.Minute)

        dates = pd.read_csv('https://docs.google.com/spreadsheets/d/1JNyYi7LiwK-Mcmq2BOM547Y8kEIDox4fIq01C4uZyGw/export?format=csv',header=None)
        dates = [datetime.strptime(x[0], "%d.%m.%Y") for x in dates.values]

        self.Schedule.On(self.DateRules.On(dates), self.TimeRules.BeforeMarketClose(self.symbol, 1), self.DayBefore16th)
        self.Schedule.On(self.DateRules.EveryDay(self.symbol), self.TimeRules.BeforeMarketClose(self.symbol, 1), self.Rebalance)
    
    def DayBefore16th(self):
        if not self.Portfolio[self.symbol].IsLong:
            self.SetHoldings(self.symbol, 1)

    def Rebalance(self):
        if self.Portfolio[self.symbol].IsLong:
            self.Liquidate(self.symbol)