How Strata calculates every metric — and where more than one method exists, which we use and why. Click an entry to expand.
How much a bond's price moves when rates move. Four measures, each handling a case the one below it can't.
Each rung doesn't replace the one below — it removes an assumption: Macaulay→Modified drops the time-units, Modified→Effective drops fixed-cashflows, Effective→Key-rate drops the parallel-shift. You climb only as far as the bond demands.
Strata quotes Effective Duration for any bond — it's honest whether or not there's optionality — and Key-Rate Duration for curve risk. Modified duration is computed via a 1bp finite difference; Macaulay and modified are the rungs you climb to understand the number, but a vanilla approximation isn't what you'd quote on a callable.
The curvature of the price-yield relationship — the second-order correction duration alone misses on large yield moves.
Strata computes convexity by central finite difference at the same 1bp bump it uses for duration: . For a vanilla bond convexity is positive, so the duration estimate always under-states the gain on a rate cut and over-states the loss on a rise — convexity adds the missing curvature back.
The change in a position's value for a 1bp move in yield — duration translated from a percentage into hard currency.
Strata reports DV01 as a positive magnitude — the size of the P&L for a 1bp move — and applies the direction by convention at use: rising yields are a loss for a long position, a gain for a short. It is derived from the same modified duration Strata computes via a 1bp finite difference, so the number is consistent with the duration shown alongside it.
The change in a position's value for a 1bp move in credit spread, with the benchmark curve held still — DV01's credit-side twin.
Strata computes CS01 only in Curve+Spread pricing mode — the only mode where a credit spread is a separate, bumpable input — as a one-sided difference: re-price with the spread widened 1bp, holding the UST benchmark fixed. This isolates credit-specific risk from rate risk, so a desk can hedge the two legs independently.
How much extra yield a bond pays over a risk-free benchmark. Four measures, each handling a case the one below it can't.
Strata computes all four and shows them together. For an option-free bond you'd quote the Z-Spread; for a callable/putable bond the OAS (the engine is BDT for Student/API tiers, Hull-White 1F for Professional). G- and I-Spread are the single-point reads you climb through to understand them.
Three ways to discount a bond's cashflows to a price. They differ by which inputs you have — a single yield, a full curve, or a curve plus a credit spread.
| Approach | How it builds the distribution | Use when |
|---|---|---|
| All-in YTM◢ default | Discount every cashflow at one yield, compounding times a year — the quote-screen number when all you have is a single YTM. | you have (or are solving for) one yield-to-maturity and want the quote-screen price. |
| Pure Curve | Discount each cashflow at its own continuously-compounded zero rate off the curve — the term structure's shape is now in the price. | you have a full zero curve and want the curve-consistent, credit-free benchmark value. |
| Curve+Spread | Add a credit spread to the interpolated benchmark yield, then discount — separating rate risk (the curve) from credit risk (the spread). | you have a benchmark curve and a credit spread, and want to bump rates and credit independently (the mode CS01 needs). |
Every mode outputs the dirty (full) price per 100 par — the present value of every coupon and principal cashflow. The clean (quoted) price is this minus accrued interest.
All three discount the same cashflows — they differ only in the discount rate they build: one number, a whole curve, or a curve plus a spread. Curve+Spread is the only mode that splits rate risk from credit risk, which is why DV01 and CS01 live there.
Strata defaults to All-in YTM because a single yield is the input you most often have from a quote screen, and it's the price the YTM solver inverts. It switches to Curve+Spread the moment you supply a benchmark curve and a credit spread (so it can show DV01/CS01 separately), and to Pure Curve when you want the credit-free, curve-consistent benchmark value.
The inverse of pricing: find the single yield that discounts a bond's cashflows back to its observed price.
Strata solves YTM by bisection with bracket expansion, not Newton-Raphson: it brackets the yield in , doubles the upper bound up to 8 times if the root sits higher, then halves the interval to a price tolerance (max 80 iterations). Bisection is chosen for robustness — it can't diverge or overshoot the way a derivative-based method can on a badly-conditioned bond.
Four rules for turning a span of calendar dates into a year fraction. The choice is market convention, and it changes accrued interest and the discount-time of every cashflow.
| Approach | How it builds the distribution | Use when |
|---|---|---|
| ACT/365 Fixed◢ default | Count the real days, always divide by 365 — simple and predictable, ignoring leap years entirely. | pricing in Strata, UK gilts, and several Asian markets — Strata's engine default for all time fractions. |
| 30/360 US | Pretend every month has 30 days and every year 360 — so each coupon period is exactly equal, the US corporate-bond convention. | quoting US corporate bonds, where equal idealised periods are the market standard. |
| ACT/ACT ISDA | Count real days, split at each year boundary, and divide each slice by that year's own length — the most calendar-accurate rule. | pricing government securities, where calendar-exact accrual is the convention. |
| ACT/360 | Count real days, divide by 360 — the money-market convention that makes a year worth slightly more than 1.0. | money-market instruments and floating-rate notes, where ACT/360 is the standard. |
Each convention is a numerator (real days, or idealised 30-day months) over a denominator (360, 365 or the year's own length). The denominator is the quirk: 360 inflates, fixed-365 ignores leap years, ACT/ACT alone matches the calendar.
The numerator (real vs idealised days) and the denominator (360, fixed 365, or the calendar year) together set the year fraction — so the same dates accrue different interest under each convention. ACT/360 inflates it, 30/360 idealises it, ACT/ACT alone tracks the real calendar.
Strata's pricing engine uses ACT/365 Fixed for every time fraction — it's simple, predictable and leap-year-stable, which keeps the discount times deterministic across the curve. The other three are offered because accrued interest must be quoted in the market's convention for the instrument (30/360 for US corporates, ACT/ACT for governments, ACT/360 for money markets).
The slice of the next coupon the seller has earned but not yet been paid — added to the quoted price to get the cash that actually settles.
Strata accrues pro-rata within the coupon period: the period coupon scaled by the fraction of the period elapsed at settlement. Both year fractions come from the bond's day-count convention, so changing the convention changes accrued interest — and the buyer always pays the seller this accrued amount on top of the clean price.
The total return from holding a bond to a future date, broken into four additive parts: carry, roll-down, the price move from a yield change, and reinvestment income. All four share one denominator so they sum to the whole.
Strata decomposes horizon return into the four additive legs above and prices the horizon by discounting the remaining cashflows at the horizon yield: — the same pricing formula as the initial price, but settled at the horizon date so accrued interest sets the clean/dirty split. Every leg is divided by the **initial dirty price ** (per 100), the choice that makes the four parts sum exactly to the total. The default reinvestment rate is the current YTM; in Curve+Spread mode the rate and spread changes are additive.
What an option is worth, and how that worth moves. One closed-form for European payoffs, one tree for early exercise, and the Greeks and implied vol read straight off the model.
| Approach | How it builds the distribution | Use when |
|---|---|---|
| Black-Scholes-Merton◢ default | A closed-form price for a European option on a dividend-paying asset — instant, exact, and the reference every other method is checked against. | European payoffs and any time you need an instant analytic price or to seed the Greeks / implied vol. |
| CRR Binomial Tree◢ default | Discretise the price path into an up-down tree and price by backward induction, testing early exercise at every node — so American options are valued honestly. | American or Bermudan exercise, or whenever early-exercise value matters (e.g. deep-ITM puts, dividend-paying calls). |
| └Greeks◢ default | The partial derivatives of the BSM price — delta, gamma, vega, theta, rho — that tell you how the value moves and how to hedge it. | hedging or risk-managing an options book — sizing the delta hedge, watching gamma near expiry, or pricing a vol view through vega. |
| └Implied Volatility◢ default | Run BSM backwards: solve, by Newton-Raphson on vega, for the single that reprices the option to its market price. | reading the market's volatility view out of a quoted price, or building the smile / surface from a chain of quotes. |
The fair value of the option from the model — call or put, European (BSM) or American (tree).
The model run in reverse: the volatility that reprices the option to the market — a measure read off any price, not a separate model.
The two pricing rows aren't rivals: the CRR tree **converges to BSM as the step count **. So for a European option they agree, and the tree only earns its cost by pricing the early exercise BSM can't see.
Strata prices European options analytically with BSM (instant, exact) and American options on a CRR tree (early exercise per node), then reports the Greeks and implied vol off the BSM engine. The tree's step count is set high enough internally for convergence; the 1–3-step view is for teaching only.
Lock in a price, a rate, or a whole stream of rates. Three instruments, each one a longer version of the no-arbitrage forward below it.
There's only one idea here, stretched across more periods: replicate the payoff with cash and the underlying, and no-arbitrage pins the price. A swap is just a strip of forwards — which is why the same curve prices all three.
Strata's headline linear-derivatives output is the par swap rate (the most-asked desk number), with forward and FRA pricing as the rungs you climb to understand it. The swap uses a single bootstrapped SOFR zero curve to both discount and imply the floating leg ( at each reset), with continuous compounding and stylised period times.
The price you knock off an OTC derivative for the chance your counterparty defaults (CVA), plus the symmetric credit for your own (DVA). BCVA is the net.
Strata reports a screening-grade BCVA: expected exposure as a convex DV01 decay (peaks mid-life), the exposure integral discretised over left-edge steps, hazard rates backed out from each party's spread, and (not minus). It is an indicative number, not a desk's IMM model.
The blended after-tax cost of a firm's capital, the discount rate for unlevered free cash flow. One accepted formula; the lesson is how you source each input.
Strata computes one WACC: market-value-weighted, four-component CAPM cost of equity, and a pre-tax cost of debt implied from the income statement (not a yield-to-maturity on outstanding bonds). When only an unlevered industry-median beta is available, it is re-levered via Hamada to the firm's own before entering CAPM. The tax shield is applied once, in the term.
Value a firm as the present value of the cash it will generate. Forecast the flows, discount them, and bridge to a per-share price.
Two-stage to three-stage removes the growth cliff; reverse-DCF inverts the same machine to read the market's expectation; FCFE re-routes it down the equity side at . Same discounting engine, four lenses on it.
Strata defaults to the two-stage DCF (explicit FCF forecast + Gordon terminal value, mid-year convention optional) and bridges to a per-share price. Three-stage is offered for firms with a long, visible glide path; reverse-DCF and FCFE are the inversion and equity-side cuts you switch to when the question changes.
Value a share as the present value of its future dividends. Two rungs, differing only in how the dividend growth rate is allowed to change.
Both rungs are the same perpetuity: the H-model is Gordon-on- plus one extra term for a linearly-fading head start. When the premium vanishes and the H-model collapses back to Gordon.
Strata defaults to the Gordon Growth model for steady-state dividend payers, it is the cleanest single-input read. The H-model is offered for firms in transition (a high payout growth that is visibly maturing), where a single constant would mis-state value.
Value a firm by what the market pays for its peers. Apply a peer-group multiple to the firm's own fundamental, several multiples, one implied value each.
| Approach | How it builds the distribution | Use when |
|---|---|---|
| P/E◢ default | Apply the peer price-to-earnings multiple straight to net income, an equity-level multiple, so no debt bridge is needed. | comparing profitable firms with similar capital structures and clean earnings. |
| P/S | Price-to-sales, anchored on revenue, which stays positive and is harder to manipulate than earnings. | the firm is pre-profit or earnings are too noisy to trust (early-stage, cyclical trough). |
| EV/EBITDA | An enterprise-level multiple on pre-financing, pre-tax operating cash, so it is capital-structure-neutral, then bridge EV to equity. | comparing firms with different leverage or tax regimes, the cross-capital-structure default. |
| EV/FCF | An enterprise multiple on actual free cash flow, the cash left after capex, which EV/EBITDA overlooks. | capex intensity differs across the peer set and cash conversion is the real question. |
Each multiple yields one implied price; the football-field chart shows the range (min / median / mean / max) across the peer set rather than a single point estimate.
Comps measures relative value, what the firm is worth if peers are fairly priced, while DCF measures intrinsic value from the firm's own cash flows. When a whole sector is mispriced, comps inherits the error; the two methods are a cross-check, not substitutes.
Strata leads with P/E for profitable firms, the most quoted multiple, and triangulates with P/S, EV/EBITDA and EV/FCF so leverage, profitability and capex intensity each get a vote. The football-field chart presents the spread of implied values, not a false-precision single number.
The lowest-variance portfolio for each level of expected return. One quadratic program, swept across a target return to trace the curve.
Strata solves the exact convex QP with a primal active-set method (not a grid search), long-only box constraints () on the public endpoint, then sweeps from the global minimum-variance (GMV) portfolio to the max feasible return. The tangency portfolio is the frontier point with the steepest line from ; the capital market line is that line extended through it.
How much a whole portfolio's return wobbles. It's not the average of each asset's risk — the cross-terms between assets are where diversification lives.
Strata computes the full quadratic form from the sample covariance matrix — every pairwise term is included, so the diversification benefit from imperfectly-correlated assets is captured exactly. Volatility is then the square root, annualised consistently with the covariance inputs.
The table of how every pair of assets moves together — the raw material that portfolio variance and the efficient frontier both consume.
Strata uses the plain sample covariance with the (Bessel-corrected) denominator over the lookback window — no shrinkage, no factor model. It's the transparent estimator: every entry is computable by hand from the return series, which matches Strata's self-compute positioning. Downstream, the efficient-frontier QP requires this matrix to be positive definite.
Return earned per unit of risk taken. One family, but each ratio divides by a different risk — and that choice decides which risk it rewards.
| Approach | How it builds the distribution | Use when |
|---|---|---|
| Sharpe◢ default | Excess return over total volatility — reward per unit of all variability, up or down. | the return stream is roughly symmetric and you want the one universal benchmark. |
| Sortino◢ default | Excess return over downside deviation only — upside swings stop counting as risk. | returns are skewed and you only care about volatility that loses money. |
| Treynor | Excess return over systematic risk (beta) — reward per unit of market exposure, ignoring diversifiable risk. | the portfolio is a diversified sleeve of a larger book, so only market risk is priced. |
| Information Ratio | Active return over tracking error — skill per unit of deviation from the benchmark. | the mandate is to beat a benchmark and active risk is the budget that matters. |
| Jensen's Alpha | Return above what CAPM predicts for the portfolio's beta — value added net of market exposure. | you want the absolute outperformance attributable to skill rather than a ranking ratio. |
| Calmar | Return over the worst drawdown — reward per unit of the deepest pain an investor actually felt. | capital-preservation matters and the path of losses, not just their variance, is the risk. |
| └M² (Modigliani) | Sharpe restated in return units — what the portfolio would have earned levered to the benchmark's volatility . | you need Sharpe expressed as a return an investor can compare to the benchmark directly. |
Every member is the same shape — an excess return over a denominator. The denominator is the whole lesson: it picks which risk gets rewarded.
Each ratio is excess return over a different risk — and the denominator is the opinion. Total vol (Sharpe) treats up and down alike; downside deviation (Sortino) forgives upside; beta (Treynor) prices only market risk; tracking error (Information) prices only benchmark deviation; max drawdown (Calmar) prices the worst path. Pick the denominator that matches the risk you actually fear.
Strata leads with Sharpe (the universal cross-comparison) and Sortino (its skew-aware twin), then shows Treynor, Information Ratio, Jensen's alpha and Calmar alongside so the same stream can be judged on systematic, active and drawdown risk. M² is reported as Sharpe in return units. No single ratio is right — that's why it's a family, not one number.
The loss not exceeded at a confidence level over a horizon. Several ways to estimate the distribution, two ways to measure the tail.
| Approach | How it builds the distribution | Use when |
|---|---|---|
| Parametric | Assume returns are normal; read the loss straight off the quantile. | fast checks on roughly linear, roughly normal books. |
| └Cornish-Fisher | Bend the normal quantile for skew and excess kurtosis — fat tails without a full simulation. | a cheap fat-tailed cross-check on the parametric number. |
| Historical◢ default | Rank the realised outcomes and take the empirical percentile — no distribution assumed. | you have a clean lookback window and non-linear payoffs. |
| Monte-Carlo◢ default | Simulate correlated forward paths (GBM + Cholesky) and take the percentile of terminal values. | forward-looking paths or path-dependent positions. |
A threshold: losses won't exceed this of the time. Silent on how bad the other gets.
The tail average — mean loss beyond VaR, always VaR. A measure, not a method: compute it on any row.
VaR is not sub-additive — a diversified book can post a higher VaR than the sum of its parts, which is both wrong and gameable. ES is coherent (sub-additive), which is why Basel/FRTB moved the trading book to Expected Shortfall at 97.5%.
Strata computes Historical + Monte-Carlo (one grounded in data, one in dynamics), each reported with ES alongside VaR. Cornish-Fisher is a fast fat-tailed cross-check; plain parametric is taught, then retired. No single row wins — that's why it's a grid.
Roll the portfolio forward thousands of times along random-but-realistic paths, then read the distribution of outcomes. The engine behind forward-looking VaR and projection fans.
Strata models each asset as geometric Brownian motion (log-normal, the Black-Scholes assumption) and injects cross-asset correlation through the Cholesky factor of the covariance matrix: independent normals become correlated shocks . Monthly time steps keep it fast enough for the live VaR endpoint (capped at 5,000 sims on the public API). A tiny ridge is added before factoring for numerical stability.
How a per-holding number becomes a portfolio number: weight each holding by its market value. Bigger positions pull the average toward them.
Strata weights by market value in the display currency — every holding is converted via the FX cross-rate first, then weighted, so a USD and a EUR position are compared on one basis. This is the right roll-up for linear, value-additive metrics (duration, yield); metrics that aren't linear in value (e.g. volatility, which needs the covariance matrix) are computed at the portfolio level instead, not weighted.
Get the price of one currency in another when every quote is against a common base. Go through the base: divide out the source, multiply in the target.
Strata holds every rate as units per 1 USD and triangulates: is (equivalently, USD-out then target-in). ECB is the primary source — EUR-based quotes are re-expressed onto the USD base on ingest. Every portfolio monetary calc routes through this so a multi-currency book is valued on one consistent basis.
When a bond has no usable price history, estimate its daily return from carry plus a duration-scaled move in the matched Treasury yield. A first-order approximation: it sees rates, not credit.
Strata picks the benchmark UST by duration — ^IRX (3M), ^FVX (5Y), ^TNX (10Y), ^TYX (30Y) — applies the bond's modified duration to that day's yield change, and adds the daily carry . The credit spread is held constant, so this is a rates-only proxy: it fills the return series so portfolio analytics (covariance, VaR, Monte-Carlo) can run when no clean price history exists.
Estimate the P&L hit from a parallel rate or spread shock across the book using duration. A fast first-order read — the same sensitivity that DV01 and duration express, applied as a finite shock.
Strata applies the book's modified duration to a user-set parallel shock to get a quick P&L estimate across all rate-sensitive holdings. This is the same first-order sensitivity as DV01 and duration, just expressed as a finite shock rather than a per-1bp or per-1% rate: . Use it for a fast scan; for an exact figure on large moves, re-price (the duration measures already cross-link here).
External data feeds and refresh schedules
US Treasury par yields for benchmark pricing
Foreign exchange rates for currency conversion
Stock prices, fundamentals, and historical data
Standardised financial statement data sourced from SEC XBRL inline filings (10-K and 10-Q)
US macroeconomic and rates data from the St. Louis Federal Reserve
Annual datasets from Prof. Aswath Damodaran (NYU Stern) used for market-implied equity risk premium, industry betas, and default spreads
Project Strata is for educational purposes. Calculations are illustrative and should not be used for actual trading decisions.