Instantly calculate the Weighted Average Maturity (WAM) of your investment portfolio.
Enter the market value and time to maturity for up to 5 assets in your portfolio.
Asset 1
Current value of the holding
Years remaining until maturity
Asset 2
Asset 3
Asset 4 (Optional)
Asset 5 (Optional)
Weighted Average Maturity (WAM)
5.10 Years
Formula: Σ (Value × Maturity) / Total Value
$50,000
Total Portfolio Value
255,000
Total Weighted Sum ($·Years)
3
Active Assets
Portfolio Breakdown
Asset
Value ($)
Maturity (Yrs)
Weight (%)
Contribution (Yrs)
What is Calculate Weighted Maturity?
When managing a portfolio of fixed-income securities like bonds, mortgages, or loans, simply averaging the maturity dates doesn't tell the whole story. To truly understand the time horizon and interest rate risk of a portfolio, financial professionals calculate weighted maturity.
Weighted Average Maturity (WAM) is a weighted average of the time until all securities in a portfolio mature, weighted by the dollar amount invested in each security. This metric is crucial for money market funds, bond funds, and corporate treasury departments to manage liquidity and interest rate sensitivity. A higher WAM indicates a longer time until the portfolio's principal is repaid, generally implying higher sensitivity to interest rate changes.
Weighted Maturity Formula and Explanation
To calculate weighted maturity, you cannot simply take the arithmetic mean of the maturities. You must account for the size of each holding relative to the total portfolio.
Imagine an investor holds two bonds. Bond A has a value of $10,000 and matures in 2 years. Bond B has a value of $90,000 and matures in 10 years.
Total Value: $100,000
Simple Average Maturity: (2 + 10) / 2 = 6 years (This is misleading!)
Weighted Calculation:
Bond A Contribution: $10,000 × 2 = 20,000
Bond B Contribution: $90,000 × 10 = 900,000
Total Weighted Sum: 920,000
WAM: 920,000 / 100,000 = 9.2 Years
The WAM is 9.2 years, which is much closer to 10 because 90% of the money is in the 10-year bond.
Example 2: Managing Liquidity
A corporate treasurer needs to ensure cash is available in the short term. They have $1,000,000 in 30-day commercial paper and $500,000 in 5-year notes. Even though they have a long-term asset, the heavy weighting in short-term paper will pull the WAM down significantly, indicating high near-term liquidity.
How to Use This WAM Calculator
Follow these simple steps to calculate weighted maturity for your holdings:
Gather Data: You need the current market value (not face value) and the time to maturity (in years) for each asset.
Input Values: Enter the data into the "Market Value" and "Time to Maturity" fields for up to 5 assets.
Review Weights: The calculator automatically updates the "Weight" column in the summary table.
Analyze Result: Look at the highlighted "Weighted Average Maturity" figure. This is your portfolio's effective timeline.
Key Factors That Affect Weighted Maturity
Several financial dynamics influence the outcome when you calculate weighted maturity:
Portfolio Allocation: Shifting capital from short-term to long-term assets disproportionately increases WAM.
Passage of Time: As time passes, the maturity of every holding decreases, naturally reducing WAM unless new long-term assets are purchased.
Prepayments: For mortgage-backed securities, prepayments reduce the effective maturity, shortening the WAM.
Interest Rate Volatility: In high-rate environments, investors often shorten WAM to reduce duration risk.
Call Options: Callable bonds may mature earlier than their stated date if the issuer repays the debt, affecting the calculation.
Market Value Fluctuations: If long-term bonds drop in price (due to rising rates), their weight in the portfolio decreases, which can paradoxically lower the WAM slightly.
Frequently Asked Questions (FAQ)
What is the difference between Weighted Average Maturity (WAM) and Weighted Average Life (WAL)?
WAM usually considers the reset date for floating-rate notes, while WAL calculates the time until the principal is repaid. For fixed-rate bonds, they are often similar, but for mortgage securities, WAL accounts for prepayments.
Why is WAM important?
It acts as a proxy for interest rate risk (duration) and liquidity. Money market funds, for example, have strict regulatory limits on WAM (usually 60 days) to ensure safety.
Can WAM be negative?
No, time to maturity cannot be negative. If an asset has matured, its maturity is zero.
How do I convert days to years for this calculator?
Divide the number of days by 365 (or 360, depending on the convention). For example, 90 days = 90/365 ≈ 0.25 years.
Does yield affect WAM?
Not directly in the formula. However, yield affects the market price (Value), which changes the weighting of the asset in the calculation.
Should I use face value or market value?
Technically, portfolio managers use market value to reflect the current economic reality of the portfolio allocation.
Is a higher WAM better?
It depends. A higher WAM usually offers higher yields but comes with higher price volatility if interest rates rise. A lower WAM offers stability and liquidity but lower returns.
How often should I recalculate WAM?
Professional managers calculate it daily. For personal investors, recalculating monthly or whenever you rebalance is sufficient.
Related Tools and Internal Resources
Explore more financial tools to manage your investments effectively:
// Initialize standard values
window.onload = function() {
calculateWAM();
};
function calculateWAM() {
// We have 5 slots
var assets = [];
var totalValue = 0;
var totalWeightedSum = 0;
for (var i = 1; i 0 && mat >= 0) {
totalValue += val;
var weighted = val * mat;
totalWeightedSum += weighted;
assets.push({
id: i,
value: val,
maturity: mat,
weighted: weighted
});
}
}
// Avoid division by zero
var wam = 0;
if (totalValue > 0) {
wam = totalWeightedSum / totalValue;
}
// Update main results
document.getElementById('wam-result').innerHTML = wam.toFixed(2) + " Years";
document.getElementById('total-value-result').innerHTML = "$" + totalValue.toLocaleString('en-US', {minimumFractionDigits: 0, maximumFractionDigits: 0});
document.getElementById('total-weighted-sum').innerHTML = totalWeightedSum.toLocaleString('en-US', {minimumFractionDigits: 0, maximumFractionDigits: 0});
document.getElementById('asset-count').innerHTML = assets.length;
// Update Table
updateTable(assets, totalValue);
// Update Chart
updateChart(assets, totalValue);
}
function updateTable(assets, totalValue) {
var tbody = document.getElementById('breakdown-table');
tbody.innerHTML = ""; // clear current
if (assets.length === 0) {
tbody.innerHTML = "
No active assets entered
";
return;
}
for (var i = 0; i 0) {
weight = (a.value / totalValue) * 100;
}
// Contribution to WAM = (Weight/100) * Maturity
var contrib = (weight / 100) * a.maturity;
var tr = document.createElement('tr');
// Build HTML string for row
var html = "
Asset " + a.id + "
";
html += "
$" + a.value.toLocaleString() + "
";
html += "
" + a.maturity.toFixed(1) + "
";
html += "
" + weight.toFixed(1) + "%
";
html += "
" + contrib.toFixed(2) + "
";
tr.innerHTML = html;
tbody.appendChild(tr);
}
}
function updateChart(assets, totalValue) {
var svg = document.getElementById('portfolio-chart');
var legend = document.getElementById('chart-legend');
// clear existing
while (svg.firstChild) {
svg.removeChild(svg.firstChild);
}
legend.innerHTML = "";
if (totalValue <= 0 || assets.length === 0) {
// Draw empty circle
var circle = document.createElementNS("http://www.w3.org/2000/svg", "circle");
circle.setAttribute("cx", "50");
circle.setAttribute("cy", "50");
circle.setAttribute("r", "45");
circle.setAttribute("fill", "#eee");
svg.appendChild(circle);
return;
}
var cumulativePercent = 0;
var colors = ['#004a99', '#28a745', '#17a2b8', '#ffc107', '#dc3545']; // Blue, Green, Cyan, Yellow, Red
for (var i = 0; i 0.5 ? 1 : 0;
var pathData = [
"M 50 50",
"L", startX, startY,
"A 45 45 0", largeArcFlag, 1, endX, endY,
"L 50 50″,
].join(" ");
// If it's a full circle (single asset 100%)
if (assets.length === 1) {
var circle = document.createElementNS("http://www.w3.org/2000/svg", "circle");
circle.setAttribute("cx", "50");
circle.setAttribute("cy", "50");
circle.setAttribute("r", "45");
circle.setAttribute("fill", colors[i % colors.length]);
svg.appendChild(circle);
} else {
var path = document.createElementNS("http://www.w3.org/2000/svg", "path");
path.setAttribute("d", pathData);
path.setAttribute("fill", colors[i % colors.length]);
path.setAttribute("stroke", "white");
path.setAttribute("stroke-width", "1");
svg.appendChild(path);
}
// Legend item
var span = document.createElement("span");
span.innerHTML = "Asset " + a.id;
span.style.color = colors[i % colors.length];
span.style.marginRight = "10px";
span.style.fontWeight = "bold";
legend.appendChild(span);
}
}
function getCoordinatesForPercent(percent) {
var x = Math.cos(2 * Math.PI * percent) * 45; // r=45
var y = Math.sin(2 * Math.PI * percent) * 45;
// SVG coordinates: y is down, and we want to start from top (rotate -90deg or swap sin/cos logic)
// Standard Math uses 0 at right. We want 0 at top.
// x = 50 + r * cos(theta). theta 0 is right. Top is -PI/2.
// Easier:
// x = 50 + 45 * cos(2*PI*percent – PI/2)
// y = 50 + 45 * sin(2*PI*percent – PI/2)
var adjustedX = 50 + 45 * Math.cos(2 * Math.PI * percent – Math.PI / 2);
var adjustedY = 50 + 45 * Math.sin(2 * Math.PI * percent – Math.PI / 2);
return { x: adjustedX, y: adjustedY };
}
function resetCalculator() {
document.getElementById('val1').value = "10000";
document.getElementById('mat1').value = "5.5";
document.getElementById('val2').value = "25000";
document.getElementById('mat2').value = "2.0";
document.getElementById('val3').value = "15000";
document.getElementById('mat3').value = "10.0";
document.getElementById('val4').value = "";
document.getElementById('mat4').value = "";
document.getElementById('val5').value = "";
document.getElementById('mat5').value = "";
calculateWAM();
}
function copyResults() {
var wam = document.getElementById('wam-result').innerText;
var total = document.getElementById('total-value-result').innerText;
var text = "Weighted Maturity Calculation:\n";
text += "WAM: " + wam + "\n";
text += "Total Portfolio Value: " + total + "\n";
text += "Generated by Weighted Maturity Calculator";
var tempInput = document.createElement("textarea");
tempInput.value = text;
document.body.appendChild(tempInput);
tempInput.select();
document.execCommand("copy");
document.body.removeChild(tempInput);
var btn = document.querySelector('.btn-copy');
var originalText = btn.innerText;
btn.innerText = "Copied!";
setTimeout(function(){
btn.innerText = originalText;
}, 2000);
}