October 22, 1999
How the single
effective rate is calculated
A single effective rate is a constant discount rate that exactly reproduces, except in the instances noted below, the subsidy percentage that was obtained by the “basketofzeros” method. The need for a single effective rate arises from the dual requirements of the Federal Credit Reform Act (as amended). First, that the “basketofzeros” approach be used for discounting (though it describes that method rather than naming it); and, second, that financing accounts calculate interest earnings on balances deposited with the Treasury or interest payments on borrowings from the Treasury with a rate equivalent to that used for discounting. To meet this dual requirement, the credit subsidy calculator uses the “basketofzeros” method to calculate that original subsidy estimate for the budget and, at the same time, a single effective rate, that can be used for all other purposes.
The single effective rate has some characteristics that bear emphasis:
It depends upon the yield curve used to discount and the cash flow observations that are discounted. Thus, for a given set of cash flow observations, the single effective rate obtained for one yield curve will differ from that obtained for another yield curve. Also, for a given yield curve, the single effective rate obtained with one collection of cash flow observations, generally, will differ from that obtained from another collection of cash flow observations. (“Generally,” because there are combinations of changes that would have exactly offsetting effects.)
It is determined by a trialanderror method, which is described in Appendix A.
It cannot be uniquely determined in all circumstances. Two instances are described below. In the first instance, no single effective rate can be obtained; in the second, the single effective rate is higher than the highest spot rate used to discount the individual cash flow observations.
Finally, instances may arise in which multiple single effective rate exists.
The methods described in this paper (and its appendices) produce a unique single effective rate (if one exists), the most appropriate single effective rate (if more than one exists), or the nearest approximation (if none exists).
Methods, stated
generally
To avoid the problems created by the exceptions noted below, the steps below are followed:
Determine if there is any relationship between the subsidy percentage and the discount rate. If all possible discount rates result in the same subsidy, return a weighted average (defined below) as the single effective rate;
Determine if a single effective rate exists. If not, return a weighted average as the single effective rate;
Determine if there is a unique single effective rate. If so, and if it falls within the bounds of the spot rates used to obtain the basketofzeros result, return that value; if not, return the nearest value within the range of values used in the basketofzeros computation.
When there are multiple single effective rates and two or more are within the range of values used in the basketofzeros computation; return the single effective rate that is closest to the weighted average.
“Weighted average” refers to an average in which (a) spot rates are converted to effective annual yield and (b) are weighted by the absolute values of the cash flow observations, and averaged.
How exceptions
arise
The seemingly anomalous result of not finding a unique, exact single effective rate arises when the relationship between the subsidy and the discount rate is not “monotonic” or not consistently rising or consistently falling in the relevant interval. The following discussion presents three kinds of results from a nonmonotonic relationship.
Multiple solutions or no solution can be shown by example. In the following cash flow observations, the important value is the negative value on the third line. The large, negative value reduces the net present value of all cash flows. If the observation on the third line were positive, the relationship between subsidy and discount rate would be monotonic.
Observation at the end of year… 
Cash flow observation 
Spot rate (for basketofzeros) 
Present value factor 
Present value 
1 
15 
3.0 
.97066 
14.56 
2 
50 
4.0 
.92385 
46.19 
3 
40 
5.0 
.86230 
34.49 
Total 
25 
(na) 
(na) 
26.26 
When we look at the subsidies that result from applying constant alternative discount rates to the cash flow observations above, we find the following:
The subsidy reaches a maximum of 25.091 at a constant discount rate of 3.829 percent. It never reaches the target rate of 26.26 percent. Further, had the target subsidy been 25.087, it could have reached this value with a constant discount rate of either 3.00 percent or 4.75 percent.
How common are such patterns of cash flow observations? The parabolic pattern, above, occurs often in practice in loan guarantee programs, though not to the severe degree shown in the chart above. In many loan guarantee programs, there is a delicate balance among the positive values in the near term (upfront fees and annual fees) and negative values in the middle term (payments on defaults) and positive values again in the long term (recoveries on defaults). Of course, the mere presence of positive and negative values does not guarantee a parabola in the relevant range of values. A parabolic pattern, such as the one shown above, results when positive and negative values are concentrated in certain time periods and have substantially offsetting contributions on the net present value result.
A single effective rate outside the expected range can also occur. On the surface, one might reasonably expect that the single effective rate would lie somewhere in the interval from the lowest spot rate to the highest spot rate used in the basketofzeros approach. But that does not always happen. Here’s an example:
Observation at the end of year… 
Cash flow observation 
Spot rate (for basketofzeros) 
Present value factor 
Present value 
0 
10.000 
3.00 
1.00000 
10.0000 
1 
10.404 
4.00 
0.96117 
10.0000 
Total 



