Guides › Open tonnage & Radar

Open tonnage & Ballaster Radar - user guide

This is shipdata.net's tonnage-finding workbench, living at one URL (/radar). It answers two questions from a single screen: "who is going to be open, and where?" (browse mode) and "of all the open and soon-open ships, who can actually make my laycan at my load port?" (cargo-match mode). The behaviour flips entirely on whether the Load port box is filled. Type a port and the fleet is ranked by a 0-100 Fit score that steams each ship the real sea route from where it becomes free; leave it blank and you get the paginated open-tonnage board filterable by predicted open region and days-to-open.

What this page is, and the merge you should know about

There used to be two pages: an Open tonnage board at /tonnage and a Ballaster Radar at /radar. They are now one tool. /tonnage issues a server redirect straight to /radar, so any old bookmark lands in the same place. The board lives on as Radar's browse mode.

Implementation note for the curious: the rich legacy OPEN_TONNAGE_HTML board (with IMO, Grab, Ice, State, Conf, Last-seen, Likely-loading-regions and Basis columns) still exists in the codebase and is exactly what /api/open_tonnage returns. But the page you actually land on is the Radar shell (RADAR_HTML), and its browse view renders a trimmer subset of those columns. Both modes are powered by the same underlying open-prediction engine (_estimate).

The Load port box and the two-mode switch

The first toolbar field is the control everything hinges on.

Laycan, DWT and the chartering filters (apply in both modes)

The toolbar carries two rows of filters. These apply as hard constraints - a ship failing any one is dropped entirely, not merely down-ranked (the exceptions are DWT and laycan in cargo mode, which also feed the soft Fit score, explained below).

Filter values are written into the URL, so a fully-filtered radar view is shareable and bookmarkable; the page restores every field from the URL on load. Both Find tonnage buttons re-run the search.

Browse-mode-only filters: region, days-to-open, ballast

Three controls only bite when the load port is blank (the whole-board scan). The radar shell only forwards Open region and Open in to the board endpoint; ballast only is shared with cargo mode.

Reading tip: the count chip's … ballast · … open ≤7d breakdown pairs naturally with these - read the totals first, then tighten Open in and ballast only to isolate the prompt slice.

Cargo-match result table - "who can make my laycan"

With a load port set, results render as a ranked grid, top 40 by Fit. Internally the engine first narrows the fleet to the genuinely nearby candidates, computes the expensive real sea route only for those, then sorts by Fit and keeps the top 40 - so the list is the genuinely close, genuinely well-fitting tonnage. Columns left to right:

Sort by any column. Click a header to sort the candidate list by that column - Fit, DWT, distance, ETA, open-in-days and so on. Numeric columns sort highest-first on the first click; click again to reverse. Blanks always sink to the bottom. The cargo-match list is not paginated, so the sort spans every candidate ship shown.

How prompt tonnage ranks (2026 tuning). A ship that becomes open before your laycan opens can idle and load on time, so it now ranks near the top (it is the surest tonnage), instead of being pushed down for being “too early.” The DWT box is a soft band: ships a little outside your size window still appear, scored down somewhat - useful when you would flex on size. Two hard screens also apply, the same rules the where-to-load engine uses: a ship that cannot realistically ballast to the load port for her tonnage is dropped, and a hull over the empirical age ceiling for that load country is demoted (effectively deselected once well over it).

How the arrival date is built. The Arrival / ETA is the full picture, not just steaming time: it is when the ship frees up plus the ballast steam to your load port. Freeing up includes the time she still owes at her current or discharge port - and that port time is tonnage-graded: the median berth (load/discharge) days and the anchorage-queue wait that a vessel of her size class actually spends at that port, from real voyage history. So a Kamsarmax queuing at a congested discharge port shows a later, realistic arrival than a small ship at a quick berth - the same turnaround the forward schedule uses.

Load-basin positioning - the radar strip

