Professional Documents
Culture Documents
Debt sizing for minimum DSCR with VBA Goal Seek –
Solve for zero delta!
Rickard Warnelid is the Group CEO of Corality Financial Group.
In 2005 Rickard cofounded Navigator Project Finance, one of the most well respected Project
Finance and modelling consultancies in the world. In 2011 Navigator Project Finance merged with
Corality to form the consolidated entity Corality Financial Group.
Rickard is an internationally recognised authority in Excel financial modelling. He has a wealth of
project finance and financial modelling experience gained from a range of positions in Australia and
Sweden. He has been engaged by prestigious institutions in public and inhouse project finance
modelling training in Europe, the Middle East and Australasia.
He has been responsible for financial model audits and financial modelling of transactions of USD
+15bn in Project Finance, M&A, Corporate Finance and Private Equity in Australia, US, Asia, Europe
As an industry thought leader, Rickard is frequently invited to present and chair at different industry
events and conferences globally.
Optimising the maximum debt limit in the structuring phase of a project finance transaction can be
made a lot easier if you have a clear dashboard view of what is going on.
This example illustrates the debt sizing concept with a chart and shows how you can then simply
optimise one cell to achieve your theoretical maximum debt limit for the base case. It will not solve
more complex debt sizing situations but I think it is a good example as if highlights some important
concepts
Goal Seek should always be implemented to solve for zero
Replacing hardcoded references with range names in VBA
The importance of an illustrative chart in debt sizing
Minimum DSCR for a term loan project finance facility
I am using the Minimum DSCR as the constraining factor in this example. In other cases other
factors, or the combination of several, may be more appropriate
LLCR (Loan Life Coverage Ratio)
PLCR (Project Life Coverage Ratio)
ICR (Interest Coverage Ratio)
Gearing
LVR (Loan to Value Ratio)
http://www.fimodo.com/2009/09/debtsizingforminimumdscrwithvbagoalseeksolveforzerodelta/ 1/5
6/27/2016 Debt sizing for minimum DSCR with VBA Goal Seek – Solve for zero delta!
The DSCR (Debt Service Coverage Ratio) is typically defined as CFADS / Total Debt Service
(including principal) for the relevant period (quarterly, semiannual or annual, forwardlooking or
backwardlooking).
The example above has not been optimized as can be seen by the ‘Delta’ cell =0.31. The Target
minimum DSCR is 2.00x and the calculated minimum DSCR is 1.69x. The check indicates ‘Fail’.
This plot shows DSCR per period and the solid red line indicates the target minimum DSCR. A graph
of this type can be useful as it very quickly highlights if the covenant is breached by having data
points below the solid red line.
Use Goal Seek for debt sizing
To create a debt sizing macro I will first show how to run the goal seek manually. Click Goal Seek and
select the arguments as
Set Cell: Debt Facility Limit
To Value: 0
By Changing Cell: Delta
http://www.fimodo.com/2009/09/debtsizingforminimumdscrwithvbagoalseeksolveforzerodelta/ 2/5
6/27/2016 Debt sizing for minimum DSCR with VBA Goal Seek – Solve for zero delta!
Clicking Ok yields the following results for the debt size.
The chart clearly shows that there are no DSCR data points below the minimum DSCR covenant line
Ð proof that the Goal Seek has worked as desired.
Converting the manual debt sizing to a VBA macro
http://www.fimodo.com/2009/09/debtsizingforminimumdscrwithvbagoalseeksolveforzerodelta/ 3/5
6/27/2016 Debt sizing for minimum DSCR with VBA Goal Seek – Solve for zero delta!
The easiest way of creating a new VBA macro for a Goal Seek is to start off with a recorder macro.
Once the record macro has been activated, simply repeat the manual process as per the section
above.
Click AltF11 and review the code which will look something like this.
Sub DebtSizingGoalSeek()
'
' DebtSizingGoalSeek Macro
' Recorded by Rickard Warnelid for Fimodo
Range("H17").GoalSeek Goal:=0, ChangingCell:=Range("F6")
End Sub
Replace hardcoded cell references with range names in VBA
To make this work well in a live model it is critical to replace the hardcoded cell references with
defined range names.
The resulting VBA code:
http://www.fimodo.com/2009/09/debtsizingforminimumdscrwithvbagoalseeksolveforzerodelta/ 4/5
6/27/2016 Debt sizing for minimum DSCR with VBA Goal Seek – Solve for zero delta!
Sub DebtSizingGoalSeek()
'
' DebtSizingGoalSeek Macro
' Recorded by Rickard Warnelid for Fimodo
Range("Delta").GoalSeek Goal:=0, ChangingCell:=Range("FacilityLimit")
End Sub
There you go, a simple nice debt sizing macro that has been automated with VBA.
Recent posts by Rickard Wärnelid
http://www.fimodo.com/2009/09/debtsizingforminimumdscrwithvbagoalseeksolveforzerodelta/ 5/5