28 votos

¿Cuál es la biblioteca python de referencia para la optimización de carteras?

¿Alguien conoce una biblioteca/fuente en python que sea capaz de calcular la cartera tradicional de media-varianza? Para tentar mi suerte, cualquier recurso en el que la biblioteca/fuente también contenga funciones como funciones de covarianza alternativas (etc. contracción), optimización de la cartera de momento parcial inferior, etc...

He desarrollado, como todo el mundo, y aplicado una o dos variantes. ¿Soy yo o no hay mucho por ahí en términos de python para aplicaciones financieras/de cartera. Al menos no hay nada por ahí que iguale esfuerzos como Rmetrics para R.

0 votos

Hay rpy y rpy2 para que puedas aprovechar las soluciones de R también en Python...

0 votos

He utilizado rpy y rpy2, me gusta mucho. Hay mucha gente que utiliza y está contenta con este flujo en su trabajo: python -> r -> ejecución del modelo -> python.

1 votos

Supongo que usar R y el servidor rstudio es bastante difícil de superar.

0voto

JDibble Puntos 105

Yo sugeriría la biblioteca qq-pat ( https://github.com/QuriQuant/qq-pat ) con esta librería se puede hacer actualmente la optimización de la cartera de varianza mínima usando un código simple. Este es un ejemplo sencillo con tres activos:

import pandas as pd
from pandas_datareader import data
import datetime
import qqpat

aapl = data.get_data_yahoo('AAPL',
                                 start=datetime.datetime(2003, 10, 1),
                                 end=datetime.datetime(2015, 1, 1))

spy = data.get_data_yahoo('TLT',
                                 start=datetime.datetime(2003, 10, 1),
                                 end=datetime.datetime(2015, 1, 1))

ibm = data.get_data_yahoo('IBM',
                                 start=datetime.datetime(2003, 10, 1),
                                 end=datetime.datetime(2015, 1, 1))                                 

data = pd.concat([aapl['Adj Close'], spy['Adj Close'], ibm['Adj Close']], axis=1)

analyzer = qqpat.Analizer(data, column_type='price', titles=["APPL", "TLT", "IBM"])

analyzer.min_variance_portfolio_optimization(plotWeights=True)

Además, puede utilizar el parámetro covarianceType para seleccionar el tipo de matriz de covarianza que desea utilizar. Por ejemplo, puede utilizar el siguiente código para una contracción de tipo Ledoit-Wolf:

analyzer.min_variance_portfolio_optimization(covarianceType =qqpat.LEDOIT_WOLF, plotWeights=True):

Pronto añadiré la optimización de la media-varianza que funcionará de la misma manera. La biblioteca utiliza la biblioteca CVXPY para la optimización utilizando el solucionador SCS que proporciona la ejecución más rápida.

0voto

Vaibhav Arora Puntos 1

Si alguien sigue buscando creo que puede encontrar https://github.com/czielinski/portfolioopt interesante .

0 votos

Parece que has publicado un enlace al github de Christian Zielinski - ¡también lo ha enlazado en las respuestas aquí!

-2voto

Neil Puntos 27

Digamos que quieres optimizar el máximo ratio de sharpe, podrías hacer algo así con scipy:

import scipy.optimize as spopt 

allocations = [] #allocations

def Sharpe():  #An  function to compute Sharpe ratio, return negative SR

    compute Sharpe_Ratio

    return -1*Sharpe_Ratio

bnd = [] #bounds

cns [] #constraints

result = spopt.minimize(Sharpe, allocations, method = 'SLSQP',bounds = bnd, constraints = cns)

0 votos

Creo que el OP está buscando una biblioteca específicamente para este tipo de problema y es consciente de que lo que muestra es una posibilidad.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X