Metadata-Version: 2.1
Name: portfoliorisk
Version: 1.0.2
Summary: One-command quantitative portfolio risk analysis: optimisation, Monte Carlo, VaR, CVaR, GARCH, stress testing.
Author: Yash
License: MIT
Project-URL: Homepage, https://github.com/yash/portfoliorisk
Project-URL: Bug Tracker, https://github.com/yash/portfoliorisk/issues
Keywords: portfolio,risk,finance,VaR,CVaR,GARCH,Monte Carlo,quantitative,investment
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Office/Business :: Financial
Classifier: Topic :: Scientific/Engineering :: Mathematics
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: Intended Audience :: Education
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: PyPortfolioOpt >=1.5.0
Requires-Dist: arch >=5.0.0
Requires-Dist: numpy >=1.21.0
Requires-Dist: pandas >=1.3.0
Requires-Dist: scipy >=1.7.0
Requires-Dist: yfinance >=0.2.0

# portfoliorisk

> One-command quantitative portfolio risk analysis for everyone.

**Created by Yash**

---

## Install

```bash
pip install portfoliorisk
```

---

## Usage

Just give it your stocks and your investment amount:

```python
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

```python
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:

```python
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
