garpar.optimize package

Optimize subpackage of Garpar project.

This subpackage offers foundational classes for developing mean-variance optimization models tailored for StocksSets, featuring various implementations leveraging PyPortfolioOpt.

Key Features:
  • Portfolio optimization

  • Mean-variance models

  • Markowitz model

Submodules

garpar.optimize.mean_variance module

Mean variance optimizers.

Implementations of different mean-variance models. There is a more general class that can be used to apply a wider range of mean-variance models. And a concrete class for the Markowitz model.

Key Features:
  • Portfolio optimization

  • Mean-variance models

  • Markowitz model

Examples

>>> import garpar
>>> prices_df = [[...], [...]]  # Your price data
>>> ss = garpar.mkss(
...     prices=prices_df,
...     weights=[0.4, 0.3, 0.3],
...     window_size=5
... )
>>> from garpar.optimize.mean_variance import MVOptimizer
>>> modl = MVOptimizer(model="max_sharpe", risk_free_rate=0.11)
>>> modl.optimize(ss)

or

>>> from garpar import mkss
>>> from garpar.optimize.mean_variance import Markowitz
>>> prices_df = [[...], [...]]  # Your price data
>>> ss = mkss(prices=prices_df, weights=[0.4, 0.3, 0.3], window_size=5)
>>> modl = Markowitz(model="efficient_risk", target_return=0.07)
>>> modl.optimize(ss)
class garpar.optimize.mean_variance.MVOptimizer(returns_kw=NOTHING, covariance_kw=NOTHING, *, model='max_sharpe', weight_bounds=(0, 1), market_neutral=False, returns='mah', covariance='sample_cov', target_return=None, target_risk=None, risk_free_rate=None, risk_aversion=None)

Bases: MeanVarianceFamilyMixin, OptimizerABC

Flexible Mean Variance Optimizer.

An instance of this class represents a mean-variance optimization model. This class also provides different coercion methods for each model parameter. The parameter model indicates the optimization model to use.

class garpar.optimize.mean_variance.Markowitz(returns_kw=NOTHING, covariance_kw=NOTHING, *, target_return=None, target_risk=None, weight_bounds=(0, 1), market_neutral=False, returns='mah', covariance='sample_cov')

Bases: MeanVarianceFamilyMixin, OptimizerABC

Classic Markowitz model.

An instance of this class represents the Markowitz optimization model with specific parameters. This class also provides different coercion methods for either the target return or target risk.

garpar.optimize.opt_base module

Optimizer base classes module.

This module provides an abstract base class for optimization models and a mixin class for defining mean-variance optimization models classes.

class garpar.optimize.opt_base.MeanVarianceFamilyMixin

Bases: object

Mixin class for mean-variance like models.

family = 'mean-variance'
class garpar.optimize.opt_base.OptimizerABC

Bases: ModelABC

Abstract base class for stocks set optimization models.

This class is the basic representation of an optimization model, In this context, the subclasses of this class that are not abstract are called optimizers.

family = <object object>
classmethod get_optimizer_family()

Get the family of the optimizer.

Returns:

The family of the optimizer.

Return type:

str

optimize(ss)

Optimize the given stocks set.

Parameters:

ss (garpar.core.stocks_set.StocksSet) – The stocks set to optimize.

Returns:

A new stocks set with optimized weights.

Return type:

garpar.core.stocks_set.StocksSet