Inventory has no age Fashion & apparel · 19 audited filings × inventory valuation allowance · public-data analysis
I went looking for something else. Fashion runs on returns, so I expected to find them in the filings, and they are there — the portion a company expects back is held out of revenue and parked as a refund liability. But once I widened the sample, only two of fifteen brands broke that account out on the balance sheet. What every filing did have, in the same place, was a different line.
All fifteen apparel brands in the cohort had flagged inventory valuation as a key audit matter. That is the section where the auditor names, in their own words, the thing they judged most significant in that year's audit. Fifteen auditors, across different firms, pointed at the same line.
01Fifteen auditors, one line
Korea's DART registry lists 38,989 companies subject to external audit. Filter to apparel, leather and footwear manufacturing plus textile and clothing wholesale and retail (KSIC 14, 15, 4641, 4741) and 651 remain. I kept only the companies whose figures I could cross-check against DART's structured financial API, which left 19, all read on their FY2025 consolidated statements: 15 consumer brands, 3 export OEM vendors that manufacture to order, and 1 platform that mixes own-label goods with resale.
| Type | n | Inventory valuation as a key audit matter |
|---|---|---|
| Consumer brands | 15 | 15 / 15 |
| Export OEMs | 3 | 0 / 3 |
| Platform | 1 | 0 / 1 |
These companies make the same clothes. The risk the auditors singled out sits only on the brand side, and the reason is structural. An OEM builds against an order, so the buyer exists before the garment does. A brand decides what will sell, builds it, and finds out whether the decision was right when the season ends.
The auditors say as much in their own headings. One titles the matter "valuation of net realisable value of seasonal fashion apparel inventory." Another writes that "given the nature of the apparel industry," selling prices and direct costs move enough that net realisable value may fall below cost. They name the industry to explain the risk.
Figure 1 · Days of inventory by business model. ● = median. Brand stock is made before the buyer exists
02Brand inventory sits for ten months
Days inventory outstanding — inventory divided by cost of sales, times 365 — is how long the current stock would take to clear at the current rate of sale.
| Brands (15) | Export OEMs (3) | |
|---|---|---|
| Median days inventory | 299.3 | 67.7 |
| Range | 94.5 – 374.6 | 67.4 – 151.7 |
| Median inventory / revenue | 30.05% | 16.35% |
| Median cost-of-sales ratio | 41.22% | 86.54% |
| Median operating margin | 1.46% | 4.30% |
Brand inventory sits 4.4 times longer than OEM inventory, and the money tied up in it equals 30% of a year's revenue.
Days are an awkward unit for a business that sells in seasons. A season is roughly a quarter, so dividing days inventory by 91.25 gives seasons of stock on hand. The brand median is 3.28 seasons; the OEM median is 0.74. Put plainly, a brand is carrying two and a half seasons beyond the one it is currently selling.
03The write-down is larger than the profit
So far this is a balance-sheet story. What it costs sits elsewhere in the same report. When the price a garment can fetch falls below what it cost, the difference is booked as an inventory valuation allowance and charged to expense.
Add the fifteen brands together and FY2025 revenue is ₩6.80tn with operating profit of ₩212.7bn. The inventory write-down they booked that same year is ₩283.5bn.
Figure 2 · 15 brands combined: one year's operating profit against the inventory write-down booked that year. The write-down is larger
In one year these brands wrote down more inventory than they earned in operating profit. 133% of it.
Company by company it points the same way. Against revenue, the write-down runs at a median of 3.05% while operating margin runs at 1.46% — what was written off is 2.1× what was kept. Among the eight companies with positive operating profit, the write-down is a median 64% of it, and for three of them it is larger than the profit itself.
Turned around, that is leverage. Cutting the write-down by 10% raises operating profit by a median 6%. That is the same size as selling 6% more — except this comes out of goods already bought.
The route to a write-down is usually a markdown, and markdowns have a line fixed by arithmetic. If cost is c of the full retail price, then the moment the price received falls below c, the garment stops covering its own cost. The deepest discount that still recovers cost is 1 − c. At the cohort's median cost ratio of 41.22%, that line is 58.8%.
I have watched an end-of-season rack reach 70% off. The buy had gone wrong, and that same year the brand opened its own online store and pushed the same goods through it as well. That adds a route to market; it does not restore the price the goods can fetch. (An observation, not a filing — so no figures are attached to this paragraph.) Take that 70% markdown. It recovers 30% of the full price, which is 11.2 points short of a 41.22% cost ratio; every unit sold loses 27% of its cost. Of the fifteen brands, one is still above cost at that discount — the one whose cost ratio is 28.3%.
A 70%-off rack is not an event that clears inventory. It is where a loss already fixed gets converted into cash. The loss was not created that week either. It was set when someone decided what to buy and how much, and the rack is only where it is finally recognised. The longer that gap, the deeper the cut.
So what should you watch to close the gap? From outside there is exactly one gauge for inventory: days of inventory. The first question is whether it agrees with what the companies themselves booked.
04How long it sat and how far it was written down have nothing to do with each other
Stock that lingers loses value, and accounting handles that through a valuation allowance: the amount by which net realisable value has fallen below cost. Expressed against gross cost, I will call it the write-down rate.
You would expect stock that sits longer to be written down harder. In this cohort it isn't.
Figure 3 · Days of inventory × write-down rate, 14 brands. Longer should mean deeper, but the rank correlation is +0.002. Dashed = Companies I and F — 26 days apart, 11× the write-down
How long stock sat and how far it was written down are unrelated. The rank correlation is +0.002.
| Days inventory ↔ write-down rate, Pearson | +0.052 |
| Spearman rank correlation | +0.002 |
| n | 14 |
| Spread in days inventory (max ÷ min) | 3.96× |
| Spread in write-down rate (max ÷ min) | 11.0× |
A rank correlation of +0.002 means the ordering by how long stock sits and the ordering by how hard it is written down are unrelated. The individual pairs make it concrete.
| Company | Days inventory | Write-down rate |
|---|---|---|
| A | 374.6 | 15.42% |
| I | 294.3 | 2.76% |
| F | 320.1 | 30.32% |
| N | 160.7 | 16.97% |
| O | 94.5 | 8.55% |
Companies I and F are 26 days apart on how long their stock sits and 11 times apart on how much of it they have written down. Company N holds stock 66 days longer than Company O, yet O — the fastest-turning company in the cohort — carries roughly half N's write-down rate.
None of this means the companies are estimating badly. Inside each company there is an ageing schedule, and the auditors recompute it. One key-audit-matter procedure states that the auditor "recalculated the item-by-item inventory valuation allowance presented by the company." Item-level counting is happening inside.
What fails is not the estimate. It is the only measure available from outside.
05Days inventory cannot measure age
Days inventory is one total divided by another. The numerator holds last week's arrivals and three-year-old stock in the same figure, and the division does not distinguish them.
Consider a company whose new arrivals sell through quickly while older goods sit. The average lands in the middle — but the risk of losing value sits entirely on the older half. Now consider a company whose entire inventory turns slowly and evenly. Same average, far less risk. One number, two very different situations.
So the mismatch is not strange. The write-down rate is set by people who can see the age; days inventory is a measure that cannot. The two disagreeing is what you should expect, and the zero correlation measures the failure of the metric, not the failure of the companies.
06The filing already counts age — for a different asset
Here is the part that stopped me. Somewhere in the same annual report, there is already an asset whose age must be broken into brackets. It is trade receivables.
The form requires a table of receivables by elapsed time — under 6 months, 6 months to 1 year, 1 to 3 years, over 3 years — with amounts and percentage weights. 14 of the 15 brands filed it.
Figure 4 · The asset required to disclose its age in brackets (receivables), and the one several times larger with no such column (inventory)
The asset required to report its age is the small one. The asset that reports none is several times larger.
Inventory is the next item down, and it has no such table. It gets three years of closing balances, a note on the physical stock count, and one line for "long-idle inventory." That line is usually a sentence, and the sentence usually reads "no long-idle inventory was identified during the stock count."
| Among the 15 brands | |
|---|---|
| Trade receivables broken into age brackets | 14 / 15 |
| Inventory broken into age brackets | 0 / 15 |
The money runs the other way. Dividing inventory by trade receivables, across the 10 companies whose balance-sheet line is trade receivables alone, the median is 4.8× (range 2.44 – 10.94). The other five report "trade and other receivables," so their denominator carries extra items and their ratios can only be read as lower bounds; those five have a median floor of 3.0×.
So the asset that must disclose its age is the smaller one, and the asset that ties up several times as much money discloses none — even with fifteen auditors calling its valuation the most significant matter of the year.
Why only one of them, then? The usual answer is that inventory has too many items — but that is not the reason. A company with thousands of trade counterparties still folds its receivables into four columns. It can be folded because there is one axis to fold on: days elapsed. Inventory folds into four columns too, once you pick an axis — weeks since receipt. The axis is not missing. It was never asked for.
The real reason is that the two assets have their impairment defined differently. I searched the full text of eight of the cohort's audit reports.
| Appears in the notes | Trade receivables | Inventory |
|---|---|---|
| Expected credit loss | 8 / 8 | — |
| Overdue / past due | 8 / 8 | — |
| Loss-rate (provision) matrix | 7 / 8 | — |
| Described by elapsed time or age | 7 / 8 | 0 / 8 |
| Net realisable value | — | 7 / 8 |
For receivables, impairment is defined as a function of time. How overdue the balance is, bucketed, with a loss rate per bucket. Counting the age is computing the allowance, so the table comes with it. For inventory, impairment is defined as a function of price. What it would fetch today, and whether that is below cost. Age does not enter the calculation.
But in fashion that price is a function of time. The same thing is being measured one step removed — and that step never appears in the filing.
Once the season passes, what the garment can fetch falls. So inventory impairment is in substance driven by time as well; the standard simply does not make the link explicit, and time disappears in the middle of the calculation, leaving only the result. The lack of correlation in the earlier section is a measurement of exactly that: the missing step cannot be rebuilt from outside.
One more thing, and this one is inference, not established fact — the two ages are authored by different people. The age of a receivable is set by the counterparty; when they pay is not the company's call. The age of inventory is set by the company: it is the residue of deciding what to buy, when, and how much. Publishing that in buckets means publishing a quarterly report card on buying decisions. Absent a requirement, there is no reason to volunteer it.
One clarification, because the two are easy to conflate. Long-idle inventory and the valuation allowance are different things: the first is physical damage or obsolescence found during a count, the second is a write-down when the price you can get falls below cost. "No long-idle inventory" and a double-digit write-down rate in the same report is not a contradiction — and the cohort contains exactly that. The problem is that neither line yields an age.
07So what should you actually do
If dividing totals cannot see age, count in a unit that keeps it. The measure we use is a receipt-cohort sell-through curve. The name is heavier than the arithmetic, and the formula is below in full — it will be reproduced anyway. What is worth paying for is not the formula but the choices made while computing it.
The measure
Group every SKU received in the same week into one cohort. Track the cumulative share of that cohort sold at full price by week t after receipt. Call it full-price sell-through, s(t).
``` s_w(t) = (units from week-w cohort sold at full price within t weeks of receipt) ÷ (units received in week w) ```
The threshold — your own cost ratio
An arbitrary threshold collapses under the first objection, so use a structural one: the cost-of-sales ratio. If cost is c of the full retail price, then selling c of the cohort at full price recovers that cohort's cost outright. Everything in the remaining (1 − c) is margin, whether it is discounted or never sells at all. In other words, s = c is the cohort's break-even.
The median cost ratio among the brands here is 41.22%; each company should use its own. One more line is worth drawing, at half of it — c/2. Half is not an arbitrary pick: below it, full-price demand has not covered even half the cost, which is more than discounting can usually claw back.
| Measure | How it is computed | Threshold | What you do when it trips |
|---|---|---|---|
| Full-price sell-through s (wk 26) | Units of a receipt-week cohort sold at full price within 26 weeks ÷ units received that week | s ≥ c — cost recovered at full price (c = your cost ratio; cohort median 41.22%) | Hold the buy. Discounting this cohort early throws away margin |
| Full-price sell-through s (wk 26) | Same measure | c > s ≥ c/2 — past halfway; the rest is discount recovery | Multiply next season's buy by s ÷ c; pull markdown forward to the week s(t) flattens |
| Full-price sell-through s (wk 26) | Same measure | s < c/2 — full-price demand missed half the cost | Drop that category × price band × vendor combination from next season's buy |
| Full-price sell-through s (wk 13) | Same measure, one season in | A warning, not a verdict — is s far below c? | Rewrite the in-season markdown plan. The buy changes on the week-26 reading |
Read the same measure at week 13, but treat it as a warning rather than a verdict. A cohort far below c at one season means the in-season markdown plan needs rewriting; the week-26 reading is what changes the next buy.
The threshold, part two — how deep should the markdown be
Everything above says when to act. The question buyers actually face daily is how much to cut, and that number need not be arbitrary either. It takes one input: price elasticity ε — the percentage rise in units for a 1% cut in price.
Sell at markdown d and you receive (1−d) of full price while cost stays at
c. Let volume scale as (1−d)−ε; total margin is
q₀(1−d)−ε · (1−d−c). Differentiate with respect to d, set to zero,
and one answer falls out.
``` d* = ( ε(1−c) − 1 ) ÷ ( ε − 1 ) ```
Two things follow immediately.
First, there is a minimum elasticity below which discounting never pays. If
ε ≤ 1 ÷ (1−c), then d* is negative — no markdown improves margin. At the cohort's
median 41.22% cost ratio that line sits at ε = 1.70; company by company it ranges
from 1.39 to 3.87, and the higher the cost ratio, the harder a markdown is to
justify. Cutting by habit without having measured elasticity means not knowing which side of
that line you are on.
| Elasticity ε | Optimal markdown d* | Price received (full = 100) | How to read it |
|---|---|---|---|
| 1.70 or below | do not discount | 100 | Cutting only shrinks margin. Clear the stock another way |
| 2.0 | 17.6% | 82.4 | A light markdown is optimal. Half off is too far |
| 3.0 | 38.2% | 61.8 | The usual end-of-season band |
| 5.0 | 48.5% | 51.5 | Half off needs roughly this much elasticity to be justified |
| ε → ∞ | 58.8% | 41.2 | The break-even markdown. However well it sells, it never goes past this |
Figure 5 · The optimal markdown implied by price elasticity ε. However well it sells, it converges on the break-even markdown (1 − cost ratio) and never passes it
The second point matters more. However large ε grows, d* converges on 1−c — the break-even markdown — and never passes it. There is no finite elasticity at which 70% is optimal. That is why the 70% rack was called a confirmed loss earlier: that discount cannot be the output of optimising margin. It is the number you land on when the only remaining option is cash.
Situations that genuinely require clearing stock do exist — floor space is needed, or cash is. The formula is still useful there: it makes you decide how much you are choosing to lose with a number in front of you. That number is the 11.2 points between 58.8% and 70%.
The decision rules — what actually changes
1. Next season's buy quantity changes. For any cohort still below c at week 26, multiply next season's order for that category × price band × vendor combination by s ÷ c. That is an arithmetic instruction, not a suggestion to watch it closely. 2. Markdown timing moves off the calendar and onto the curve. Most brands start markdowns in fixed months. Start instead in the week when the slope of s(t) toward c flattens — which means different start dates for different cohorts inside the same season. 3. The allowance becomes a record of decisions. Accrue the valuation allowance by receipt cohort rather than as a year-end estimate on the total, and the number stops answering "how much did we write off" and starts answering "which buying decision was wrong." Today that figure lives in the close and never reaches the buying meeting.
The choices — and why the alternatives fail
| Choice | Why | What breaks otherwise |
|---|---|---|
| Count full-price units only in the numerator | Counting discounted units as sell-through reports success at the moment value was destroyed | Include discounts and end-of-season sell-through reads 90%; if half of that went at half price, actual recovery is 67.5% |
| Align on receipt date, not sale date | Aligning on sale date gives you a revenue curve, not an inventory curve | A strong December says nothing about whether the August intake performed |
| Window of 26 weeks | The shortest window covering both the selling season and the clearing season | At 13 weeks you cut off before end-of-season markdowns and miss half the recovery; at 52 weeks carryover blends in and you can no longer tell which season's decision failed |
| Do not count returns-to-stock as new receipts | Counting them registers one garment as two intakes and inflates sell-through | Post them back to the original receipt week |
| Read sell-through per door alongside the total | A SKU placed in a handful of stores is limited by those stores' traffic | Without dividing by door count, "doesn't sell" and "was never stocked" land in the same bucket |
08What this data cannot show
Start with the honest limit: the measure above cannot be computed from public data. Weekly receipt quantities and the full-price/markdown split exist only inside the company. What the filings establish is that the measure is needed, and that its threshold has a structural basis in the cost ratio. Each company's actual curve can only be drawn from its own data.
Beyond that:
1. Elasticity cannot be measured from public data. ε requires each company's markdown history joined to unit sales, and both live inside the company. A naive regression also picks up reverse causation — slower-moving goods get cut harder, so the raw correlation between discount and volume understates true demand response. Identification needs season and category held fixed and variation set independently of demand, such as a planned markdown calendar. The ε values in the table above are illustrative, not measured. 2. No company discloses an age distribution. The write-down rate shows only the output of an ageing schedule nobody outside can see. 3. The cause of the spread in write-down rates cannot be isolated. Product mix (outdoor gear survives carryover; trend apparel does not), write-down policy, and genuine obsolescence are all mixed together. It is presented as an observation, nothing more. 4. Days inventory uses a closing balance, so in a seasonal business the fiscal year-end matters. Every company here closes in December, which makes them comparable to each other, but the absolute level should not be read as an average holding period. 5. Units and SKU counts are not disclosed, so "how many garments went unsold" is not answerable here. Only money is. 6. The cohort skews toward heavier filers. Unlisted audited companies have no structured API, their figures could not be cross-checked against parsed text, and companies that could not be cross-checked were left out. 7. Everything is consolidated, so subsidiary revenue sits in the denominator, and companies with large non-apparel subsidiaries show a diluted inventory ratio. 7. One company (E) is marked unverified on its write-down rate: the note's inventory total and the balance sheet disagreed, so the identity check failed. The cell was left empty rather than filled with a number that did not reconcile.
09What this comes down to
Inventory at an apparel brand is roughly 30% of annual revenue, sits for close to ten months, and fifteen auditors independently named its valuation the most significant matter in their year's audit. Yet the only measure of that inventory available from outside — days inventory — has no relationship to what the companies themselves wrote down. Rank correlation +0.002.
That is because days inventory is a poor measure. Dividing one total by another puts last week's arrivals and three-year-old stock in the same figure, and age disappears in the division. In the same report, receivables are split into 6-month, 1-year and 3-year buckets. Inventory, worth several times as much, gets no buckets at all.
So the proposal is to count inventory by receipt cohort rather than in total, and to set the threshold at each company's own cost-of-sales ratio. Ask whether each week's intake cleared its cost at full price, and inventory stops being an asset balance and becomes a scorecard for last season's decisions.
Where to start, depending on your seat
| If you are | Start with |
|---|---|
| Merchandising / buying | The share of cohorts whose full-price sell-through clears your cost ratio by week 26. Below half, start with buy quantities |
| CFO / finance | Whether the valuation allowance can be split by receipt cohort at all. If not, the close never reaches the buying meeting |
| Data / IT | Whether receipt week and the full-price/markdown flag join in one table. If they sit apart, the measure above cannot be computed |
| Investors / analysts | If days inventory was your read on inventory risk, start from the fact that it tracks nothing the company itself wrote down |
Method · limits
The population is DART's register of externally audited companies, 38,989 in total. Filtering to KSIC 14 (apparel, accessories, fur), 15 (leather, bags, footwear), 4641 (textile, clothing, footwear and leather wholesale) and 4741 (clothing retail) leaves 651. Of those, I kept only companies whose figures could be cross-checked against DART's structured financial API (fnlttSinglAcntAll), leaving a final cohort of 19, all on FY2025 consolidated statements. None of the 19 had a change in consolidation scope, so no figure here is contaminated by acquisition roll-ups.
The cohort is split three ways by business model: 15 consumer brands, 3 export OEMs producing to order, and 1 platform mixing own-label with resale. Without that split you get observations like "writes down less and earns more," which is not a finding but a classification error.
Valuation allowances are not in the structured API, so they were read from the audit-report notes
and accepted only when two identities held simultaneously: gross cost − allowance = carrying
amount, and that carrying amount matching the balance-sheet inventory within 0.5%. The one
company that failed is marked unverified. Four of the accepted values were re-checked against the
original note text by eye, with no discrepancies.
All companies are anonymised (A–O). The figures are public filings and can be checked directly on DART; anonymisation is meant to keep names out of search results, not to make the data untraceable.
Correlations use the 14 companies with both figures confirmed. Correlation is not causation, and this piece does not use the absence of correlation as evidence that the companies estimate poorly. It uses it as evidence that the externally available metric does not reflect age.
Reproduction scripts are 패션_코호트.py and 패션_지표.py; raw values,
with DART receipt numbers, are in 패션_코호트.csv.
Caff · August 2026
Same method, different industry. The bottleneck differs every time — finding that difference is what this series does.
One industry, one bottleneck, public data only — straight to your inbox. Nothing else, ever.
This is as far as public data can see. Repurchase, incrementality, attribution — the numbers that change decisions live inside your own data, and making them countable is what Lambency does.
caffrey.w.lee@gmail.com