My Investment Jarvis (In Ray Dalio's words, My Investment Principles)

Jarvis

Humans are imperfect.

Humans are prone to biases.

Humans are dumb.

Humans have egos.

Humans rely on intuitions which are way way overrated.

And all these are blockers to sustainable positive performances in the area of investment portfolio management.

But not all is lost… I’ve found a way to aid me in my invesment decision making processes.

And that’s Jarvis! My expert advisor to advise me what to do in different scenarios.

Here is how it works,

During normal market conditions

  • During normal market conditions, I will allocate Bonds and Cash % corresponding to my age. And this makes sense because as I grow older, my risk appetite should decrease.
  • I allocate 5% each to Singapore index, Gold/ Silver/ Commodities and Global Reits to hedge against different economic climate (see Ray Dalio’s explanation on all weather portfolio)
  • Lastly, I will allocate (100 – 15 - age)/ 2 % to developed and emerging market indexes/ stocks respectively

During crisis (-2 SD scenario)

  • Buy low sell high. That’s my mantra. In the absence of rules, humans tend to do the opposite.
  • During mayhem, when SnP 500 hits -2SD line in my project on what is low regression line for SnP 500 (see here for more info), that’s when I will be greedy. I will do a 50% leverage over my portfolio size and allocate 25% each to developed and emerging section of my portfolio.
  • SnP 500 is chosen as my barometer because it has the longest time series. And when US sneezes, everyone tends to catch a cold.

During crisis (-3 SD scenario)

  • This is the equivalent of an apocalypse. It has not even happened during the great recession
  • I’m unsure if it will ever happen in my lifetime. But if it ever happens, I will be damn sure that I will leverage up till 100% of my portfolio.
  • 50% each will be allocated to developed and emerging section of my portfolio.

Selection of stuff to purchase

  • I only rebalance my portfolio once a month
  • Using 2 compasses (what is low & my 52% week high watchlist), I will sieve out tickers that are cheap and purchase them
  • When any of the portfolio pie gets too large, I will sell them to restore the balance in my portfolio
  • Each counter with the exception of US, World and China will take up less than 5% of portfolio
  • Pls find my broad classification of developed and developing countries in diagram below

Market neutral strategies

On a separate note, I also run market neutral strategies to try and profit in all economic climates. Returns from this section will tend to be lesser than my overall portfolio unless I leverage significantly. These are documented under ‘Skin in the game’ section of my blog.

/post/img/jarvis.png

Snippets of my Jarvis

if(data$Prop[which(data$Assets == "World + Developed (ex real estate)")] > data$Prop[which(data$Assets == "Emerging")]){
  
  msg = "Bro, you are overweight in Developed. Shift to Emerging\n"
  msg = paste(msg, "World is %", 100 * data$Prop[which(data$Assets == "World + Developed (ex real estate)")])
  msg = paste(msg, "Emerging is %", 100 * data$Prop[which(data$Assets == "Emerging")])
  
  pushover(message = msg, 
           user = Sys.getenv("pushover_user"), app = Sys.getenv("pushover_app")
           )
}

if(data$Prop[which(data$Assets == "Emerging")] > data$Prop[which(data$Assets == "World + Developed (ex real estate)")]){
  
  msg = "Bro, you are overweight in Emerging. Shift to Developed\n"
  msg = paste(msg, "World is %", 100 * data$Prop[which(data$Assets == "World + Developed (ex real estate)")])
  msg = paste(msg, "Emerging is %", 100 * data$Prop[which(data$Assets == "Emerging")])
  
  pushover(message = msg, 
           user = Sys.getenv("pushover_user"), app = Sys.getenv("pushover_app")
  )
}

if(100 * (data$Prop[which(data$Assets == "Bonds")] + data$Prop[which(data$Assets == "Cash")]) > data$Prop[which(data$Assets == "Age")]){
  
  msg = "Bro, you are overweight in Bonds and Cash relative to your age. Shift it out!!!\n"
  msg = paste(msg, "Bonds is %", 100 * data$Prop[which(data$Assets == "Bonds")])
  msg = paste(msg, "Cash is %", 100 * data$Prop[which(data$Assets == "Cash")])
  
  pushover(message = msg, 
           user = Sys.getenv("pushover_user"), app = Sys.getenv("pushover_app")
  )
}

if(100 * (data$Prop[which(data$Assets == "Bonds")] + data$Prop[which(data$Assets == "Cash")]) < data$Prop[which(data$Assets == "Age")]){
  
  msg = "Bro, you are underweight in Bonds and Cash relative to your age. Shift it out!!!\n"
  msg = paste(msg, "Bonds is %", 100 * data$Prop[which(data$Assets == "Bonds")])
  msg = paste(msg, "Cash is %", 100 * data$Prop[which(data$Assets == "Cash")])
  
  pushover(message = msg, 
           user = Sys.getenv("pushover_user"), app = Sys.getenv("pushover_app")
  )
}

Related

comments powered by Disqus