Understanding your position: Crack Representation
Introduction
In risk modeling and systems context, positions are reported as swaps, namely, price exposure at vertices defined by commodity (or price curve) and pricing month. In reality, describing positions in terms of flat price exposure and cracks (including basis, differential, spread) is more convenient, especially when explaining trading strategies. In this article, I will introduce crack representation, conversion algorithm between swap and crack representation, and benefits of crack representation in risk modeling.
Crack Representation
Many trading strategies involve cracks. When a trader says that “I have Gasoline/Brent Crack 100 MB and Naphtha/Diesel Crack 1000 MTâ€, it means that his position - a complex mixture of futures, swaps, basis swaps and physical inventories - is “equivalent†to a mixture of two simple crack strategies. However, without explicit tagging, one cannot easily compute equivalent crack position. Also, the conversion is not unique, depending on the intention of the interpreter.
In crack representation, one describes his portfolio in terms of cracks (plus residual net exposure, as one cannot express non-zero exposure with cracks) rather than swaps. Initially, we assume that we have a swap representation of the portfolio, namely, exposure quantities at each commodity-month vertex. From the initial position, one can subsequently apply rewrite rules to convert swaps into cracks, one at a time. For example, with a rewrite rule of “Gasoline/Brent Crackâ€, one replace every gasoline swap with Gasoline/Brent crack plus Brent swap. For example, if you have Brent 1000 BBL and Gasoline 1000 BBL, after applying the rule, your position is Brent 2000 BBL and Gasoline/Brent Crack 1000 BBL. The procedure is repeatedly applied until you have no rule to apply, finally arriving - hopefully - an all-crack representation plus residual swaps (such as Brent 2000 BBL in the example above).
It’s rather tricky, and inconvenient to work with rewriting rules. First of all, one has to define priorities, that is, orders to apply rewrite rules. Given a Gasoline swap and with two cracks - Gasoline/Brent and Gasoline/Diesel, for example, there is an ambiguity which rules to apply first. Also, it’s not clear if the final result is complete, or unique.
A better way of constructing crack representation is, considering crack tree such as depicted in Figure A. This is a simply connected graph, where each node corresponds to a swap, and edges connecting two swaps corresponds to cracks. There is a fictitious swap at the top, which we call a ‘NULL’ swap. Thus the edges of tree read as follows : (1) Brent/NULL Crack (1.1) Gasoline/Brent Crack (1.2) Diesel/Brent Crack (1.2.1) Naphtha/Diesel crack.
In Figure A, numbers within nodes represent swap quantities. With a little algebra, one can check that the same portfolio can be represented as cracks, as shown in Figure B where numbers along the edges represent crack quantities. Note that in Figure B, the edge connecting from nothing to Brent represents Brent/NULL Crack, which is simply Brent Swap. Thus, in crack representation, we have 3000 BBL of Brent swap exposure plus Gasoline/Brent Crack 2000 BBL and Naphtha/Diesel Crack 1000 BBL. The same portfolio can be either described using swap representation (Figure A) or crack representation (Figure B), and there is a "duality" between them.
One might have multiple trees, for example, one with Brent as its root, and the other stepping down from Gasoil. In this case, one finally arrives Brent and Gasoil swap, and all the cracks corresponding to edges in both trees. However, the trees must be simply connected (always having one parent) otherwise the conversion is not unique.
Conversions between Swap and Crack Representation
Consider a node of a swap, say the Naphtha swap 1000 BBL in Figure A below. As it is connected to Diesel node, we will apply Naptha Swap (1000) = Naphtha/Diesel Crack (1000) + Diesel Swap (1000). In other words, we assign swap quantity to the upward crack edge and add swap quantity to the parent node swap quantity. Repeating this procedure starting from leaf nodes, we arrive at a very simple rule.
Crack quantity = sum of swap quantities for all nodes in the subtree starting from the crack edge
Thus, in Figure B, Diesel/Brent crack = Diesel Swap + Naphtha Swap = 0, Gasoline/Brent crack = Gasoline Swap = 2000; and in Figure C, Brent/NULL Crack = sum of all swaps = 3000. Note that in crack representation, topmost crack quantity is equal to flat price exposure, which is the net exposure in swap representation.
To convert crack representation into swaps, consider a node. There is an upward edge connecting to parent swap, and downward edge(s) connecting to child swap(s). Considering the signs of the cracks, one can derive
Swap quantity = upward edge crack quantity - sum of downward edge crack quantities
We can also work with time spread in the same way by letting the nodes have different month indices, or assign time spread only to the top node whereas edges represent same-month cracks.
Applications of Crack Representation
Crack representation has advantages over swap representation in terms of modeling stability. Suppose that we are modeling Naphtha/Diesel spread. One can work with swap representation where the two curves are separately modeled and crack is calculated as the difference between the two modeled prices. The problem is that they are highly correlated through a common factor representing overall level of oil price, which is fast-varying and with large volatility. There are product-specific components which are slow-varying and with a smaller amplitude, and crack is actually the difference between the product-specific components. However, if the curves are modeled independently then the fast moving, large volatility component dominates and mask out product-specific component, resulting in poor modeling performance for the crack price. With crack representation, the fast-moving common input is factored out (those at the top node such as Brent in our model) and one is always working with cracks explicitly, which gives better modeling performance.
Another application is P&L attribution. P&L changes may be attributed to individual prices, such as Naptha, but it would be easier to understand if we break down Naptha price into Brent, Diesel/Brent, Naptha/Diesel (we just follow crack labels in the tree starting from NULL down to the Naphtha node), and also breakdown P&L change arising from base level price (Brent) and those from cracks. For example, you can conclude most of the P&L change comes from Brent/Diesel spread change, even though you don’t have Brent or Diesel exposure in swap representation.
Crack representation can also be used to calculate VaR. In this case, one can calculate standalone VaRs for the root node (fixed price exposure) and crack VaR’s corresponding to each edge, and one may employ different methodologies for modeling flat price and cracks reflecting their timescale. By truncating the tree at some level, one can obtain a reduced model which corresponds to ignoring price volatility for minor cracks (in this case you'd better arrange cracks with decreasing volatility). Also, VaR attribution can be easier, as is in the case of P&L attribution.
Crack tree construction largely depends on the business case. Cracks may be arranged from upstream to downstream, higher volatility to lower volatility, major products to minor products, and so on. One can also consider using statistical tools such as hierarchical clustering, which gives ordering of prices in terms of their pairwise similarities.
Summary
Using a complete set of cracks represented as a simply-connected tree, one can easily convert a position in swap representation into equivalent position in crack representation. Crack representation has advantages over swap representation for understanding the position, performing P&L and VaR attribution and quantitative modeling of prices.