项目作者: 10mohi6

项目描述 :
portfolio-backtest is a python library for backtest portfolio asset allocation on Python 3.7 and above.
高级语言: Python
项目地址: git://github.com/10mohi6/portfolio-backtest-python.git
创建时间: 2021-04-13T13:03:05Z
项目社区:https://github.com/10mohi6/portfolio-backtest-python

开源协议:

下载


portfolio-backtest

PyPI
License: MIT
codecov
Build Status
PyPI - Python Version
Downloads

portfolio-backtest is a python library for backtest portfolio asset allocation on Python 3.7 and above.

Installation

  1. $ pip install portfolio-backtest
  2. $ pip install PyPortfolioOpt

Usage

basic run

  1. from portfolio_backtest import Backtest
  2. Backtest(tickers=["VTI", "AGG", "GLD"]).run()

tangency-portfolio.png
minimum-variance-portfolio.png
hierarchical-risk-parity-portfolio.png
minimum-cvar-portfolio.png
cumulative-return.png

advanced run

  1. from portfolio_backtest import Backtest
  2. import pprint
  3. bt = Backtest(
  4. tickers={
  5. "VTI": 0.6,
  6. "AGG": 0.25,
  7. "GLD": 0.15,
  8. },
  9. target_return=0.1,
  10. target_cvar=0.025,
  11. data_dir="data",
  12. start="2011-04-10",
  13. end="2021-04-10",
  14. )
  15. pprint.pprint(bt.run(plot=True))
  1. [{'Annual volatility': '10.9%',
  2. 'Conditional Value at Risk': '',
  3. 'Cumulative Return': '160.9%',
  4. 'Expected annual return': '9.6%',
  5. 'Sharpe Ratio': '0.70',
  6. 'portfolio': 'Your Portfolio',
  7. 'tickers': {'AGG': 0.25, 'GLD': 0.15, 'VTI': 0.6}},
  8. {'Annual volatility': '6.3%',
  9. 'Conditional Value at Risk': '',
  10. 'Cumulative Return': '102.3%',
  11. 'Expected annual return': '7.0%',
  12. 'Sharpe Ratio': '0.79',
  13. 'portfolio': 'Tangency Portfolio',
  14. 'tickers': {'AGG': 0.67099, 'GLD': 0.0, 'VTI': 0.32901}},
  15. {'Annual volatility': '4.3%',
  16. 'Conditional Value at Risk': '',
  17. 'Cumulative Return': '53.3%',
  18. 'Expected annual return': '4.3%',
  19. 'Sharpe Ratio': '0.53',
  20. 'portfolio': 'Minimum Variance Portfolio',
  21. 'tickers': {'AGG': 0.91939, 'GLD': 0.00525, 'VTI': 0.07536}},
  22. {'Annual volatility': '4.0%',
  23. 'Conditional Value at Risk': '',
  24. 'Cumulative Return': '48.7%',
  25. 'Expected annual return': '4.1%',
  26. 'Sharpe Ratio': '0.51',
  27. 'portfolio': 'Hierarchical Risk Parity Portfolio',
  28. 'tickers': {'AGG': 0.89041, 'GLD': 0.05695, 'VTI': 0.05263}},
  29. {'Annual volatility': '',
  30. 'Conditional Value at Risk': '0.5%',
  31. 'Cumulative Return': '52.1%',
  32. 'Expected annual return': '4.2%',
  33. 'Sharpe Ratio': '',
  34. 'portfolio': 'Minimum CVaR Portfolio',
  35. 'tickers': {'AGG': 0.93215, 'GLD': 0.0, 'VTI': 0.06785}},
  36. {'Annual volatility': '7.7%',
  37. 'Conditional Value at Risk': '',
  38. 'Cumulative Return': '166.5%',
  39. 'Expected annual return': '10.0%',
  40. 'Sharpe Ratio': '1.04',
  41. 'portfolio': 'Semi Variance Portfolio (target return 10.0%)',
  42. 'tickers': {'AGG': 0.39504, 'GLD': 0.0, 'VTI': 0.60496}},
  43. {'Annual volatility': '',
  44. 'Conditional Value at Risk': '2.5%',
  45. 'Cumulative Return': '251.3%',
  46. 'Expected annual return': '13.3%',
  47. 'Sharpe Ratio': '',
  48. 'portfolio': 'Return Maximize CVaR Portfolio (target CVaR 2.5%)',
  49. 'tickers': {'AGG': 0.08851, 'GLD': 0.0, 'VTI': 0.91149}}]

advanced-your-portfolio.png
advanced-tangency-portfolio.png
advanced-minimum-variance-portfolio.png
advanced-hierarchical-risk-parity-portfolio.png
advanced-minimum-cvar-portfolio.png
advanced-return-maximize-cvar-portfolio-(target-cvar-2.5%).png.png)
advanced-semi-variance-portfolio-(target-return-10.0%).png.png)
advanced-cumulative-return.png

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)

  1. from portfolio_backtest import Backtest
  2. bt = Backtest(
  3. tickers={
  4. "VTI": 0.6,
  5. "AGG": 0.25,
  6. "GLD": 0.15,
  7. }
  8. )
  9. print(bt.discrete_allocation(total_portfolio_value=10000))
  1. {'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