0.0000 
Obviously, because only one observation is affected by the discount rate, the single effective rate to obtain a subsidy of exactly zero is 4.00 percent (after conversion to an effective annual yield). Now, consider a trivial modification of this example:
Observation at the end of year… 
Cash flow observation 
Spot rate (for basketofzeros) 
Present value factor 
Present value 
0.04* 
10.000 
3.00 
0.99876 
9.9876 
1 
10.404 
4.00 
0.96117 
10.0000 
Total 



0.0124 
* 1/24^{th} or approximately 0.04 corresponds to a cash flow observation occurring two weeks after the start of the fiscal year.
Now, the single effective rate increases to approximately 4.08, which is higher than the rate used for any observation.
Note about the appendices
Appendix A give a more complete description of the numerical methods used to evaluate whether intervals are monotonic and find solutions with reasonable efficiency.
Appendix B gives some references to published works that provide more details on numerical methods, including some the methods described in Appendix A.
Appendix A: Numerical methods
used to compute the single effective rate
The method used to find the single effective rate is a variant of the “interval bisection” approach, described in several published sources on numerical methods, some of which are listed at the end of this paper.
Definitions:
R_{L}, R_{U} Interest rates at the lower and upper bounds of the search interval.
The lower bound is 199 percent. At 200 percent, the expression 1 + r/200 becomes zero. Raised to any power it would still be zero and unsuitable as a denominator. Values lower than 200 percent would result in imaginary roots. (Technically, there are mathematically valid values between 199 and 200; however, these are treated as outofrange values.)
The upper bound is approximately 10^{308} percent, which is the largest value that can be represented in computer memory for the number format used in the CSC (8byte floating point value or “double”).
R_{l}, R_{m}, R_{u} Interest rates at the lower bound, midpoint, and upper bound of the subset of the interval being tested in a particular iteration.
sub (r) A function that returns the subsidy percentage computed for a given set of cash flows and an interest rate r. (Described in How the subsidy and its components are derived from cash flow observations.)
mid (r_{1}, r_{2}) A function that returns the midpoint between interest rates r_{1} and r_{2}, computed as the arithmetic mean of the two values when they are of the same order of magnitude and the geometric mean when the orders of magnitude differ.
monotonic (r_{1}, r_{2}) A function that returns “true” when the subsidies calculated in the interval from r_{1} and r_{2} are monotonically increasing or decreasing and “false” otherwise. (Methods are described below.)
has (r_{1}, r_{2}) A function that returns “true” when the target subsidy lies between the sub (r_{1}) and sub (r_{2}) and “false” otherwise. Obviously, for this to work reliably, the expression monotonic (r_{1}, r_{2}) must be “true.” (Methods are described below.)
find (r_{1}, r_{2}) A function that returns the value of r for which sub (r) exactly matches the target subsidy value. This expression is undefined for intervals in which the expression has (r_{1}, r_{2}) is “false.” (Methods are described below.)
avg() A function that returns the average spot rate, converted to an effective annual yield, that is weighted by the cash flow observations, without regard to sign.
General method:
Evaluate sub (r) at five values of r, equally spaced in the interval of spot rates used for calculating the subsidy. If successive values of sub (r), proceeding from the lowest to the highest value of r, are within 0.0001 of each other, then the subsidy may be considered to be insensitive to the discount rate assumptions. In such cases, return avg( ).
Set R_{l} to R_{L}, R_{u} to R_{U}, and R_{m} to mid (R_{l}, R_{u}).
If the expression monotonic (r_{l}, r_{u}) and has (r_{l}, r_{u}) are “true,” evaluate find (r_{l}, r_{u}) to obtain the single effective rate. If the result of find (r_{l}, r_{u}) is within the interval of spot rates used for calculating the subsidy, return it; otherwise, take the nearest spot rate used in calculating the subsidy, convert it to an effective annual yield, and return that value.
If the expression monotonic (r_{l}, r_{u}) is “true” and has (r_{l}, r_{u}) is “false,” return avg ( ) and issue a warning message that the exact single effective rate could not be found.
If the expression monotonic (r_{l}, r_{u}) is “false,” repetitively divide the interval in half until all subintervals are monotonic, then evaluate has (r_{1}, r_{2}) for each subinterval, and evaluate find (r_{1}, r_{2}) where has (r_{1}, r_{2}) is “true.” If more than one solution is found, return the solution closest to avg ( ).
If the preceding step fails to find a result, return avg ( ).
In any instance where intervals are subdivided, the minimum interval is 0.02 basis points. When intervals are smaller than that, it becomes increasingly difficult (because of limitations in computer arithmetic) to find meaningful first derivatives.
Method for monotonic (r_{1}, r_{2})
This expression evaluates to “true” when each successive value of sub (r), calculated from r_{1 }to_{ }r_{2}, is consistently equal to or greater than the previous value or is consistently equal to or less than the previous value.
There is no convenient way to directly determine if the values of sub (r_{1}) through sub (r_{2}) are monotonic. First, these subsidy values are derived from a collection of cash flow observations, which will vary widely in number and need not follow any pattern of regularity. The values of sub (r_{1}) through sub (r_{2}) would follow a polynomial of a fairly high order with a trivially less complex first derivative. Second, because there is an infinite number (or, in computer representations, a very large, but finite number) of such observations, direct evaluation of all possible points is impractical.
The method used is an approximation in which the first derivative is estimated at the beginning and end of the interval and at three equally spaced points within the interval. If these estimated derivatives all have the same sign and if each successive derivative is either equal to or greater than the previous or is equal to or less than the previous, the values in the interval are assumed to be monotonic.
Though more strict than the actual definition of “monotonic,” this working definition can be easily and efficiently computed.
Apart from that limitation, this method should work in this context because the values being tested are subsidy percentages that are derived from a monotonically varying discount rate and a given set of cash flow observations that do not change as the discount rate changes. The cash flow observations tend to be numerous, generally in the hundreds, and the subsidy percentage is a polynomial function in the form:
sub (r) = b_{1} + b_{2}x^{n} + b_{3}x^{n} + …
where the b_{n} are the cash flow observations and the x^{n} are discount factors with a suitable exponent. Consequently, the function will be continuous and often of a fairly high order, which will tend to neutralize the shortcomings of the method.
Method for has (r_{1}, r_{2})
Return “true” if the target value for the subsidy lies in the interval sub (r_{1}) and sub (r_{2}) and “false” otherwise. The returned value is guaranteed to be accurate only when monotonic (r_{1}, r_{2}) is “true.”
The return value is determined from sub (r_{1}) and sub (r_{2}) by the following:
If sub (r_{1}) is less than or equal to the target: return “true” when sub (r_{2}) is equal to or greater than the target and “false” otherwise.
If sub (r_{1}) is equal to or greater than the target: return “true” when sub (r_{2}) is less than or equal to the target and “false” otherwise.
Method for find (r_{1}, r_{2})
Return the discount rate that exactly produces the target subsidy percentage. It is undefined in intervals where has (r_{1}, r_{2}) is “false.” The function uses a variant of the “interval bisection” method. Specifically:
Initial steps: Set R_{l} to r_{1} and R_{u }to r_{2}._{ }
Iteration: Set R_{m} to mid (R_{l}, R_{u}).
If the difference between R_{m} and R_{u} is negligible, use R_{m} as the result of the evaluation of the function and cease iteration.
If the target subsidy percentage lies between sub(R_{l}) and sub(R_{m}), set R_{u }to R_{m}; otherwise, set R_{l }to R_{m} and iterate again.
Appendix B: References
Steven C. Charpa and Raymond P. Canale, Numerical Methods for Engineers, Third Edition (New York: WCB/McGrawHill, 1998).
Gisela EngelnMullges and Frank Uhlig, Numerical Algorithms with C (New York: SpringerVerlag, 1996).
B. H. Flowers, An Introduction to Numerical Methods in C++ (Oxford: Oxford University Press, 1995).
Thomas A. Grandine, The Numerical Methods Programming Projects Book (Oxford: Oxford University Press, 1990).
John H. Mathews, Numerical Methods (Englewood Cliffs, NJ: PrenticeHall, 1992).
William H. Press, Saul A. Tenkolsky, William T. Vetterling, and Brian P. Flannery, Numerical Recipes in C, Second Edition (Cambridge: Cambridge University Press, 1992).
John R. Rice, Numerical Methods, Software, and Analysis (Boston: Academic Press, 1992).
Sidney Yakowitz and Ferene Szidarorszky, An Introduction to Numerical Computation (New York: MacMillan, 1989).