← Quantery Blog

Gross debt vs net debt: how leverage reads on a screen

August 30, 2026 · 10 min readfundamentalseducation

Gross debt is everything a company has borrowed. Net debt is that number minus the cash sitting in the bank, on the theory that some of the cash could go straight back to the lenders tomorrow morning. The distance between the two is a judgment about whether that cash is free to leave.

A screen reads leverage two ways, and they answer different questions. Debt over assets asks how much of the balance sheet the creditors have a claim on. Net debt over EBITDA asks roughly how many years of operating earnings it would take to clear the borrowings. Neither number is a verdict on a company. Both can be checked against a filing in about a minute, which is why a rule can be built on them at all.

This is the next stop in a series building up the vocabulary our theses use. It leans on two earlier pieces: how to read a balance sheet for the identity that makes total liabilities recoverable, and which numbers a thesis can trust for why year-over-year comparisons line up the same fiscal quarter.

Where debt actually sits in the filings

Debt is money borrowed under a contract with a repayment date and a rate: bonds, notes, term loans, a drawn revolver, finance leases. The balance sheet splits it by when it comes due. Short-term borrowings and the current portion of long-term debt sit up in current liabilities; the remainder sits below as long-term debt. Add the two and you have total debt, which is what the lake stores as total_debt and what the Piotroski F-Score template's leverage signal reads.

Total liabilities is a bigger number and a different idea. Accounts payable, accrued wages, deferred revenue, deferred taxes: every one of them is a claim on the company, and none of them is a borrowing. Your paper supplier can't accelerate the balance and seize the warehouse because a covenant tripped. Treating the whole liability side as debt overstates leverage for any business that runs on trade credit, which is most of them.

Two things worth knowing before you build a rule on the debt line. Operating leases now sit on the balance sheet as lease liabilities, and a lease is a fixed obligation with a landlord's name on it, but it isn't inside total_debt. Underfunded pensions are the same story. For a retailer paying rent on every store it operates, the borrowings alone understate what has to be paid every month whatever sales do.

Net debt, and when subtracting the cash is fair

The definition is one line:

net debt = total debt - cash and equivalents

When the result comes out below zero, the company holds more cash than borrowings. That's the net_cash feature in the Buffett Quality Value template, and it takes the top mark on that template's safety criterion without any further arithmetic.

The subtraction assumes the cash could actually go to lenders. Situations where it can't:

The arithmetic knows none of this. total_debt - cash computes cheerfully in every one of those cases. So when a name clears your leverage rule on the strength of a big cash pile, that's the moment to open the filing and read what the cash is doing there.

What leverage did to a profitable retailer

In June 2005, shareholders of Toys R Us approved a buyout by KKR, Bain Capital and Vornado Realty Trust at $26.75 a share, a deal valued at $6.6 billion. It kept public debt outstanding afterward, so it kept reporting, and the numbers stayed in plain view.

Take fiscal 2016, the year that ended 28 January 2017. From the company's own results release:

And the balance sheet carried in the same release: cash and cash equivalents of $566 million, current portion of long-term debt of $119 million, long-term debt of $4,642 million, total assets of $6,908 million, and total stockholders' deficit of $(1,292) million.

Run the two ratios. Total debt is $119 million plus $4,642 million, or $4,761 million, which is 69 percent of total assets. Net debt is $4,761 million minus $566 million, or $4,195 million, about 5.3 times that year's adjusted EBITDA.

Then look at the income statement line that turns those ratios into a lived experience. Operating earnings were $460 million. Interest expense was $457 million. The stores made money that year. After the lenders were paid, three million dollars of it was left for everything else: stores, e-commerce, price cuts, the balance sheet. Tax and the rest of the below-the-line items took it from there to the $36 million loss. That's what a senior claim means with the numbers attached. Leverage decides who gets the cash flows first, and the stockholders' deficit says the owners' residual had been gone for a while.

None of that reading needs hindsight. Every number above came from the company's own report on that fiscal year, published while the stores were still trading. Toys R Us filed for Chapter 11 on 18 September 2017, carrying about $5 billion of debt and roughly $400 million a year in debt service.

The two ratios a thesis uses

The proportion view is Piotroski's, and it's stricter than it looks:

lev:       if(assets > 0, newest(total_debt) / assets, null)
lev_prior: if(assets_prior > 0, lag(total_debt, 4) / assets_prior, null)
f_lev:     lev < lev_prior or (lev == 0 and lev_prior == 0)

The signal scores the change, not the level. A company that reduced its debt-to-assets ratio over the year earns the point, and the paper's footnote hands it to a company that carried no borrowings in either year. lag(total_debt, 4) reaches back four quarterly filings to the same fiscal quarter, and assets is rebuilt from that same filing's liabilities plus equity. A missing line item returns null, the comparison comes out false, and the point goes unearned.

