a. Risk-adjusted Allocation
First, instead of investing 75% in one single asset, we want to split the risk equally over the three assets S&P 500, BTC, and Gold. That leads to a 1/3 of the leverages used above:
- S&P 500: 0.750 / 3 = 0.250
- Bitcoin: 0.174 / 3 = 0.058
- Gold: 0.913 / 3 = 0.304
We calculate the equity curve and get the following results:
target_weights = result['leverage'] / 3.0
target_weights['RF'] = 1.0 - sum(target_weights[:-1])
(capital_daily_g, _, Return, Vola, SR, MaxDD) = trading(returns,
start_capital, target_weights, timeframes_monthly)## Return: 7.67 Vola: 7.52 SR: 0.89 MDD: 13.34
That sounds good! The annual return is about twice as high compared to a single S&P or Gold investment. Plus, the diversification leads to a nearly 50% decrease of the volatility. But let us go through more scenarios.
b. Calculate a Grid of Allocation-Weights
Let’s expand further on this. Instead of fixed allocations, we search through a grid of meaningful weights. We allow each asset to have a weight being within the range of [-50%, +50%] of the weight stated above. After doing some rounding to prettier numbers we conclude in testing all combinations including these weights:
- S&P 500: 12.5–37.5% in steps of 2.5%
- Bitcoin: 3.0–9.0% in steps of 1.0%
- Gold: 15.0–45.0% in steps of 5.0%
The following nested loop runs through these combinations and creates a DataFrame including the performance metrics of all feasible asset-weight combinations:
## Custom function to create an equally-spaced grid of values
## within the specified range; plus some constraints.
def my_linspace(cum_weight, step=0.05, min_weight=0, max_weight=1)
## ... code omitted.performance = []
for wei_sp in
my_linspace(0, min_weight=0.125, max_weight=0.375, step=0.025):
for wei_g in my_linspace(wei_sp, min_weight=0.15,
max_weight=0.45, step=0.05):
for wei_btc in my_linspace(wei_sp + wei_g,
min_weight=0.03, max_weight=0.09, step=0.01):
wei_tb3 = 1.0 - (wei_sp + wei_btc + wei_g)
target_weights = [wei_sp, wei_btc, wei_g, wei_tb3]
(_, _, Return, Vola, SR, MaxDD) = trading(returns,
start_capital, target_weights, timeframes_monthly)
performance.append(
target_weights + [Return, Vola, SR, MaxDD])performance = pd.DataFrame(performance, columns=
returns.columns.tolist() + ['Return', 'Vola', 'SR', 'MaxDD'])performance.sort_values('SR', ascending=False).head(15)
These are the results (Top 15):
Quite similar, these top 15 solutions. S&P 500, as well as Gold, are mostly on its lower weight bound, and Bitcoin on its upper bound (0.09). However, all these solutions are very similar in terms of the risk-adjusted metric called Sharpe Ratio (risk/return).
Let us pick 2 scenarios, out of these 15 — the best one, and the solution owning a higher share of stock investments (20% of S&P 500):
- Scenario 1 → weights = [0.125, 0.090, 0.150, 0.635]
- Scenario 2 → weights = [0.200, 0.090, 0.150, 0.560]
The following chart compares the performance of the single-asset investments with the two scenario portfolios (btw, all 5 investments are rebalanced monthly):
While these 2 scenarios have quite a nice return, they do not share the same risk as to the S&P 500. The draw-downs are way smaller.
We can conclude with the fact that a well-balanced portfolio with only small investments in stocks and Gold shows the best performance over the analyzed period.
To complete this story, I attach also the return-triangles of the 2 scenarios. Both have very tolerable drawdowns during 2020-Q1:
Being in the middle of the coronavirus economic crisis, we ask ourselves if our investment mix is the right one. Are the big losses behind us — or is there more to come?
In this story, we compared different asset allocations during the last years, including the first quarter of 2020. The result was surprising: portfolios with a significant share of Bitcoins have a considerable higher return, plus less risk. Always on condition that the investments in cryptocurrency are well balanced with about four times the same amount in some risk-free asset [cf.: leverage].
However — nobody can guarantee that history repeats itself. Usually, it does not. Neither the history of stock returns nor the course of crypto-currency returns.
Only one thing is always advantageous: diversification! Therefore, do not invest solely in stocks, but spread the risk, and limit the leverage 🙂