Overall Statistics |
Total Trades 110 Average Win 0.62% Average Loss -0.62% Compounding Annual Return 0.721% Drawdown 7.900% Expectancy 0.203 Net Profit 6.968% Sharpe Ratio 0.218 Loss Rate 40% Win Rate 60% Profit-Loss Ratio 1.01 Alpha 0.039 Beta -1.548 Annual Standard Deviation 0.036 Annual Variance 0.001 Information Ratio -0.337 Tracking Error 0.036 Treynor Ratio -0.005 Total Fees $265.11 |
from QuantConnect.Data import SubscriptionDataSource from QuantConnect.Python import PythonData from datetime import date, timedelta, datetime class RamandanEffect(QCAlgorithm): def Initialize(self): self.SetStartDate(2009,5,5) #Set Start Date self.SetEndDate(2018,9,15) #Set End Date self.SetCash(100000) #Set Strategy Cash self.SetBenchmark("SPY") self.all_symbols = ["TUR","UAE","EGPT","EWM","KSA", "QAT","EIDO","PKF"] for symbol in self.all_symbols: self.AddEquity(symbol, Resolution.Daily) self.AddData(Ramadan, "RD", Resolution.Daily) self.ramadan = self.Securities["RD"].Symbol self.start = None self.end = None def OnData(self, data): if data.ContainsKey(self.ramadan): self.start = datetime.strptime(data[self.ramadan].Start, '%m/%d/%Y') self.end = datetime.strptime(data[self.ramadan].End, '%m/%d/%Y') if not self.start: return if not self.end: return if not self.Portfolio["TUR"].Invested and self.Time > self.start: allocation = 1/len(self.all_symbols) for sym in self.all_symbols: self.SetHoldings(sym, allocation) if self.Portfolio["TUR"].Invested and self.Time > self.end: self.Liquidate() self.start = None self.end = None class Ramadan(PythonData): def GetSource(self, config, date, isLiveMode): return SubscriptionDataSource("https://www.dropbox.com/s/j5zmzq4iuxcrhon/ramadan.csv?dl=1", SubscriptionTransportMedium.RemoteFile) def Reader(self, config, line, date, isLiveMode): ramadan = Ramadan() ramadan.Symbol = config.Symbol data = line.split(',') ramadan.Time = datetime.strptime(data[0], '%m/%d/%Y') ramadan["Start"] = data[0] ramadan["End"] = data[1] return ramadan