Above the cargo-match results a one-line Load-basin positioning strip shows the present-state reflexivity read for the load port's basin, filtered to the bands that overlap your DWT window - so it speaks to the cargo you are actually fixing. ▲ crowding = ships piling into the basin ahead of realised cargo (overshoot-prone); ▼ squeeze = cargo present, tonnage scarce (rate-supportive). It is the same read as the Market radar - no second model - and stays silent when the basin maps to no matching cell or the weekly runway is still building. Use it to sense whether you are chasing tonnage into a crowd or into a gap before you start calling owners. Present state, not a forecast.

How the Fit score is built (laycan × size × confidence)

The Fit pill blends how well a ship fits on timing, on size and on how confident the prediction is into a single 0-100 number. Understanding each input lets you read why a ship scored what it did.

Worked read: a green 90+ pill means "right size, arrives in-window, recently confirmed" - call it first. An amber 50-70 usually means one of: a few days early/late, slightly off-band, or a medium-confidence position. A grey sub-50 is a stretch - typically late arrival, well off-size, or stale.

Browse-mode board - scanning where tonnage opens

With the port box empty you get the open-tonnage board: every trackable ship with its predicted next-open, paginated 20 per page. Columns left to right:

Pager. Below the table sit ← Prev / Next → buttons and a Page X / Y indicator; the buttons disable at the ends. The page number is held in the URL so a paged view is shareable.

Why this is new. Every other prediction on this board reads a ship’s own AIS track and berth history - real signal, but it treats every ship as if she instantly becomes true market tonnage the moment she finishes discharging. In reality many owners already have her next fixture lined up before she even berths. Refixture gap and P(open 7d) are the first columns on this board built from realised operator behaviour, not just the ship’s own physics - they read that hidden pattern off accumulated voyage history no single-source AIS tracker has.

Note: this radar browse view shows a deliberately trimmed column set. The legacy board carried extra columns - IMO, Grab, Ice, State, prediction confidence, Last-seen days, "Likely loading regions" (the feasibility hint of which basins a ship can ballast to next), and the prediction Basis string. Those are returned by the API but are not rendered on /radar; open an individual ship's profile page for that depth.

Sortable headers here too. Click any column header to re-sort the board (click again to reverse). One caveat: the browse board is paginated on the server, so a header click sorts the ships on the current page - page through with Prev/Next, or tighten the filters, to bring the tonnage you want onto one page first.

Filters that now work board-wide. The Laycan date pickers apply in browse mode too (leave the load port blank, set a window, and the whole board is filtered to ships predicted open in it). The region box is a substring match, so a partial name catches the real labels (e.g. typing part of a basin name). Prompt ballasters now carry their open region, so a region filter no longer silently hides them. In the P(open) column, the “(fleet avg)” tag now appears honestly whenever the number still leans mostly on the fleet-wide prior rather than a deep track record for that operator.

Practical workflows and reading cautions

Two end-to-end recipes the page is built around:

Cautions baked into the design:

How the reposition recommendation is built

Every per-ship reposition surface - the My Fleet open-tonnage board, the ship page’s Reposition - live market card and Reposition advisor card, and the “Do this now” board - is driven by ONE engine, so they always name the same load region for a given hull. A region is ranked by the full-voyage TCE she would earn there, net of the ballast fuel to reach it, any Panama/Suez canal toll, and live demand. That earnings figure is then vetted for the ship’s age against each market: from real load-leg history we learn the age ceiling charterers accept in every basin for her size, and a hull over that ceiling is steered away from the screened market (it still appears, marked with an age warning, so you see the trade-off). The advisor card adds the basin’s supply/demand tightness as context. Self-discharging ships are age-exempt.

Where-to-load: measured by real loading (July 2026)

The suggested next loading ports are now ranked by ships that arrived empty and sailed loaded at each port - the true loading signature - instead of raw traffic. Busy import-only destinations (discharge hubs, shipbreaking ports) no longer appear as loading suggestions, and a port with no recent loading evidence is excluded outright.

More guides