2017-06-30 4 views
-1

Inspiré par mon test de classe financière Excel, je veux utiliser Python comme un outil pour résoudre ce problème. testUn script python qui retourne les rendements attendus, la covariance et la volatilité de 2 actifs

Je veux apprendre comment calculer les rendements attendus, la covariance et la volatilité des actifs, en particulier avec l'inclusion de la probabilité d'événements.

Expected return (ERi) = Prob(i) * Returns(i) 

Voici mon plan actuel de code WIP pour tenter de résoudre ce problème:

import numpy as np 
import pandas as pd 

p = np.array([0.25, 0.5, 0.25]) 
r1 = np.array([0.05, 0.075, 0.1]) 
r2 = np.array([0.2, 0.15, 0.1]) 

er1 = <<need help returning a single float as expected return of asset 1>> 
er2 = <<need help returning a single float as expected return of asset 2>> 

portfolio = pd.DataFrame([er1, er2]) 

weights = np.array([0.5, 0.5]) 
returns_portfolio = np.dot(weights, portfolio) 

cov_matrix = <<need help returning the covariance matrix for the assests>> 

portfolio_volatility = <<need help returning the std of returns of the two assets>> 

J'ai enregistré les probabilités d'événements et le rendement de chaque actif desdits événements sous forme de tableaux numpy. La confusion pour moi en python est l'inclusion des probabilités et l'association des retours.

Tout comme les états de formule, je veux retourner une somme des probability of event(i)* return on event(i) for each separate asset

Avec les valeurs des rendements attendus pour chaque actif, je prévois de créer un tableau de rendement pour stocker ces valeurs:

returns = pd.DataFrame([er1, er2]) 

J'espère utiliser np.dot(weights, portfolio) pour obtenir les rendements d'un portefeuille pondéré équitablement des deux actifs.

J'ai également besoin de directives sur la façon d'implémenter la méthode .cov et la méthode .std pour obtenir la matrice de covariance et la volatilité du portefeuille.

Tous les conseils sont également les bienvenus.

+0

Quelle est votre résultat attendu? –

+0

@JoshuaStokes obtenir essentiellement les rendements attendus de chaque actif avant d'utiliser ces entrées pour obtenir le rendement du portefeuille et le risque – Mysterio

+0

Qu'avez-vous essayé jusqu'à présent? Pouvez-vous nous montrer du code pour er1? –

Répondre

3

Il semble extrêmement simple en utilisant seulement la multiplication matrice et numpy construit dans des fonctions telles que dot, var ou std:

er1 = (p * r1).sum() 

Pourquoi portefeuille ou un rendement DataFrame et non un np.array? Il suffit d'utiliser np.array([er1, er2])

Ensuite, utilisez np.std(returns) ou returns.std()

+0

Je suis encore très nouveau chez Python Je suis encore en train de me réconcilier avec les structures de données de pandas et de numpy. Les formules ont tellement de sens. Je peux le lire comme ce que je voulais en premier lieu. Merci beaucoup – Mysterio

+0

la fonction plus la méthode .sum() est exactement que j'avais du mal à cuisiner en Python. Traduit ma connaissance d'Excel est la lutte – Mysterio

+1

@Mysterio Je vous suggère de suivre un tutoriel de base numpy –