One-command quantitative portfolio risk analysis: optimisation, Monte Carlo, VaR, CVaR, GARCH, stress testing.
Project description
portfoliorisk
One-command quantitative portfolio risk analysis for everyone.
Created by Yash
Install
pip install portfoliorisk
Usage
Just give it your stocks and your investment amount:
import portfoliorisk as pr
pr.run(["AAPL", "JPM", "XOM", "GLD"], investment=10000)
That's it. A full risk report prints instantly in your terminal.
What You Get
═══════════════════════════════════════════════════════════════════════
PORTFOLIORISK · FULL RISK ANALYSIS REPORT
═══════════════════════════════════════════════════════════════════════
1 · PORTFOLIO COMPOSITION (Max Sharpe Ratio Optimisation)
2 · OPTIMISATION PERFORMANCE
3 · MONTE CARLO SIMULATION (10,000 paths · 252 trading days)
4 · HISTORICAL MAXIMUM DRAWDOWN
5 · GARCH(1,1) VOLATILITY MODEL
6 · STRESS TEST RESULTS
── EXECUTIVE SUMMARY ──
What It Analyses
| Analysis | Description |
|---|---|
| Portfolio Optimisation | Finds the best allocation across your stocks using the Efficient Frontier (Maximum Sharpe Ratio) |
| Monte Carlo Simulation | Runs 10,000 simulated future scenarios over 1 year |
| Value at Risk (VaR) | Maximum expected loss at 95% confidence |
| Conditional VaR (CVaR) | Average loss in the worst 5% of scenarios |
| Fat-Tail Simulation | Realistic crash modelling using Student-t distribution |
| GARCH(1,1) Model | Measures how volatile your portfolio is right now + 7-day forecast |
| Max Drawdown | Largest historical peak-to-trough loss |
| Stress Testing | Impact of 2008 crisis, tech crash, rate hike on your portfolio |
Examples
import portfoliorisk as pr
# Tech-heavy portfolio
pr.run(["AAPL", "MSFT", "GOOGL", "NVDA"], investment=25000)
# Balanced portfolio
pr.run(["SPY", "BND", "GLD", "QQQ"], investment=50000)
# Indian ADRs + US stocks
pr.run(["INFY", "WIT", "AAPL", "JPM"], investment=15000)
# Small portfolio
pr.run(["TSLA", "AMZN"], investment=5000)
Access the Results in Code
pr.run() also returns a dict so you can use the numbers yourself:
results = pr.run(["AAPL", "JPM", "XOM", "GLD"], investment=10000)
print(results["weights"]) # {'AAPL': 0.088, 'GLD': 0.608, ...}
print(results["sharpe_ratio"]) # 1.62
print(results["var_fattail"]) # 1661.02 ← realistic downside risk
print(results["max_drawdown"]) # -0.1623 ← worst historical dip
print(results["garch"]["beta"]) # 0.8822 ← volatility persistence
Requirements
- Python 3.8+
- Internet connection (to download stock data)
All dependencies install automatically with pip install portfoliorisk.
How It Works
Your tickers + investment amount
↓
[1] Download 5 years of price data (yfinance)
[2] Compute optimal weights (PyPortfolioOpt)
[3] Run 10,000 Monte Carlo paths (NumPy)
[4] Calculate VaR & CVaR (Normal + Fat-Tail)
[5] Fit GARCH(1,1) volatility model (arch)
[6] Run stress test scenarios
[7] Print full report to terminal
License
MIT © 2026 Yash
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file portfoliorisk-1.0.2-py3-none-any.whl.
File metadata
- Download URL: portfoliorisk-1.0.2-py3-none-any.whl
- Upload date:
- Size: 13.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4d5c2b1f806120ea54c7815e208f5e008be63d1a16231cbacf4c7b19817f0f6a
|
|
| MD5 |
706ff44f886c6bba55e3eef3c325db02
|
|
| BLAKE2b-256 |
5f7be45cfc7001876fd97101b70b8bff500173bfc243803846c4fa9242a0b1df
|