This page discusses various circular references that arise because of the DSRA and alternative methods for breaking the circular references. The circular references arise because the level and changes in the DSRA are a function of debt service. The DSRA creates at least four different circular reference problems as follows:
The DSRA creates circular references related to funding when the debt is driven by the debt to capital ratio. The DSRA changes the size of the debt which in turn changes the project cost, but the project cost changes the size of the debt.
The DSRA creates a circular reference related to interest income when sculpting is used because interest income is part of CFADS which is in turn drives the amount of the debt.
The DSRA creates a circular reference related to a cash sweep. This should really not happen but it is a big pain to resolve.
The DSRA creates a circular reference that is almost impossible to elegantly resolve when the DSRA releases or contributions are considered part of the DSCR.
Circular references associated with the DSRA are one of the biggest problems that arise from circular references. One problem is that the DSRA effects the pro-rata percent and the equity balance, but these things affect the debt. A second problem arises from how changes in the DSRA should affect the DSCR and scuplting. Nobody does this, but the DSRA is lie net debt in the context of corporate finance. Taking this analogy further means that changes in the DSRA should be in the denominator of the DSCR calculation and not the numerator.
The DSRA programming is tricky in a UDF. Here are a few key points about it:
- You should put it in a separate loop because you need to look forward and find the prospective debt service.
- The second loop should begin one period forward and go to the number of periods that you are using for the prospective DSRA.
- Allocate the DSRA funding and the change in the DSRA between pre-COD and post-COD as you would in the financial model.
- Make sure the total uses includes the DSRA
Here is some of the code for the DSRA with the second loop. When you do this you can put the change in the DSRA as a part of CFADS. This will automatically reduce the debt repayments in the final period (at least factored by the DSRA).
dsra_requirement_p(i) = 0 ' it is important that this is a new loop For i = start_repayment - dsra_periods To end_repayment ' Start before repayment so that you can add up the DSRA requirement ' This is like the SUM(OFFSET) in excel For k = i + 1 To i + 1 + dsra_periods dsra_requirement_p(i) = dsra_requirement_p(i) + total_senior_debt_service_p(k) Next k dsra_pre_cod_p(i) = 0 If i = start_repayment Then dsra_pre_cod_p(i) = dsra_requirement_p(i) End If dsra_change_p(i) = 0 If i > start_repayment Then dsra_change_p(i) = dsra_requirement_p(i) - dsra_requirement_p(i - 1) End If dsra_balance_p(i) = dsra_balance_p(i - 1) + dsra_pre_cod_p(i) + dsra_change_p(i) dsra_funded_p(i) = 0 dsra_lc_balance_p(i) = 0 If DSRA_letter_of_credit = False Then dsra_funded_p(i) = dsra_balance_p(i) End If If DSRA_letter_of_credit = True Then dsra_lc_balance_p(i) = dsra_balance_p(i) End If interest_income_p(i) = interest_income_rate(i) * dsra_funded_p(i - 1) dsra_lc_fee_p(i) = dsra_lc_balance_p(i - 1) * dsra_lc_fee_percent(i) Next i ' End of the DSRA loop