[Quant Investing] Portfolio Backtesting Program (Python Tool)
[Quant Investing] Permanent Portfolio | 20-Year Backtest with Stocks/Bonds/Gold/Cash
The 'Permanent Portfolio,' often called a classic asset allocation strategy, aims for consistent performance regardless of market conditions. But does it truly work in reality? In this post, we'll use a Python program I developed to conduct a 20-year backtest of the Permanent Portfolio and confirm the true power of asset allocation through the results.
Permanent Portfolio Backtest: Surprising Results
1. What is the Permanent Portfolio?
The Permanent Portfolio is an asset allocation strategy proposed by investment philosopher Harry Browne. The core principle is to diversify assets into four categories to prepare for all economic situations. Each asset is designed to perform its role during a major phase of the economic cycle (prosperity, recession, inflation, and deflation).
- Prosperity: Stocks (25%)
- Recession: Long-Term Bonds (25%)
- Inflation: Gold (25%)
- Deflation: Cash (25%)
By investing evenly in these assets with low correlations, the goal is to minimize overall portfolio volatility, as a loss in one asset is offset by gains in another.
2. Essential Prerequisites for Using the Program
To run this program, you need to install Python and a few essential libraries. If Python is not yet installed, please download and install it from the official website via the link below.
Once Python is installed, open Command Prompt (CMD) or a terminal and enter the command below to install the necessary libraries at once.
pip install yfinance PySide6 pandas numpy matplotlib certifi
3. How to Download and Run the Code File
The full code for the analysis program can be downloaded from the link below. After downloading the file, you can run the GUI program immediately with Python without any additional installation steps.
4. Simulation Method and Conditions
In my Python program, selecting the 'Portfolio Simulation' tab will bring up a screen where you can input the tickers and weights. I used US ETFs (Exchange Traded Funds) that represent each asset class to construct the Permanent Portfolio.

▲ Initial screen of the 'Portfolio Simulation' tab
I entered the tickers, weights, and period according to the Permanent Portfolio strategy.
- Stocks (25%): SPY, an S&P 500 ETF
- Long-Term Bonds (25%): TLT, a US long-term government bond ETF
- Gold (25%): GLD, a gold ETF
- Cash (25%): SHY, a short-term bond ETF
- Period: September 1, 2005, to September 1, 2025
- Rebalancing: Set to no rebalancing (Buy & Hold)
The screen with all the information entered is as follows. After entering the data, clicking the 'Start Simulation' button will automatically fetch the data and run the simulation.

▲ Permanent Portfolio simulation input screen
5. Simulation Results Analysis
Once the simulation is complete, the program displays a graph of the portfolio's cumulative return along with key performance indicators in text.

▲ Permanent Portfolio simulation results
Looking at the graph, you can see that the Permanent Portfolio's return curve rises smoothly and consistently compared to a single asset like SPY (stocks). The key metrics shown in the text box are:
- Final Return: 350.80%
- Maximum Drawdown (MDD): -19.78%
- Compound Annual Growth Rate (CAGR): 7.82%
The most notable point is the **Maximum Drawdown (MDD)**. While a 100% stock portfolio like SPY experienced sharp declines, the Permanent Portfolio maintained a relatively small loss and stable performance. This demonstrates that the **risk diversification effect**—the core of asset allocation—is proven by the simulation results. Furthermore, by clicking the 'Save as CSV' button, you can save the daily return data to an Excel file for additional analysis.

▲ Simulation results saved in an Excel file
6. Final Conclusion
The Permanent Portfolio simulation clearly shows how an asset allocation strategy manages risk and generates consistent returns. This program will be a great help to investors who want to quickly and objectively validate their investment ideas with real data. Use it to make smart investment decisions based on data and statistics, rather than relying on intuition alone.
The content of this blog is for reference only for investment decisions, and investment decisions should be made based on individual judgment and responsibility. Under no circumstances can the information in this blog be used as evidence of legal liability for investment outcomes.
댓글
댓글 쓰기