0 purchases
portfoliobacktest 0.3.0
portfolio-backtest
portfolio-backtest is a python library for backtest portfolio asset allocation on Python 3.7 and above.
Installation
$ pip install portfolio-backtest
$ pip install PyPortfolioOpt
Usage
basic run
from portfolio_backtest import Backtest
Backtest(tickers=["VTI", "AGG", "GLD"]).run()
advanced run
from portfolio_backtest import Backtest
import pprint
bt = Backtest(
tickers={
"VTI": 0.6,
"AGG": 0.25,
"GLD": 0.15,
},
target_return=0.1,
target_cvar=0.025,
data_dir="data",
start="2011-04-10",
end="2021-04-10",
)
pprint.pprint(bt.run(plot=True))
[{'Annual volatility': '10.9%',
'Conditional Value at Risk': '',
'Cumulative Return': '160.9%',
'Expected annual return': '9.6%',
'Sharpe Ratio': '0.70',
'portfolio': 'Your Portfolio',
'tickers': {'AGG': 0.25, 'GLD': 0.15, 'VTI': 0.6}},
{'Annual volatility': '6.3%',
'Conditional Value at Risk': '',
'Cumulative Return': '102.3%',
'Expected annual return': '7.0%',
'Sharpe Ratio': '0.79',
'portfolio': 'Tangency Portfolio',
'tickers': {'AGG': 0.67099, 'GLD': 0.0, 'VTI': 0.32901}},
{'Annual volatility': '4.3%',
'Conditional Value at Risk': '',
'Cumulative Return': '53.3%',
'Expected annual return': '4.3%',
'Sharpe Ratio': '0.53',
'portfolio': 'Minimum Variance Portfolio',
'tickers': {'AGG': 0.91939, 'GLD': 0.00525, 'VTI': 0.07536}},
{'Annual volatility': '4.0%',
'Conditional Value at Risk': '',
'Cumulative Return': '48.7%',
'Expected annual return': '4.1%',
'Sharpe Ratio': '0.51',
'portfolio': 'Hierarchical Risk Parity Portfolio',
'tickers': {'AGG': 0.89041, 'GLD': 0.05695, 'VTI': 0.05263}},
{'Annual volatility': '',
'Conditional Value at Risk': '0.5%',
'Cumulative Return': '52.1%',
'Expected annual return': '4.2%',
'Sharpe Ratio': '',
'portfolio': 'Minimum CVaR Portfolio',
'tickers': {'AGG': 0.93215, 'GLD': 0.0, 'VTI': 0.06785}},
{'Annual volatility': '7.7%',
'Conditional Value at Risk': '',
'Cumulative Return': '166.5%',
'Expected annual return': '10.0%',
'Sharpe Ratio': '1.04',
'portfolio': 'Semi Variance Portfolio (target return 10.0%)',
'tickers': {'AGG': 0.39504, 'GLD': 0.0, 'VTI': 0.60496}},
{'Annual volatility': '',
'Conditional Value at Risk': '2.5%',
'Cumulative Return': '251.3%',
'Expected annual return': '13.3%',
'Sharpe Ratio': '',
'portfolio': 'Return Maximize CVaR Portfolio (target CVaR 2.5%)',
'tickers': {'AGG': 0.08851, 'GLD': 0.0, 'VTI': 0.91149}}]
Provides a method (discrete_allocation) that can be converted into an actual allocation available for purchase by entering the latest price and desired portfolio size ($ 10,000 in this example)
from portfolio_backtest import Backtest
bt = Backtest(
tickers={
"VTI": 0.6,
"AGG": 0.25,
"GLD": 0.15,
}
)
print(bt.discrete_allocation(total_portfolio_value=10000))
{'Discrete allocation': {'VTI': 28, 'AGG': 21, 'GLD': 9}, 'Funds remaining': '$109.45'}
Supported Portfolio
Your Portfolio
Hierarchical Risk Parity Portfolio
Tangency Portfolio
Minimum Variance Portfolio
Minimum CVaR Portfolio
Semi Variance Portfolio
Return Maximize CVaR Portfolio
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.