Skip to content

About

Portfolio optimisation and risk analysis using Python, Modern Portfolio Theory and numerical optimisation.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Portfolio Optimisation and Risk Analysis

A quantitative portfolio optimisation and risk analysis system built in Python.

Uses historical market data to analyse asset returns, volatility and correlations, construct portfolios under investment constraints, optimise allocations, and evaluate performance both in-sample and out-of-sample.

Overview

Historical price data is downloaded using yfinance.

Current analysis covers data from 2020 onwards.

Portfolio constraints include:

  • Long-only positions
  • Maximum 40% allocation to an individual asset

A 4% risk-free rate is used for Sharpe ratio calculations.

Features

Market Data

  • Download historical adjusted prices using yfinance
  • Handle missing data
  • Store downloaded price and return data locally

Return and Risk Analysis

  • Daily returns
  • Annualised returns
  • Annualised volatility
  • Correlation matrix
  • Annualised covariance matrix

Portfolio Analysis

  • Expected portfolio return
  • Portfolio volatility
  • Sharpe ratio
  • Maximum drawdown
  • Asset return contributions
  • Portfolio risk contributions

Portfolio Optimisation

The system currently supports:

  • Minimum-volatility portfolio
  • Maximum-Sharpe portfolio
  • Target-return portfolio
  • Efficient frontier generation

Out-of-Sample Backtesting

The project includes a static out-of-sample backtesting framework.

Historical data is divided into a training period and testing period.

Portfolio statistics and optimised weights are calculated using the training period data. The resulting portfolios are then evaluated using previously unseen test-period data.

An equal-weight portfolio is also included as a benchmark.

Technologies

  • Python
  • NumPy
  • Pandas
  • SciPy
  • Matplotlib
  • yfinance

About

Portfolio optimisation and risk analysis using Python, Modern Portfolio Theory and numerical optimisation.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages