6.1 Imagine This

Suppose a division in our company buys electrical power to make steel. We understand of two very volatile factors in this process:

The price of stole at the revenue end, and also the other isThe price of electrical power at the cost end.

You are watching: Value at risk r

To model the joint volatility that the power-steel spread We have the right to use electricity and steel prices straight from the commodity markets. Us can additionally use stock sector indexes or company stock prices from electrical energy producers and also transmitters and also from a stole products firm to proxy for commodities. Using agency proxies offers us a more comprehensive view of these commodities than just the traded pure play in them.

In this chapter we will

Measure dangers using historical and parametric approachesInterpret results family member to business decisionsVisualize sector risk

6.2 What is market Risk?

Market risk for financial sectors is the impact of unanticipated price alters on the value of an organization’s place in instruments, commodities, and also other contracts. In commodity sectors there is sometimes taken into consideration a much more physical kind of industry risk dubbed volumetric hazard that relates to the distribution of the commodity come a buyer. This risk can be triggered by a facility contract such together a CDO or a spark spread tolling agreement in power and also energy markets. Below we will certainly assume that volumetric changes are physical in the feeling that a electrical power system operator governs a physical process such as idling an electric generation plant.

A “position” is the physical holding that an heritage or commodity, such as a share of apologize stock, or an oz of gold. A lengthy position way that the industry participant own a positive amount of the heritage or commodity. A short position way that the sector participant does no possess an asset or commodity. The “position” is taken into consideration exogenous come the price stochastic process. This suggests that changes in position do not influence the liquidity that the market relative to the position.

6.2.1 try this exercise

Suppose you room in fee of the task to regulate the contracting for electricity and steel at her speciality stole company. Your agency and industry have traditionally supplied tolling agreements to control the steel-power spread, both native a strength input and also a stole output point of view.

Look up a tolling agreement and summarize its main components.What room the input and output decision in this sort of agreement.

Here room some results

In the electrical power to stole tolling agreement a stole buyer provides power come a steel plant and receives native the plant supplier an amount of steel based upon an assumed power-to-steel transformation rate in ~ an agreed cost.Prices the power and steelTransformation rateAgree costDecisions includeBuying an lot of power (MWh)Selling an quantity of steel (tons)Scheduling tree operations

Decisions will hence depend top top the prices of electricity and also steel, the customer and seller segments served, the technology that determines the stole (tons) / strength (MWh) change rate, start-up, idle, and also shut-down timing and also costs and also overall plant production costs.

6.3 history Speaks

To gain the simple idea of threat measures across we build the value in ~ risk and also expected shortfall metrics native the historic simulated distribution of danger factors. Offered these risk components we integrate them into a portfolio and calculate your losses. Lastly with the loss distribution in hand we have the right to compute the danger measures.

We will use a purely, non-parametric historical simulation technique in this section. This means that we will certainly not must compute means, traditional deviations, correlations, or other statistical estimators, additionally known together parameters.

First we require to get some data. We will use throughout these computations several libraries:

mvtnorm builds multivariate regular (Gaussian) simulations andQRM estimates Student-t and also generalized pareto distribution (GPD) simulation.We will host off on these parametric philosophies till later and also start with historic simulation.The psych library helps us to discover the interactions amongst data with scatter plots and also histograms.The ggplot2 library enables us come build complex vizualizations the will aid the generation of further insights.

We check out in the csv record from the functioning directory. This record contains dates and several hazard factors. In this setup we will usage RWE share prices will certainly stand in for electricity price risk aspect input and also THYSSEN share prices for the steel price danger factor.

# Download the datadata.all read.csv("data/eurostock.csv", stringsAsFactors = FALSE)## This will convert string dates to## day objects belowstr(data.all) ## inspect the structure and look because that dates

str(row.names data.all$X) ## We find that the first field X contains dates
date as.Date(row.names) ## transform string dates to date objectsstr(date) ##Always look at framework to it is in sure
rownames(data.all) datehead(data.all)
tail(data.all) ##And always look at data

head(price) ## show the beginning
tail(price) ## and the end

(end.idx dim(price)<1>)
## <1> 4065
(price.2 rbind(price<1:5, >, price<(end.idx - 4):end.idx, >))

6.4 $ shot this exercise

Now stop really discover this data. The library psych has a prefabricated scatter plot histogram procession we deserve to use. V this composite plot we can examine historical relationships between the two threat factors as well as the shape of the risk components themselves. Us can likewise use this device to look at dependent simulations. After the scatter plots, we then look at the time collection plots that the 2 factors.

#Use scatter plots the the 2 price collection along through their histograms to study the datalibrary(psych)pairs.panels(price)


price.rownames rownames(price) plot(as.Date(price.rownames), price<,"THYSSEN">, type="l", main="Thyssen stock price data", ## location xlab="Date t", ## x-axis label ylab=expression(Stock~price~price)) ## y-axis label


plot(as.Date(price.rownames), price<,"RWE">, type="l", main="RWE share price data", ## title xlab="Date t", ## x-axis label ylab=expression(Stock~price~price)) ## y-axis label


The pairs.panel plot displays a matrix of interactions in between RWE and THYSSEN. Price level are interesting but, together we have seen, are not secure predictors. Let’s transform them to returns next.

6.5 currently to the issue at Hand

Now to the issue at hand: value at risk and expected shortfall. This two measures are based on the quantiles of accident attributable to danger factors. Value at danger is the quantile at an \(\alpha\) level of tolerance. Intended shortfall is the typical of the distribution beyond the value at hazard threshold.

To get losses attributable to market risk determinants we compute log price differences (also called log price relatives). These deserve to be interpreted as returns, or merely as percent changes, in the risk aspect prices. A plot allows us examine the results.

# right here we can compute 2 items# together: log price differences,# and their selection (to bound a plot)return.range range(return.series apply(log(price), 2, diff)) ## compute log-returns and also rangereturn.range
## <1> -0.2275282 0.2201375
plot(return.series, xlim = return.range, ylim = return.range, key = "Risk factor Changes", cex = 0.2)


Using the return we deserve to now compute loss. Weights are identified as the worth of the positions in each hazard factor. We can compute this together the notional times the last price. Mental we room talking around an input, electricity, and an output, steel. We form the margin:


where the critical term is the power to steel transformation rate that converts strength prices $ every MWh to $ per ton.

We transform prices to share prices and also tons to indistinguishable values in terms of the variety of shares. The naturally brief position in strength is equivalent to a an unfavorable number of share (in the square brackets). The naturally long position in steel is equivalent to a positive variety of shares. Through naturally brief we mean that strength is an input, incurs a cost, and also is request by the plant, and also supplied by a third party. By naturally lengthy we average that steel is an output, earns a revenue, and also demanded through a 3rd party.

## get last pricesprice.last as.numeric(tail(price, n = 1))## specify the positionsposition.rf c(-30, 10)## and compute the place weightsw position.rf * price.last## fan these across the length and## breadth that the risk variable seriesweights.rf matrix(w, nrow = nrow(return.series), ncol = ncol(return.series), byrow = TRUE)# We need to compute exp(x) - 1 for# very little x: expm1 accomplishes# thisloss.rf -rowSums(expm1(return.series) * weights.rf)summary(loss.rf)

loss.rf.df data.frame(Loss = loss.rf, circulation = rep("Historical", every = length(loss.rf)))require(ggplot2)ggplot(loss.rf.df, aes(x = Loss, fill = Distribution)) + geom_density(alpha = 0.2) + xlim(-100, 100)


The plot reveals some exciting deep and also shallow outliers. The distribution is definitely really peaked. We use the base role expm1 the computes the natural exponent the returns all minus 1.


Some of these returns, or percentage price transforms if you will, are very close come zero. High precision arithmetic is needed to gain accurate calculations. The function expm1 does this well.

Now us can obtain to estimating worth at danger (VaR) and expected shortfal (ES). We set the tolerance level \(\alpha\), because that example, same to 95%. This would typical that a decision an equipment would no tolerate lose in more than 5% that all threat scenarios.

We specify the VaR as the quantile for probability \(\alpha \in (0,1)\), as


which means find the best lower tied of ns \(x\) (what the prize \(inf\) = infimum means in English), such the the accumulation probability the \(x\) is greater than or equal to \(\alpha\).

Using the \(VaR_\alpha\) meaning we can additionally define \(ES\) as


where \(ES\) is “expected shortfall” and also \(E\) is the expectation operator, likewise known as the “mean.” Again, in English, the intended shortfall is the typical of every losses greater than the loss at a \(VaR\) linked with probability \(\alpha\), and \(ES \geq VaR\).

6.5.1 try this example

Let’s run the adhering to lines of code.We look increase the quantile role in R and see that it matches the calculation for VaR.hist.Using VaR us then calculate ES through only in search of losses higher than VaR.We also look carefully at the message annotations us can accomplish in ggplot2.

Here is the code:

First the computations that \(VaR\) and also \(ES\):

# basic Value in ~ Riskalpha.tolerance 0.99(VaR.hist quantile(loss.rf, probs = alpha.tolerance, names = FALSE))
## <1> 67.43459
# just as an easy Expected shortfall(ES.hist mean(loss.rf VaR.hist>))
## <1> 97.97649Next we set up the text and also plotting environment.

VaR.text paste("Value at threat =", round(VaR.hist, 2))ES.text paste("Expected Shortfall =", round(ES.hist, 2))ggplot(loss.rf.df, aes(x = Loss, fill = Distribution)) + geom_density(alpha = 0.2) + geom_vline(aes(xintercept = VaR.hist), linetype = "dashed", dimension = 1, color = "blue") + geom_vline(aes(xintercept = ES.hist), dimension = 1, color = "blue") + xlim(0, 200) + annotate("text", x = 40, y = 0.03, label = VaR.text) + annotate("text", x = 140, y = 0.03, label = ES.text)


We view that ES is lot bigger 보다 VaR but likewise much much less than the maximum historical loss.

One note: VaR is computed together a pre-event indicator beyond a lose of 0 in this example. Many applications that this metric facility loss at the average loss. Thus, loss would be computed as gross ns minus the average (50th percentile that loss).

A crate plot might also assist us visualize the outcomes without resorting to a probability distribution function.

ggplot(loss.rf.df, aes(x = Distribution, y = Loss)) + geom_boxplot(outlier.size = 1.5, outlier.shape = 21) + ylim(-250, 10)


This box plot might look better with much more than one distribution. So far we merely let background speak because that itself. We did not assume anything in ~ all about the form of the data. We just used the empirical document be the shape. In what follows let’s start to placed some different shapes into the lose potential of our tolling agreement.

6.6 Carl Friedrich Gauss, ns Presume…

What we simply did to be the classic historical simulation technique for computer tail risk measures. Historic simulation is a “nonparametric” technique, due to the fact that there is no estimation of parameters conditional on a distribution. Just history, unadorned, educates risk measurement. Now we change gears into the parametric job-related of Gauss: Gaussian, generalised Pareto, and also as an exercise Gossett’s (Student’s t) distributions.

Carl Friedrich Gauss is often attributed with the exploration of the normal distribution. So we tack his surname often sufficient to the normal distribution. This circulation has a crucial role in quantitative risk and finance. That is frequently the basis for many derivative pricing models and for simulation that risk factors in general. That does no exhibit thick tails, and also definitely is no skewed or peaked. This distribution definitely does not describe volatility clustering we observe in most financial and also commodity time series. Nevertheless, it is otherwise ubiquitous, if just as a benchmark (like “perfect competition” or “efficient markets”).

With just a tiny of mathematics here, we can specify the Gaussian (normal) circulation function. If \(x\) is a uniformly dispersed random variable, then


is the probability density function of the normally dispersed \(x\) with mean \(\mu\) and standard deviation \(\sigma\).

“Halfway”" between the normal Gaussian distribution and Student’s t is the chi-square, \(\chi^2\), distribution. We specify \(\chi^2\) together the distribution of the amount of the squared common random variables \(x\) with density function and \(k\) degrees of liberty for \(x > 0\):


and \(0\) otherwise. The “degrees that freedom” space the variety of normal distributions used to create a chi-square variate.

Now on to Student’s t circulation which is identified in regards to the Gaussian and chi-square distributions as the proportion of a Gaussian random variate come the square source of a chi-squared random variate. College student (a pseudonym for william Sealy Gossett) will have thicker tails but also the exact same symmetry together the regular curve. (Lookup this curve in Wikipedia amongst other references.)

Here is a fast comparison of the typical Gaussian and the Student’s t distributions. The attributes rnorm and rt generate Gaussian and also Student’s t variates, respectively. The features qnorm and qt compute the distance from the median (probability = 50%) for a given probability, here stored in alpha.tolerance.

library(mvtnorm) ## permits us to generate Gaussian and Student-t variateslibrary(ggplot2)set.seed(1016)n.sim 1000z rnorm(n.sim)t rt(n.sim, df = 5)alpha.tolerance 0.95(z.threshold qnorm(alpha.tolerance))

zt.df data.frame(Deviations = c(z, t), distribution = rep(c("Gaussian", "Student's t"), each = n.sim))ggplot(zt.df, aes(x = Deviations, to fill = Distribution)) + geom_density(alpha = 0.3) + geom_vline(aes(xintercept = z.threshold), shade = "red", linetype = "dashed", size = 1) + geom_vline(aes(xintercept = t.threshold), color = "blue", linetype = "dashed", dimension = 1) + xlim(-3, 3)


The ggplots2 library enables us to regulate several facets of the histogram consisting of fill, borders, vertical lines, colors, and line species and thickness. The plot requires a data frame where we have actually indicated the kind of distribution using a replication of personality strings. We view the two distributions are nearly the same in appearance. Yet the Student’s t tail is undoubtedly thicker in the tail together the blue t density overtakes the red z density. This is numerically evident as the t.threshold is \(>\) than the z.threshold because that a cumulative probability the 95%, the 95th quantile.

ggplot(zt.df, aes(x = Deviations, fill = Distribution)) + geom_density(alpha = 0.2) + geom_vline(aes(xintercept = z.threshold), color = "red", linetype = "dashed", size = 1) + geom_vline(aes(xintercept = t.threshold), shade = "blue", linetype = "dashed", dimension = 1) + xlim(1, 5)


Interesting digression! but not really no too far off the mark. The thresholds room the same with two standard risk measures, scaled for certain risk factors and also positions. We have simulated two different values at risk.

6.7 ago to the Future

Let’s remember where the returns (as changes) in each risk element come from. Also, we will extract the critical price for use below.

# Again computing returns together changes# in the danger factorsreturn.series apply(log(price), 2, diff) ## compute risk-factor changesprice.last as.numeric(tail(price, n = 1)) ## reserve critical price
Again to emphasize what constitutes this data, we specify the notional exposure. These are variety of shares of stock, variety of $1 million contract of futures, or volumetric contract sizes, e.g., MMBtus or boe. All of these job-related for us given the the price is dimensioned relative to the notional dimension.

So if the risk factors are oil and also natural gas prices, climate we must use a typical volumetric equivalent such together Btu (energy content) or boe (barrel of oil tantamount for volume). Place weights are then calculated as position times the last available price.

First, us can collection the weights directly and also a little more simply 보다 before due to the fact that we do not should simulate historically.

## specify the positionsposition.rf c(-30, 10) ## together before## and also compute the position weights## directly again as before(w position.rf * price.last)

mu.hat colMeans(return.series) ## mean vector mu; estimated = hatSigma.hat var(return.series) ## Variance-covariance procession Sigma(loss.mean -sum(w * mu.hat)) ## median loss
## <,1>## <1,> 28.4431Third, we collection the level of hazard tolerance \(\alpha\). Then let’s calculate VaR and ES:

# Compute VaR and also ES and returnalpha.tolerance 0.95q.alpha qnorm(alpha.tolerance)(VaR.varcov loss.mean + loss.stdev * q.alpha)

VaR.text paste("Value at risk =", round(VaR.varcov, 2))ES.text paste("Expected Shortfall =", round(ES.varcov, 2))ggplot(loss.rf.df, aes(x = Loss, fill = Distribution)) + geom_density(alpha = 0.2) + geom_vline(aes(xintercept = VaR.varcov), colour = "red", size = 1) + geom_vline(aes(xintercept = ES.varcov), color = "blue", size = 1) + xlim(0, 200) + annotate("text", x = 30, y = 0.03, label = VaR.text) + annotate("text", x = 120, y = 0.03, brand = ES.text)


6.8 try this example

Suppose the takes less electrical power to do steel than we assumed above. We deserve to model this by changing the positions to (-20, 10). Let’s redo steps 1, 2, and also 3 (this begs for a function).

First, us can set the weights straight a little an ext simply than before due to the fact that we perform not have to simulate historically.

## specify the positionsposition.rf c(-20, 10) ## as before## and compute the place weights## directly again as before(w position.rf * price.last)
## <1> -715 1845Second, calculation the median vector and the variance-covariance matrix, the two major inputs to the simulation of common risk element changes. Here we usage a purely parametric approach.

mu.hat colMeans(return.series) ## average vector mu; approximated = hatSigma.hat var(return.series) ## Variance-covariance matrix Sigma(loss.mean -sum(w * mu.hat)) ## median loss
## <,1>## <1,> 28.53755Third, collection the level of risk tolerance \(\alpha\). Then calculate VaR and ES:

# Compute VaR and also ES and also returnalpha.tolerance 0.95q.alpha qnorm(alpha.tolerance)(VaR.varcov loss.mean + loss.stdev * q.alpha)

VaR.text paste("Value at threat =", round(VaR.varcov, 2))ES.text paste("Expected Shortfall =", round(ES.varcov, 2))ggplot(loss.rf.df, aes(x = Loss, to fill = Distribution)) + geom_density(alpha = 0.2) + geom_vline(aes(xintercept = VaR.varcov), colour = "red", size = 1) + geom_vline(aes(xintercept = ES.varcov), colour = "blue", dimension = 1) + xlim(0, 200) + annotate("text", x = 20, y = 0.04, label = VaR.text) + annotate("text", x = 100, y = 0.04, brand = ES.text)


Aesthetics may overtake us right here as we really shoulf adjust the x and also y annotate coordinates to right on the graph properly.

So end the story of the main method used for years and also embodied in the famous 4:15 (pm, that is) danger report at JP Morgan. Also we mental the ns that we simulate right here is an operating income loss, i beg your pardon after taxes and also other adjustments, and, say, a one-year horizon, method a lose of additions to retained earnings. Book equity drops and also so will market capitalization ~ above average.

6.9 Let’s walk to Extremes

All along we have been stylizing financial returns, consisting of commodities and exchange rates, together skewed and also with thick tails. We next go on to investigate this tails more using severe tail circulation called the generalised Pareto circulation (GPD). For an extremely high thresholds, together as worth at risk and expected shortfall, GPD not just well describes actions in overabundance of the threshold, yet the mean excess end the threshold is direct in the threshold. Native this us get much more intuition about the use of meant shortfall together a meaningful risk measure. In current years sectors well gone beyond all Gaussian and Student’s t thresholds.

For a random variate \(x\), this circulation is characterized for form parameters \(\xi \geq 0\) as:


and as soon as the form parameter \(\xi = 0\), the GPD becomes the exponential circulation dependent only on the scale parameter \(\beta\):


There is one factor for GPD’s notoriety. If \(u\) is an top (very high) threshold, climate the excess of threshold function for the GPD is \ This an easy measure is linear in thresholds. It will allow us to visualize where rare events start (see McNeil, Embrechts, and Frei (2015, thing 5)). We will come ago to this property as soon as we look at operational loss data in a few chapters.

Let’s usage the QRM library to help us discover the optimal to the right of losses come the parameters. The fit.GPD duty will do this for us.

library(QRM)u quantile(loss.rf, alpha.tolerance, names = FALSE)fit fit.GPD(loss.rf, threshold = u) ## to the right GPD come the excesses(xi.hat fit$par.ests<<"xi">>) ## fitted xi
## <1> 15.89524Now because that the closed type (no random variate simulation!) using the McNeil, Embrechts, and Frei (2015, thing 5) formulae:

## Pull the end the losses end the## threshold and compute excess over## the thresholdloss.excess loss.rf u> - u ## compute the excesses end un.relative.excess length(loss.excess)/length(loss.rf) ## = N_u/n(VaR.gpd u + (beta.hat/xi.hat) * (((1 - alpha.tolerance)/n.relative.excess)^(-xi.hat) - 1))

6.9.1 shot this example

How great a fit to the data have actually we found? This plot must look approximately uniform since the GPD excess loss role is a linear duty of thresholds u.

gpd.density pGPD(loss.excess, xi = xi.hat, beta = beta.hat)gpd.density.df data.frame(Density = gpd.density, circulation = rep("GPD", every = length(gpd.density))) ## This must be U<0,1>ggplot(gpd.density.df, aes(x = Density, to fill = Distribution)) + geom_histogram()

and it does look “uniform” enough (in a statistical type of means as we perform eyeball econometrics again!).

6.10 All together Now

Let’s graph the historical simulation, variance-covariance and GPD results together.

loss.plot ggplot(loss.rf.df, aes(x = Loss, fill = Distribution)) + geom_density(alpha = 0.2)loss.plot loss.plot + geom_vline(aes(xintercept = VaR.varcov), colour = "red", linetype = "dashed", dimension = 1)loss.plot loss.plot + geom_vline(aes(xintercept = ES.varcov), color = "blue", linetype = "dashed", size = 1)loss.plot loss.plot + geom_vline(aes(xintercept = VaR.gpd), colour = "red", dimension = 1)loss.plot loss.plot + geom_vline(aes(xintercept = ES.gpd), colour = "blue", size = 1)loss.plot loss.plot + xlim(0, 200)loss.plot

the was a lot. We will need our “mean end excess” expertise when we obtain to to work risk. In reality we will be may be to use that to this risk measures for any kind that risk. However we will save ourselves for operational threat later. Someone might even annotate the graph…

6.11 Summary

Filtering - math to R translation - graphics - Normal and also GPD distribution - VaR and ES - loss distributions and mean end loss

6.14.4 Assessment

We will use the following rubric to assess our power in producing analytic occupational product because that the decision maker.

The message is laid out cleanly, v clear divisions and transitions in between sections and sub-sections. The creating itself is well-organized, cost-free of grammatical and other mechanical errors, divided into finish sentences, logically grouped right into paragraphs and also sections, and easy to monitor from the presumed level the knowledge.

every numerical results or summaries room reported to perfect precision, and with ideal measures of suspicion attached once applicable.

every figures and also tables presented are appropriate to the discussion for can be fried conclusions. Figures and tables are straightforward to read, through informative captions, titles, axis labels and legends, and are put near the relevant pieces of text.

The password is formatted and organized so the it is straightforward for rather to read and also understand. The is indented, commented, and also uses coherent names. The only consists of computations which are actually essential to prize the analytical questions, and avoids redundancy. Code obtained from the notes, native books, or from resources uncovered online is clearly acknowledged and also sourced in the comments. Functions or measures not directly taken from the notes have accompanying exam which examine whether the code does what the is claimed to. All password runs, and the R Markdown record knits to pdf_document output, or other output agreed v the instructor.

version specifications are described plainly and in appropriate detail. There are clear explanations of just how estimating the version helps come answer the analysis questions, and also rationales for every modeling choices. If multiple models are compared, they are all plainly described, in addition to the rationale because that considering many models, and also the factors for choosing one version over another, or for utilizing multiple models simultaneously.

The actual estimation and simulation of model parameters or estimated functions is technically correct. Every calculations based on estimates are plainly explained, and likewise technically correct. All approximates or derived quantities room accompanied with appropriate measures that uncertainty.

The substantive, analytical concerns are all answered as exactly as the data and also the design allow. The chain of reasoning from estimate results around the model, or derived quantities, to substantive conclusions is both clear and also convincing. Contingent answers (for example, “if X, climate Y , but if A, climate B, rather C”) are similarly described as warranted by the model and also data. If unpredictabilities in the data and model median the answer to some questions need to be imprecise, this as well is reflect in the conclusions.

See more: The State Of Texas Is Best Considered A Formal Region Because

All resources used, whether in conversation, print, online, or otherwise are provided and recognized where they used in code, words, pictures, and also any other materials of the analysis.