In her book "The Relaxed Way to Wealth" - which surprisingly was never translated into English - Susanne Levermann published her very succesful investment strategy, which is based on 13 fundamental factors: 

24518_1554785680.jpg

Each equity in the universe is scored based on this table and once a month the portfolio is rebalanced by exchanging equities with a score smaller than 4 by equities with a score greater than 4.

Since portfolios that are based on this strategy still seem to be doing well, I tried to replicate it on Quantconnect and ran into the following problems:

  • Including the analyst opinions would require some of the latest NLP provided by google or other cloud services
  • Equity Ratio doesn't seem to be available in Fundamentals, so I took 1/FinancialLeverage, because leverage seems to be the inverse of equity ratio
  • Reaction to quarter numbers does not seem to be available in Fundamentals
One could start to improvise based on the available fundamentals, of course - I just think it is better to first try to replicate a succesful strategy as closely as possible, before starting to experiment.  Here is what I got so far:  def Score(self): score = 0 #1 One year RoE >20%: +1 ; <10%: -1 if self.symbol.Fundamentals.OperationRatios.ROE.OneYear > 0.2: score = score + 1 elif self.symbol.Fundamentals.OperationRatios.ROE.OneYear < 0.1: score = score - 1 #2 EBIT One Year >12%: +1 ; <6%: -1 if self.symbol.Fundamentals.OperationRatios.EBITMargin.OneYear > 0.12: score = score + 1 elif self.symbol.Fundamentals.OperationRatios.EBITMargin.OneYear < 0.06: score = score - 1 #3 Equity Ratio one year >25%: +1 ; <15%: -1 if 1/self.symbol.Fundamentals.OperationRatios.FinancialLeverage.OneYear>0.25: score = score + 1 elif 1/self.symbol.Fundamentals.OperationRatios.FinancialLeverage.OneYear<0.15: score = score - 1 #4 P/E one Year <12: +1 ; >16: -1 if self.symbol.Fundamentals.ValuationRatios.PERatio.OneYear<12: score = score +1 elif self.symbol.Fundamentals.ValuationRatios.PERatio.OneYear>16: score = score - 1 #5 P/E five years <13: +1 ; >17: -1 if self.symbol.Fundamentals.ValuationRatios.PERatio.FiveYear<13: score = score +1 elif self.symbol.Fundamentals.ValuationRatios.PERatio.FiveYear>17: score = score - 1 #6 Analyst Opinions #7 Real price reaction in % on quarterly EPS report >1%: +1 ; <-1%: -1 #8 Current FQ Est EPS% change >5%: +1 ; <-5%: -1 if self.symbol.FundamentalsValuationRatios.ForwardEarningYield > 0.05: score = score+1 if self.symbol.FundamentalsValuationRatios.ForwardEarningYield < -0.05: score = score-1 #9 6 months price change >5%: +1 ; <-5%: -1 if self.Return(self.sixMonthsInDays) > 0.05: score = score+1 elif self.Return(self.sixMonthsInDays)<-0.05: score = score-1 #10 12 months price change >5%: +1 ; <-5%: -1 if self.Return(self.twelveMonthsInDays) > 0.05: score = score+1 elif self.Return(self.twelveMonthsInDays)<-0.05: score = score-1 #11 EPS growth: Change of current to next FY Est EPS >5%: +1; <-5%: -1 if self.symbol.Fundamentals.ValuationRatios.SecondYearEstimatedEPSGrowth > 0.05: score = score+1 elif elf.symbol.Fundamentals.ValuationRatios.SecondYearEstimatedEPSGrowth < -0.05: score = score-1 #12 Momentum: if 6 months price change > 5% and 12 month price change < -5%: 1 # if 6 months price change < -5% and 12 month price change > 5%: -1 if self.Return(self.sixMonthsInDays) > 0.05 and self.Return(self.twelveMonthsInDays)<-0.05: score = score+1 elif self.Return(self.sixMonthsInDays) <0.05 and self.Return(self.twelveMonthsInDays)>0.05: score = score+1 #13 Reversal: if better than benachmark: 1 ; if worse than benchmark -1

I'd appreciate any help in fixing the issues.

 

  

Author