Skip to content
{{ message }}

Instantly share code, notes, and snippets.

# StuartGordonReid/ValueAtRisk.py

Created Jun 12, 2015
Value at Risk Gist
 import numpy import numpy.random as nrand """ Note - for some of the metrics the absolute value is returns. This is because if the risk (loss) is higher we want to discount the expected excess return from the portfolio by a higher amount. Therefore risk should be positive. """ def var(returns, alpha): # This method calculates the historical simulation var of the returns sorted_returns = numpy.sort(returns) # Calculate the index associated with alpha index = int(alpha * len(sorted_returns)) # VaR should be positive return abs(sorted_returns[index]) def cvar(returns, alpha): # This method calculates the condition VaR of the returns sorted_returns = numpy.sort(returns) # Calculate the index associated with alpha index = int(alpha * len(sorted_returns)) # Calculate the total VaR beyond alpha sum_var = sorted_returns for i in range(1, index): sum_var += sorted_returns[i] # Return the average VaR # CVaR should be positive return abs(sum_var / index) # Example usage r = nrand.uniform(-1, 1, 50) print("VaR(0.05) =", var(r, 0.05)) print("CVaR(0.05) =", cvar(r, 0.05))
to join this conversation on GitHub. Already have an account? Sign in to comment