Guides › Market & DBPI

Market & DBPI - Complete Page Guide

The Daily Hire Market Index page (/market) is shipdata.net's freight-rate engine surfaced as a live board. Every daily-hire number on it is computed from where ships actually are - vessel positions, reported draughts, observed voyage history and owner break-even costs - drawn from live AIS plus a position feed that fills coverage gaps (coastal China, India, Indonesia, West Africa). It explicitly uses no external rate feed, no broker survey: only positions and status go in, the rates are computed by shipdata. The board refreshes in your browser every 5 minutes; the underlying engines recompute every 15 minutes server-side.

Page layout at a glance

From top to bottom the page stacks the following blocks, each documented below.

All numbers arrive client-side from four JSON endpoints: /api/market_index (the DBPI top-down engine), /api/market_bottomup (the lane engine), /api/market_history and /api/market_bottomup_history. While they load you see grey skeleton shimmer placeholders; the hero numbers then count up with an ease-out animation that is suppressed if your OS has reduce-motion enabled. The whole board re-fetches itself every 5 minutes via a background timer.

The composite headline - DBPI, World LSR, Hottest band

The dark strip at the top carries three readouts separated by thin vertical rules, with a ↻ Refresh button at the right that forces an immediate reload of all feeds.

shipdata DBPI (the large accent-coloured number, e.g. 1042.5). DBPI stands for Dry Bulk Pressure Index, our live market index: a position-derived read of what the fleet is earning against its running cost, on a scale anchored so that 1000 marks the break-even line. Read it against break-even. The hover tooltip and the sub-line both state the scale:

Under the hood it weighs each band's earnings against its own break-even and rolls the bands up across the fleet, anchored so the break-even line sits at 1000. The sub-line reads as of … UTC · DBPI 1000 = fleet at break-even so you always have the snapshot timestamp. Why it matters: it is your fastest single read on whether dry bulk as a whole is paying owners or starving them, and because it is built from positions it can move ahead of survey-based indices that lag the physical market.

World LSR (laden at sea) (e.g. 54%, colour-coded). LSR stands for Laden Sailing Ratio: the share of tonnage at sea that is sailing laden rather than empty. It is the cleanest scarcity signal because every ship underway is unambiguously laden or ballast - no port-state confusion between loading and discharging. The element's colour flips with the reading: a high share shows tight (pink/red), a low share loose (green), and the mid-range balanced (amber). The sub-line notes the cross-band boost the engine derives from world LSR: a modest, band-neutral lift or drag that only shows up at the extremes. Why it matters: a rising LSR with a flat DBPI is early warning that tightening is underway before it shows up in rates.

Hottest band (e.g. 120-190K $21,400/day). The headline strip computes this by sorting all bands on their global multiplier (how far the earned rate sits above the cost floor) and showing the leader - the size class earning the largest premium over its cost floor right now. Its sub-line shows that band's own LSR and multiplier over break-even. Why it matters: it tells an owner or broker which segment is leading the cycle and where repositioning a flexible ship might capture the most upside.

AI market read and the Rate-history charts

AI market read is an admin-only commentary card. The page silently probes /api/admin/market_commentary; for ordinary users that endpoint returns 403 (and in production the LLM backend is off, so it reports available:false) and the card stays hidden - you will normally never see it. When present it shows a short generated narrative plus the model name appended after a dot; it is cached for 6 hours and is a convenience layer only, carrying no data you cannot read directly off the board.

Rate history card (hidden until at least one daily snapshot exists). It charts the trajectory of the DBPI top-down engine:

Why it matters: the spot numbers tell you where the market is; this card tells you direction and speed. A band sparkline turning up days before the composite is the kind of divergence a position-trader or a charterer timing cover wants to catch.

Per-band tabs and the band detail view