The multiple view is the one lenders talk in, and Buffett Quality Value computes it with a guard:

net_cash: latest(total_debt) - cash < 0
net_debt_ebitda: coalesce(latest(net_debt_to_ebitda),
                          if(ebitda_ttm > 0, (latest(total_debt) - cash) / ebitda_ttm, null),
                          if(net_cash, -1, null))

The ebitda_ttm > 0 test in the middle exists because a company with real borrowings and negative EBITDA divides out to a negative ratio, and a negative ratio sorts right next to the genuine net-cash names unless something stops it. The template's safety criterion then pays 2 for net cash, 0 with a no_leverage_data flag when the ratio can't be computed, 0 with a negative_ebitda_leverage flag for the money-loser case, and 1 for a ratio inside the nde_max parameter. What EBITDA does and doesn't measure gets its own article later in this series.

The same subtraction turns up in a third place. The Greenblatt Magic Formula builds enterprise value as market_cap + debt - cash, which is market cap plus net debt: the price of the equity plus the borrowings you inherit, less the cash you get handed at the door.

Writing your own leverage rule

Both views in one criterion. The shape below is illustrative and the bundled templates are the reference for exact fields:

# "Leverage you could live through" - illustrative
params:
  nde_max:      2.5         # net debt at most 2.5x EBITDA
  da_max:       0.45        # borrowings at most 45% of the balance sheet
  coverage_min: 4.0         # operating income covers interest 4x over

features:
  debt:     newest(total_debt)
  cash:     newest(cash)
  assets:   newest(total_liabilities) + newest(total_equity)
  ebitda:   ttm(ebitda)
  ebit:     ttm(operating_income)
  interest: ttm(interest_expense)
  net_debt: debt - cash
  net_cash: net_debt < 0
  da:       if(assets > 0, debt / assets, null)
  nde:      if(ebitda > 0, net_debt / ebitda, null)
  coverage: if(interest > 0, ebit / interest, null)

criteria:
  leverage:
    rules:
      - { when: "net_cash", score: 2 }
      - { when: "is_null(nde) or is_null(da)", score: 0, flag: no_leverage_data }
      - { when: "nde <= $nde_max and da <= $da_max", score: 2 }
      - { when: "nde <= $nde_max", score: 1 }
      - { else: 0 }
  can_pay_the_interest:
    rules:
      - { when: "interest <= 0", score: 2, flag: pays_no_interest }
      - { when: "is_null(coverage)", score: 0, flag: no_coverage }
      - { when: "coverage >= $coverage_min", score: 2 }
      - { when: "coverage >= 1.5", score: 1 }
      - { else: 0 }

gate:
  mode: strict              # every criterion has to score at least 1

All three balance-sheet reads use newest(), so debt, cash and the assets identity come from one filing. Mixing periods there builds a balance sheet that never existed.

coverage is the Toys R Us line written as a rule: trailing operating income over trailing interest expense. That company's fiscal 2016 came in a hair over 1.0, and any threshold worth setting sits well above it. The first branch exists because a company with no borrowings pays no interest, and a division that can't happen shouldn't cost it the points.

Keeping both ratios is the point of the rule. A company can pass on net debt and fail on debt over assets, which usually means heavy borrowings offset by a cash pile, and now you know to go read what the cash is for. The reverse pattern, a light balance sheet with thin earnings, fails the multiple while the proportion looks fine. Those disagreements are the names worth opening a filing on.

What the ratios can't tell you

The amount, without a calendar. Net debt at 5x maturing in eight years at a fixed coupon is a different animal from 3x maturing next spring at a floating rate. The vocabulary carries interest_expense, so the cost of the debt is scoreable. The maturity schedule and the coupons live in the footnotes, and no field carries those.

Covenants. A leverage test in a credit agreement can force a company to sell assets or raise equity at the worst possible moment. That obligation is disclosed in prose, and no field on a screen carries it either.

Capital intensity. EBITDA ignores capex and working capital, so the multiple flatters a business that has to spend heavily to stand still. Pair it with the number that's hardest to fake before you trust it.

What leverage is normal here. A regulated utility with contracted cash flows carries debt that would sink a chip designer on a three-year product cycle. It's also why the bundled templates exclude Financial Services and Real Estate: borrowing is the business model there, and these ratios stop meaning what the signals assume.

Leverage is one of the few things on a balance sheet that stays close to a fact. The amount was borrowed, the interest is contractual, and both numbers are printed in a document anyone can open. Write the threshold you can defend, run it, and find out whether it would have kept you out of trouble by testing it walk-forward. The DSL reference has the full field vocabulary when you want to change the thresholds to your own.

Next in the series: share count and dilution, and why per-share numbers drift when the business hasn't moved.

Want to try this on your own rules? Quantery is free for 14 days: the full app, no card required.

← All articles