Financial Portfolio Optimization Algorithms
Project description
azapy project
Financial Portfolio Optimization Algorithms
An open-source python library for everybody
Author: Mircea Marinescu
email: Mircea.Marinescu@outlook.com
Package installation: pip install azapy
Contents
A. Risk-based portfolio optimization algorithms
- mCVaR - mixture CVaR (Conditional Value at Risk)
- mSMCR - mixture SMCR (Second Moment Coherent Risk)
- mMAD - m-level MAD (Mean Absolute Deviation)
- mLSD - m-level LSD (Lower Semi-Deviation)
- mBTAD - mixture BTAD (Below Threshold Absolute Deviation)
- mBTSD - mixture BTSD (Below Threshold Semi-Deviation)
- GINI - Gini index (as in Corrado Gini statistician 1884-1965)
- SD - standard deviation
- MV - variance (as in mean-variance model)
- mEVaR - mixture EVaR (Entropic Value at Risk) (alpha version)
For each class of portfolio the following optimization strategies are available
- Optimal-risk portfolio for targeted expected rate of return value
- Sharpe-optimal portfolio - maximization of generalized Sharpe ratio
- Sharpe-optimal portfolio - minimization of inverse generalized Sharpe ratio
- Minimum risk portfolio
- Optimal-risk portfolio for a fixed risk-aversion factor
- Optimal-risk portfolio with the same risk value as a benchmark portfolio (e.g., same as equal weighted portfolio)
- Optimal-diversified portfolio for targeted expected rate of return (minimization of inverse 1-D ratio) (beta version)
- Optimal-diversified portfolio for targeted expected rate of return (maximization of 1-D ratio) (beta version)
- Maximum diversified portfolio (beta version)
- Optimal-diversified portfolio with the same diversification factor as a benchmark portfolio (e.g., same as equal weighted portfolio) (beta version)
- Optimal-diversified portfolio with the same expected rate of return as a benchmark portfolio (e.g., same as equal weighted portfolio) (beta version)
B. "Naïve" portfolio strategies
- Constant weighted portfolio. A particular case is equal weighted portfolio.
- Inverse volatility portfolio (i.e., portfolio weights are proportional to the inverse of asset volatilities)
- Inverse variance portfolio (i.e., portfolio weights are proportional to the inverse of asset variances)
- Inverse drawdown portfolio (i.e., portfolio weights are proportional to the asset absolute value of maximum drawdowns over a predefined historical period)
C. Greedy portfolio optimization strategies
- Kelly's portfolio (as in John Larry Kelly Jr. scientist 1923-1965) - maximization of portfolio log returns
- Universal portfolio (Thomas M. Cover 1996) (alpha version)
D. Market Selectors
- Dual Momentum Selector (alpha version)
- Correlation Clustering Selector (alpha version)
Utility functions:
-
Collect historical market data from various providers.
Supported providers:
- yahoo.com
- eodhistoricaldata.com
- alphavantage.co
- marketstack.com
-
Generate business calendars. At this point only NYSE business calendar is implemented.
-
Generate rebalancing portfolio schedules.
-
Append a cash-like security to an existing market data object.
-
Update market data saved in a directory.
-
N-simplex random vectors generators.
Third-party packages used by azapy 1.2.3
- python 3.11.8
- pandas 2.1.4
- numpy 1.26.2
- scipy 1.11.4
- statsmodels 0.14.0
- matplotlib 3.8.0
- plotly 5.9.0
- requests 2.31.0
- pandas_market_calendars 4.3.2
- ecos 2.0.12
- cvxopt 1.3.2
- ta 0.11.0
- yfinance 0.2.33
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
azapy-1.2.3.tar.gz
(112.5 kB
view details)
Built Distribution
azapy-1.2.3-py3-none-any.whl
(161.1 kB
view details)
File details
Details for the file azapy-1.2.3.tar.gz
.
File metadata
- Download URL: azapy-1.2.3.tar.gz
- Upload date:
- Size: 112.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 60fd21074a2cb8d2e142f3b5773d028d0fa5134bdd12afc624782eb461242194 |
|
MD5 | 9c264ce1e43758ba4e43cda90148cc1b |
|
BLAKE2b-256 | 756d9a550c50922d199161a19194bc8a9f2cbb8d3389e1043c6aaf310ad6ea90 |
File details
Details for the file azapy-1.2.3-py3-none-any.whl
.
File metadata
- Download URL: azapy-1.2.3-py3-none-any.whl
- Upload date:
- Size: 161.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ccf999ae62a716dacad584fdd1f5ec18563cf6b07cd6e876fab456b6775eb45 |
|
MD5 | 05b686ae9058600171043b330a4a4aa2 |
|
BLAKE2b-256 | 98b6345c0251c30023ec432d732901007ff930f374d36d116438064bf4ee8a40 |