Finance tool

cb-terminal

Local terminal built for convertible bond analysis.

The problem

Convertible bond (CB) trading still requires a lot of manual oversight: most trades are executed in chatrooms, and price quotes are not standardized across brokers. As every bond has different terms and features, CBs are inherently complex instruments. Trading is further complicated because execution is sometimes on a “hedged basis” (e.g., fixing the pricing relationship between the bond and the underlying stock).

Due to these factors, existing financial software often lacks the ability to provide comprehensive time-series analysis, and customized tools are preferred for valuation and analytics. Therefore, the goal is to build a tool that is tailored for convertible bond analysis and supports better trading decisions.

Workflow

Figure 01 Workflow illustration.

The terminal

Screenshots of the assumptions and valuation output pages:

CB Terminal assumptions screen with volatility, credit spread, borrow cost, dividend yield, risk-free rate, model, and scenario inputs
Figure 02 Assumptions are explicit, reviewable, and can be saved as reproducible scenarios before pricing.
CB Terminal valuation output showing market price, fair value, parity, bond floor, relative-value drivers, and volatility charts
Figure 03 The output presents valuation, cheap/rich, market drivers, and volatility comparisons in one view.

The valuation model

The production model, tf_split_tree:v2, is a one-factor, constant-parameter Tsiveriotis–Fernandes (TF) lattice. It combines a recombining Cox–Ross–Rubinstein stock tree with a split valuation: conversion-contingent value is discounted at the risk-free rate, while cash-only value is discounted at the risk-free rate plus a credit spread. [1] [2]

1. Build the stock tree

Under the risk-neutral measure, the stock follows an effective-carry process:

dS / S = (rqb)dt + σdW

Where S is the underlying stock price, r is the risk-free rate, q is the dividend yield, b is the stock-borrow cost, σ is annualized volatility, dt is a small time interval, and dW is a random price shock.

For a step of length Δt, the CRR moves and risk-neutral probability are:

u = eσΔt,   d = 1 / u p = [e(rqb)Δtd] / (ud)

Where u and d are the stock-price multipliers for an up or down move, p is the risk-neutral probability of an up move, 1−p is the probability of a down move, Δt is one tree step, and e denotes exponential compounding.

2. Split equity and cash value

At each node, total CB value V is split into an equity/conversion component E and a cash-only component C. If s is the credit spread:

E = erΔt[pEup + (1−p)Edown] C = e−(r+s)Δt[pCup + (1−p)Cdown] V = E + C

Where E is the conversion-linked component, C is the cash-only component, V is their combined value, s is the issuer credit spread, and the up and down subscripts refer to the two possible next-step nodes.

Conversion sets (E, C) = (kS, 0), where k is the conversion ratio. A cash put sets (E, C) = (0, P). Coupons are added at their payment nodes before the holder chooses whether to continue or convert.

3. Apply holder and issuer rights

The lattice works backward through each date, applying the holder’s floor L and the issuer’s ceiling H simultaneously. The issuer ceiling is the greater of the cash call price and the value received through forced conversion:

L = max(eligible conversion value, eligible put price) H = max(call price, forced-conversion value) Vnode = max[L, min(Vcontinuation, H)]

Where L is the value floor created by the holder’s conversion and put rights, H is the ceiling created by the issuer’s call right, and Vcontinuation is the value of holding the bond for another step.

At maturity, the bond pays the greater of cash redemption plus the final coupon and conversion value:

VT = max(redemption + final coupon, kST)

Where VT is the bond value at maturity, k is the number of shares received per bond, and ST is the stock price at maturity.

This backward induction models coupons, early conversion, scheduled puts, multiple call schedules, and maturity redemption in one framework. The engine also calculates parity, delta, conventional yield to maturity and yield to put, and implied volatility conditional on the selected credit spread.

Judgment & limits

  • Flat inputs: rates, credit spread, volatility, dividends, and borrow cost remain constant throughout each valuation run; term structures and changing market regimes are not modeled.
  • Credit-risk approximation: the TF split-discounting approach has known shortfalls. For example, TF applies a credit spread to the bond-like portion instead of modeling default directly. Therefore, recovery, the stock-price reaction to default, and the relationship between credit and equity risk are handled only implicitly, which can cause inconsistencies around calls and conversion.
  • Contract details: some features ncluding call notice periods, conversion-price resets, dilution adjustments, and event-triggered puts are simplified or not yet supported.
  • Cross-currency simplification: the one-factor model omits FX volatility, stock/FX correlation, and quanto effects.
  • Numerical and data sensitivity: results depend on tree resolution, clean market histories, correct identifiers, currency conventions, and the selected risk-free curve.

References

  1. [1]

    Cox, J. C., Ross, S. A., & Rubinstein, M. (1979). “Option pricing: A simplified approach.” Journal of Financial Economics, 7(3), 229–263. DOI

  2. [2]

    Tsiveriotis, K., & Fernandes, C. (1998). “Valuing convertible bonds with credit risk.” The Journal of Fixed Income, 8(2), 95–102. DOI

  3. [3]

    Ayache, E., Forsyth, P. A., & Vetzal, K. R. (2003). “Valuation of convertible bonds with credit risk.” The Journal of Derivatives, 11(1), 9–29. DOI

  4. [4]

    Zabolotnyuk, Y., Jones, R., & Veld, C. (2010). “An empirical comparison of convertible bond valuation models.” Financial Management, 39(2), 675–706. DOI