Below the history sits a horizontal tab bar, one button per band, in fixed DWT order: 0-5K, 5-10K, 10-17.5K, 17.5-30K, 30-47K, 47-55K, 55-68K, 68-90K, 90-120K, 120-190K, 190-250K - the 11-band taxonomy. Labels are DWT ranges (not trade names) so you can map a specific vessel to its band by deadweight alone; roughly, 30-47K is Handysize, 47-55K Handymax, 55-68K Supramax, 68-90K Panamax, 90-120K Kamsarmax, 120-190K Capesize, 190-250K VLOC. Each tab shows the band name and, beneath it in grey, the band's global rate abbreviated to one decimal of thousands (e.g. $18.5K) or - if the band has no priced regions. The active tab is accent-coloured with an underline; your last choice is saved in the browser (localStorage), and on first load with no saved choice the page opens the largest band by fleet count.

Selecting a band renders its detail card, titled e.g. 120-190K market - macro granularity. Granularity is macro for bands above 17,500 DWT (priced across ~16 broad ocean basins) and detailed for the small short-sea bands at or below 17.5K (priced at finer sub-region level). A CSV-export button is attached next to the title; it is admin-only - non-admin users cannot download.

The six KPI stat cards:

The route calculator (trade-balance pricing)

Inside the band detail card sits a route calculator - two searchable dropdowns (Load regionDischarge region) populated with that band's regions, each option showing its current $/day in parentheses, plus a live output on the right that updates the moment you pick regions.

With only a load region chosen, the output shows that region's headline daily hire with the note one-way (no backhaul). Add a discharge region and the calculator switches to the same hybrid trade-balance model the backend lane pricing uses:

How to use it: pick the load region you'd fix from and the likely discharge to see a directional round-the-trip-adjusted daily hire rather than a naive one-way number. Why it matters: a headhaul (loaded into a tight import market) prices well above its backhaul return; the direction factor captures that asymmetry, so a broker quoting a specific lane gets a number that already accounts for whether the cargo is flowing with or against the dominant trade direction.

The region table (per-band supply/demand detail)

Below the calculator is the scrollable region table - the granular evidence behind the band's headline. Rows are sorted by daily hire, highest first. Ten columns:

How to read it: a region with high Ballast %, high Bal in and low Open is a tight load market - ships are being pulled in faster than open tonnage can satisfy. The opposite (low Ballast %, high Lad in) is a discharge sink where ships pile up empty and rates soften. Why it matters: this is where a charterer sees why a basin is firm or soft in raw ship counts, and where an owner spots which regions are draining open tonnage.

Live tonnage analysis - read the market by place for your size

The heart of the Market page is now a decision-support board. It follows the size tab you select at the top of the page (pick a 7/14/30-day window here) and the table fills with every place that size trades - regions for 17,500 dwt and up (the deep-sea basins: ECSA, Far East, Australia, US Gulf…), countries for anything smaller (the coastal/regional traders) - each read straight off live vessel supply and demand:

It is the same live supply/demand engine that prices the rest of the site (and the Fix This Cargo and ship pages) - built from positions, drafts and voyages, not a rate survey. Read it to see at a glance where your size is hot, where it is soft, and where a ship is best repositioned. (This replaced the older bottom-up lane board and the all-bands snapshot - the same numbers, now organised for decisions.)

Tonne-demand - cargo actually loaded (leads the rate index)

The headline rate index tells you what tonnage is worth today. Tonne-demand tells you how much cargo is actually being moved - and it moves first. Cargo gets booked before hire firms, so a rising tonne-demand curve is a leading signal for the rate index that sits above it on this page.

It is read straight off realised voyages, not modelled. Every time a tracked ship arrives light at a load port and sails heavier, the rise in her draught - multiplied by her deadweight-per-centimetre (TPC) - is the tonnage she took on. We keep only the cargo loadings (filtering out bunkers and draught noise), attribute each one to the load region and the ISO week it happened, and add them up. No survey, no market figure - just tonnes that physically went over the rail.

The card shows four numbers and a weekly bar chart:

The card follows the size tab you select at the top of the page, so it always shows the band you are reading - and the top load regions table shows where that cargo is coming from. Every week is frozen into an append-only history the moment it matures, so the index deepens on its own and its lead over the rate index can be back-tested as the runway grows.

