| Overall Statistics |
|
Total Trades 208 Average Win 0% Average Loss 0% Compounding Annual Return -0.021% Drawdown 0.000% Expectancy 0 Net Profit -0.001% Sharpe Ratio -5.348 Probabilistic Sharpe Ratio 1.665% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha -0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio 3.038 Tracking Error 0.243 Treynor Ratio -1.428 Total Fees $208.00 Estimated Strategy Capacity $1200000000.00 Lowest Capacity Asset HRE R735QTJ8XC9X |
# region imports
from AlgorithmImports import *
# endregion
class FatBlueLion(QCAlgorithm):
def Initialize(self):
self.end_date = datetime(2022,6,10)
self.SetStartDate(2022, 6, 1) # Set Start Date
self.SetCash(100_000_000) # Set Strategy Cash
self.UniverseSettings.Resolution = Resolution.Daily
self.AddUniverse(self.get_coarse, self.get_fine)
self.list_of_reits = []
self.to_buy = []
self.rebalance = self.Time
self.rebalance_days = 30
self.SetWarmup(timedelta(1))
def get_coarse(self, coarse):
if self.Time < self.rebalance:
return Universe.Unchanged
# selected = [x.Symbol for x in coarse if x.HasFundamentalData]
selected = [x.Symbol for x in coarse]
return selected
def get_fine(self, fine):
symbols = [x.Symbol for x in fine if (x.CompanyReference.IsREIT == 1) & (x.SecurityReference.IsPrimaryShare == 1)]
self.to_buy = symbols
self.list_of_reits = list(set(symbols + self.list_of_reits))
return symbols
def OnData(self, data: Slice):
if self.IsWarmingUp: return
if self.Time < self.rebalance: return
self.rebalance = self.Time + timedelta(self.rebalance_days)
for symbol in self.Portfolio.Keys:
if self.Portfolio[symbol].Invested:
self.Liquidate(symbol)
self.to_buy = [x for x in self.to_buy if x != symbol]
for symbol in self.to_buy:
if not self.Portfolio[symbol].Invested:
self.Buy(symbol, 1)