Rendementen evalueren
Laten we nu bekijken hoe onze portefeuillek e uze het zou doen vergeleken met gewoon investeren in de SPY. We doen dit om te zien of onze voorspellingen veelbelovend zijn, ondanks de lage R\(^2\)-waarde.
We stellen een startbedrag voor onze investering in van $1000 en lopen vervolgens door de rendementen van onze voorspellingen en die van SPY. We gebruiken de maandrendementen van onze portefeuillek e uze en van SPY en passen die toe op ons startsaldo. Zo krijgen we per maand inzicht in hoe onze investering presteert, en kunnen we zien hoe onze voorspellingen het overall deden ten opzichte van de SPY. Daarna kunnen we onze portefeuille op basis van de voorspellingen plotten en vergelijken met de SPY.
Deze oefening maakt deel uit van de cursus
Machine Learning voor finance in Python
Oefeninstructies
- Zet het eerste listelement van zowel
algo_cashalsspy_cashop hetzelfde bedrag (cash). - Vermenigvuldig de
cashin onzetest_returns-lus met1 + rom de rendementen op onzecashtoe te passen. - Net als in de
test_returns-lus, voeg je in de SPY-prestatieluscashtoe aanspy_cashnadat je eerst met1 + rhebt vermenigvuldigd om de rendementen toe te voegen aancash.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# Calculate the effect of our portfolio selection on a hypothetical $1k investment
cash = 1000
algo_cash, spy_cash = [cash], ____ # set equal starting cash amounts
for r in test_returns:
cash *= 1 + r
algo_cash.append(cash)
# Calculate performance for SPY
cash = 1000 # reset cash amount
for r in returns_monthly['SPY'].iloc[train_size:]:
cash ____ ____
____
print('algo returns:', (algo_cash[-1] - algo_cash[0]) / algo_cash[0])
print('SPY returns:', (spy_cash[-1] - spy_cash[0]) / spy_cash[0])