One sizing rule, one archive (2026-07). A draught change is priced in tonnes via the ship’s TPC and read against her size: a large enough swing reads as a cargo operation, a smaller one as a bunker/stores call, and anything below that as noise. Broker-reported port stays carry a single coarse draught, so tiny changes there are treated as reporting noise, never promoted to a call. The same thresholds classify every voyage leg whichever feed it came from, and the stored weekly history has been re-derived under this one rule - past weeks are directly comparable with the live strip.

Expected weeks (2026-07). To the right of the divider the tonne-demand chart now shows expected loadings for the next few weeks - hatched, outlined bars, clearly distinct from the solid realised bars. These are projected from where empty ships are currently declared open (broker laycans, the same freight feed that arbitrates coverage): each ballaster is placed in the ISO week its declared open date falls in, sized from its deadweight and the load region’s observed load factor, then the whole forward set is level-calibrated to your realised weekly flow so a standing pool of open ships can’t overstate the near weeks. A week only draws once enough declared ships support it, so the horizon is shorter for sparse sizes. Ships already open now (or overdue) are counted separately as “open now” standing tonnage, not smeared across future weeks. It is a projection, not an observation, and never a market figure - and it refreshes off live fleet state every time you open the page.

Demand vs Supply - did cargo get abundant, or ships scarce?

What it answers. Every other reading on this page (DBPI, the region table, the reflexivity radar) is built from where the empty ships are - the SUPPLY side. The Demand vs Supply strip adds the missing axis: realised DEMAND, read off how heavily ships actually load. For each top loading region it shows a one-word verdict - demand-led, supply-led, cooling or balanced - so you can tell whether a region firmed because cargo got more abundant, or simply because ships got scarce. The whole strip is tonnage-specific - it follows the size tab you select at the top of the page, so a Capesize and a Handysize read of the same region can legitimately differ.

How the read is built. The headline signal is the region’s median load factor - cargo tonnes taken on (from each ship’s draught-rise) set against deadweight and expressed on a 0-100% scale, taken over realised cargo loads by ISO week. A rising load factor means ships are loading fuller (stronger cargo demand). That is fused with the change in inbound ballast (empty ships heading in = supply) from the reflexivity engine. Demand-led = load factor and/or realised volume rising; supply-led = inbound ballast thinning while load factor stays flat (fewer ships, not more cargo); cooling = load factor easing; balanced = the two roughly in step. A small amber flags a region where ballast is piling in ahead of cargo (crowding - overshoot-prone).

How to read it honestly. Each chip names only what actually moved, so the words never contradict the load-factor / cargo / ballast arrows beside them; hover for the full reason, the load count, the week the load factor is current to, and the part-cargo share. It is a present-state observation, not a forecast - a region needs enough closed cargo loads per week before its load factor is shown at all (thin weeks are suppressed), and the most recent ~2 weeks under-count because loads are still closing.

Methodology & audit trail

Every figure is computed by us from observable inputs - live ship positions, reported draughts, observed voyages and the owner break-even / running-cost basis - never from a panel survey or a market assessment. The headline DBPI is now the live market index: a position-derived read of fleet earnings against running cost, anchored so 1000 marks the break-even line. Per-place daily hire comes from each band's average running cost lifted by the live export-intensity of that region/country; lane and voyage rates add the trade direction and a repositioning adjustment. The full step-by-step methodology lives in the dedicated guide.

Coverage rule (2026-07). Demand and activity series read realised legs from both feeds under one arbitration: live AIS inside its tracking eras, broker-reported calls outside them. The archive was re-derived once under this rule (a dated methodology step, like the sizing-rule step above), so past weeks are comparable with the live values.

One headline number: the live lane engine

Every per-band headline $/day on this page - and on the FFA Reports page - is now the SAME number: the live lane engine level (the volume-weighted average of that size class’s live region rates, the very rates the per-region rows and the lane pages show). Previously the headline came from the bottom-up demand-pull composite while the lanes/regions came from the live engine, so the header could read well below its own lane rows on the big classes. They are unified now, so the band headline always ties out with the lanes beneath it. The DBPI stays the separate pressure index (a ratio, not a $/day), and the bottom-up demand-pull figure remains the fallback when a class has no live region rates.

