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.1
- python 3.11.2
- pandas 1.5.3
- numpy 1.24.3
- scipy 1.10.1
- statsmodels 0.13.5
- matplotlib 3.7.1
- plotly 5.9.0
- requests 2.29.0
- pandas_market_calendars 4.1.4
- ecos 2.0.12
- cvxopt 1.3.0.1
- ta 0.10.2
- yfinance 0.2.14
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.1.tar.gz
(109.5 kB
view details)
Built Distribution
azapy-1.2.1-py3-none-any.whl
(156.8 kB
view details)
File details
Details for the file azapy-1.2.1.tar.gz
.
File metadata
- Download URL: azapy-1.2.1.tar.gz
- Upload date:
- Size: 109.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ef7062e29b848134d8cb6092cb91872fdd352f3494896ce581bc90a4b18ccc5 |
|
MD5 | 1aac1631578c6bf42119a398dfa19db2 |
|
BLAKE2b-256 | 24c28a4f7f202981f5cd2179e646d849c4f0524c3c95ebf94ba7b065092640dd |
File details
Details for the file azapy-1.2.1-py3-none-any.whl
.
File metadata
- Download URL: azapy-1.2.1-py3-none-any.whl
- Upload date:
- Size: 156.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e54d23da8bf92122f3dbdc59bce4a11b7346779b37fba30ab53395130ca1b1c4 |
|
MD5 | 7aefd805645b618885bbdd2765ed4cec |
|
BLAKE2b-256 | 17fa5838235edb8d9e4ba386a6c3d9ce12843b543634a2ea26fb538b9d8c667e |