# How to value a floor when a loan is callable?

Certain bank loans pay a spread above a floating-rate interest rate (typically LIBOR) subject to a floor. I would like to find the value of this floor to the investor. Assume for this example that the loan does not have any default (credit) risk.

As a first pass, the value of the floor could be approximated using the Black model to price a series of floorlets maturing on the loan's payment dates. However, the borrower has a right to refinance (call) the loan (suppose it is callable at par), subject to a refinancing cost. If interest rates decline and the floor is in the money, the borrower is more likely to call the loan. Thus the floor (along with the rest of the loan) is more likely to go away precisely when the investor values it more.

How can this floor be valued?

-

Have you considered a binomial tree (or a richer monte carlo simulation) where each node is the probability of the interest rate rising or falling? – Quant Guy Oct 30 '11 at 17:31
@QuantGuy I have, and I'm not sure how the binomial tree helps me here (there are at least two sources of variation), whereas the Monte Carlo is a possibility but I'm looking for a more reduced form solution, or at least some advice on what others have done for this kind of problem. – Tal Fishman Oct 31 '11 at 2:43
@Tal: Hi, I think it would help if you could write explicitly the cashflows. First you could write them without call,then using a backward induction by setting the callability option at the last fixing,and adding callable dates, you should be able to obtain by dynamic principle a solution for the problem. Best regards. – TheBridge Oct 31 '11 at 16:32

## 1 Answer

As with most derivatives that have early exercise, you are going to want to price this using a grid scheme. I have priced callable loans with floors using the Generalized Vasicek model at my old hedge fund, and it is fairly easy to handle. As a matter of fact my students are doing that very problem as homework this week, and my reference implementation using explicit finite differences is 15 lines of Python/Numpy. (Sorry, guys, I am not going to post it here).

Allow me to make the following suggestions:

1. Do not ignore credit spread. Instead, consider modeling (credit spread + interest rate) as your basic Vasicek "short rate" variable $r$. Credit spread provides about half the rate volatility in your typical security so ignoring it severely mis-estimates option value.
2. Just do an explicit FD scheme unless you really need speed. It is actually easier than making a tree. If speed becomes a problem go to Crank-Nicolson.
3. If you are really only interested in the incremental value of the floor to the bondholder, then you can make a darn good approximation even if you ignore the term structure of interest rates. That lets you revert to the straight Vasicek model which is super-simple to deal with.
4. Use Neumann boundary conditions

As a reminder, to construct the Vasicek finite differencing scheme, you simply finite-difference the PDE in $\tau=T-t$

$$\frac{\partial P}{\partial\tau} = \frac12 \sigma(\tau)^2 \frac{\partial^2 P}{\partial\tau^2} + \kappa(\theta(\tau)-r) \frac{\partial P}{\partial r} - rP$$ and then apply your exercise conditions at each timestep. If you are willing to ignore term structures, then $\sigma$ and $\theta$ become constants. You can estimate the volatility historically, and fit the $\theta$ to market rates using the best fit to the risky zero rate curve and the expectation formula $$\widehat{E}\left[ \int_t^T r_s ds \right] = \frac{1-e^{-\kappa \tau}}{\kappa} r_t + \left( \tau-\frac{1-e^{-\kappa \tau}}{\kappa} \right) \theta$$

By Neumann boundary conditions, I mean essentially assuming that at the upper and lower short-rate limits, you should pretend that the second derivative is zero. This is equivalent to setting $\sigma=0$ but only at those limits.

-

4
Brian, let them post the solution for extra credit. – Ryogi Oct 31 '11 at 19:13
Thanks for the suggestion. I don't get how I can get away with just one source of stochasticity (credit spread + interest rate) when the strike price of the floorlets is in terms of the interest rate, and the callability of the loan itself depends only on the (floor-adjusted) spread (but not directly on interest rates). – Tal Fishman Nov 2 '11 at 0:07
Well, if you assume a contant credit spread of 0, then I suppose you are in the actual situation descibed in your question. You are quite right though...I forgot this is a floater. The interest paid is only on the rate stochastic variable so my suggestion to model the combined variable does not work. Naturally you could do a 2-d grid but that is much more involved, so maybe you want to stick with just modeling $r$ or just modeling $h$, and maybe goose the vol a bit. In any case, a grid is the right way to handle this problem. – Brian B Nov 3 '11 at 19:53
{"extraction_info": {"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 8, "mathjax_display_tex": 2, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0}, "config": {"markdown_headings": true, "markdown_code": true, "boilerplate_config": {"ratio_threshold": 0.18, "absolute_threshold": 10, "end_threshold": 15, "enable": true}, "remove_buttons": true, "remove_image_figures": true, "remove_link_clusters": true, "table_config": {"min_rows": 2, "min_cols": 3, "format": "github"}, "remove_chinese": true, "remove_edit_buttons": true, "extract_latex": true}, "english_confidence": 0.9398934245109558, "perplexity_flag": "middle"}