Positioning vs Fundamentals - the reflexivity radar

Near the foot of the Market page, the Positioning vs Fundamentals panel applies a reflexivity lens: in dry bulk, owners ballast ships on the EXPECTATION of where cargo will be, and that anticipatory positioning itself moves the supply/demand balance before rates print. Per macro-region × size band, the panel measures the cross-sectional gap between how fast the fleet is repositioning IN (ballast inflows) and how fast REALISED cargo demand (tonnes loaded) is changing this week.

Crowding ahead of cargo = ships piling into a region faster than realised cargo justifies (belief/momentum-led, overshoot-prone). Cargo without ships = demand present but tonnage absent (squeeze-prone). The independent supply/demand ratio and the live lane rate are shown alongside as corroboration.

This is present state only - not a forecast. The overshoot/reversal (predictive) layer is deliberately withheld: a backtest on the current short history could not yet beat a naive mean-reversion baseline, so we show where positioning has decoupled today and let the weekly history accrue before making any timing claim. Two things can mimic the signal and are NOT reflexive - seasonal pre-positioning (e.g. ahead of the Brazil or Australia majors) and port congestion (a berth queue lifts positioning while loaded tonnes fall). Read it as a risk/regime gauge, not a buy/sell signal.

It is not only on the Market page. The same present-state read now travels to the pages where you act on it, each filtered to that page’s own region and size band. On a ship page it shows the regime for that vessel’s band in the region she is heading to - “heading into a crowd” versus “a tighter spot”. On a port page it shows, for that port’s basin, which size bands are crowding or squeezing this week. On a trade-lane page it tags the load end - is this band piling into the load region ahead of cargo? Because all four views read the one radar cell for their region×band, they never disagree. Coverage spans all 14 macro basins today; finer sub-basin granularity unlocks as the weekly cargo record deepens.

Does the leading-indicator claim actually hold? We grade it in the open. Each week’s panel is logged to an append-only runway, and a self-grading backtest measures whether this-week crowding really precedes next-week rate weakness. Until enough overlapping weeks accrue (target ~12-16, around Q3-Q4 2026) it honestly reports “building” rather than dressing up an unproven edge - then it turns the verdict on by itself. Today the radar is a present-state regime gauge; the forecast layer earns its place only once the runway proves it.

How the paper market fits in

Forward outlook vs the paper market. On each lane page the Forward outlook strip (+1w / +1mo / +3mo) is our own model - a damped-trend projection off that lane’s own rate history, with a confidence band. For the size classes that have a traded paper curve (Capesize, Panamax, Supramax) we add a small paper-market read underneath: whether the forward is firmer or softer than the current spot, and whether our own read is in line with or reads firmer/softer than that curve. It is a direction check, not a quote - the actual paper levels stay internal. Size bands with no paper curve simply show our model, clearly labelled.

Baltic-anchored headline (July 2026)

From mid-July 2026 the per-class headline $/day you see on the Market page (and everywhere that quotes it, including the FFA report spot) is anchored to the Baltic Exchange time-charter assessment for that vessel class - the same benchmarks the physical and paper markets settle against. Classes without their own published index (small coasters, and the very largest ore carriers, which use a conventional premium over the Capesize index) stay on our own model.

Our live AIS positioning signal is not discarded: where the supply/demand balance we observe has genuinely shifted, the headline moves around the Baltic anchor within tight bounds - close enough to the exchange to be immediately comparable, free to disagree where the fleet's real positioning says the balance has moved. If the exchange feed is ever stale, the headline automatically falls back to our pure model, so the number is never anchored to old paper.

Coaster classes: corridor tether (July 2026)

Small coaster classes (below 30,000 dwt) have no published exchange index, so their headline now runs inside a wide corridor around a reference derived from the live Handysize/Supramax curve. Short-sea supply and demand is where our AIS coverage is sharpest, so our own model remains the primary signal - the corridor only keeps the coaster cycle coupled to the wider dry bulk market and fences out extremes.

More guides