The two middles

How prices work in Monsoon. An explorable page.

Every price in Monsoon is one number: the stock of one good in one port. The same stock gives two answers. One answer is about money: is the price high or low? The other answer is about time: will the price go up or down? Each answer has its own center line. This page calls them the two middles. Move the sliders and watch both answers change. The numbers come from the game data. The math comes from the game code.

2026-10-10 · a prototype page · numbers: the game pack · math: the game code

Figure 1 — The two middles

Clove at Banten, day 0. The black bar is the stock: 550 units. The solid line is the base level: 600 units, where the price equals the base price. The dashed line is the settle level: 481 units, where the market slowly stops. The stock is above the settle level but below the base level. So the bar looks full, and the price is still high: 7.39 reals, 57% above base. Drawn to journals/game/economy/016 and journals/game/port/004, from the pack export of 2026-10-10. The drawing is schematic; the numbers are the pack’s.

One good, one port, four numbers

A market is one good in one port. Four numbers describe it.

base price
The normal price of the good. All markets of the same good share one base price.
target
The stock level where the price equals the base price.
stock
How many units the market holds today.
depth
How much one trade moves the price. Depth is always the target divided by five. The game never prints it.

The price comes from the stock. A low stock gives a high price (dear). A high stock gives a low price (cheap). The price equals the base price when the stock equals the target. One rule gives the price in every market. Only the good’s swing changes the size of the numbers (section 8).

price = base × (1 − swing × erf(10 × (stock / target − 1)))
stock (next day) = stock + kappa × (target − stock) + kappa × target × offset

The first line gives the price for any stock. The second line moves the stock, one day at a time. The page uses both lines in the tools below. The stock has no top limit. Very heavy buying can push a market below zero.

journals/game/economy/005, journals/game/economy/008, journals/game/economy/016, journals/game/world/000 D7.

The two middles

The base level is shared. At stock = target, the price equals the base price. This holds in every market of the good. But the target is different in each market: 600 units at Banten, 2,800 units at Ternate.

The settle level is local. Every day, the world pushes the stock toward a settle level. The world does not push every market the same way, so every market has its own settle level. Sometimes the two levels are almost the same: Johor textile is one example. Then the bar works like a normal gauge. Often the levels are different. Then the two answers separate.

the base level
Answers the money question. Stock above the target: the price is cheap. Stock below the target: the price is dear.
the settle level
Answers the time question. Above the settle level: the stock will fall, so the price will rise. Below it: the stock will rise, so the price will fall.
season
 

Try it. Drag the stock. Change the season. Watch the two answers change.

Worked example: Banten clove, day 0

the money answer
The market holds 550 units. The target is 600 units. The stock is 50 units below target, so the price is above base: 7.39 reals, +57%. That is dear.
the time answer
The settle level is 481 units. The stock is above the settle level, so the stock will fall by 69 units. When the stock falls, the price rises.
where it ends
When the stock reaches 481, the price is 8.21 reals, +75%: near the top of the clove swing. If nobody trades, the price rises over the next weeks from 7.39 to 8.21.

The bar shows the stock from zero to two times the settle level. That is the game’s own drawing. The base level line is not drawn in the game; this page adds it, because it explains the prices. The slider covers the full bar. The model itself has no top limit for stock.

journals/game/economy/016 (the base law), journals/game/port/004 D2–D3, journals/game/world/000 D7; the pack export of 2026-10-10.

Will the price go up or down?

Four things move a market each day. Only four.

1. recovery
The stock moves back toward the target. The speed depends on the good. Clove closes about 12% of the gap each day. Rice closes 20%.
2. the season push
The stock moves toward the settle level of the current season.
3. your trades
When you buy, the stock falls and the price rises. When you sell, the stock rises and the price falls.
4. the fleet days
Dated landings. They happen on one day each year (section 7).

Nothing is random. The order inside one day does not matter: one big sale and many small sales give the same result.

Try it. Sell some units on a day you choose. The sale pushes the price down. The recovery then closes the gap. In the end, both lines meet at the settle level. One sale changes the day, not the destination.

Figure 2 — The run

Sixty days of the market from the bench. The light line is the market with no trade. The dark line has your sale on the day you chose. The blue mark shows the sale: it pushes the price down. The gap then closes at the recovery speed. The dashed line is the settle level. Both lines end there: one sale changes the day, not the destination. The draw runs the two-term day of journals/game/economy/005 and journals/game/economy/006 §1 in the browser, on the pack export of 2026-10-10. Schematic: the fleet days and all events are left out.
journals/game/economy/005, journals/game/economy/006 §1, journals/game/economy/016.

One year, two settle levels

One year has two monsoons and two rests. West monsoon: 141 days. Rest: 30 days. East monsoon: 164 days. Rest: 30 days. In total: 365 days.

The settle level can change at the season turn, because the world’s pushes have a row for each season. Ternate clove settles at 2,898 units in the west, and at 3,152 units in the east. Malacca clove moves from 962 to 1,212. Some markets do not move at all: at Banten, clove settles at 481 units in both seasons.

The rests are quiet. No sailing and no trade. The authored pushes stand at zero, so the market holds still. One exception: a resolved situation keeps its push. The bill arrives at each rest. Upkeep costs 0.1 reals per day. The crew bills once per season: about 20 reals for the starting four hands, against a starting purse of 100 reals.

Figure 3 — The year

Two monsoons and two rests. The rests carry the blue color: the bill arrives in them, and the market holds still. Drawn to journals/game/economy/005 and journals/game/economy/013 D9; the bill lines to journals/game/014 D15 and the authored starts. Schematic.
journals/game/economy/005, journals/game/economy/013 D9, journals/game/014 D15; the pack export of 2026-10-10.

One good, many markets

Three clove markets, one morning: Banten reads +57% (dear), Ternate reads −72% (cheap), Malacca reads −57% (cheap). All three use the same base price, so the numbers are directly comparable.

The bars are not comparable, because each bar has its own settle level at the middle. In both drawings below: the solid line is the base level, and the dashed line is the settle level.

drawing

With the game’s drawing, the three bars look similar, but the prices are far apart. With one shared middle, the bars separate: left of the middle is dear, right of the middle is cheap. The dashed marks still show each market’s own settle level. The shaded area is the middle part of the swing, where the price still moves.

journals/game/world/000 D7, journals/game/port/004 D2 and D4, journals/game/economy/016; the pack export of 2026-10-10.

Why trade routes work

The same good, the same base price, but different settle levels. At Ternate, clove settles at 3.36 reals (below base). At Banten and at Malacca, clove settles at 8.21 reals (near the top). Buy where the price is low. Sail. Sell where the price is high. The difference is your profit.

The pack measured five routes and one short loop. The numbers below come from the game code. They include the sailing days and the ship upkeep of 0.1 reals per day.

A repeated route earns less. The first loop of the home shuttle earns 35.2954 reals. The next loops earn 33.1542, 32.7337, and 32.6509. The reason: every loop moves the market, and the market recovers slowly. A fast repeat does not give the market time to recover.

journals/game/world/004 (the corridors, measured), journals/game/economy/016 phase 5 (re-measured under the law); the priors’ corridors block; journals/game/economy/009.

The fleet days

Two days each year bring big cargo to Malacca. On day 14, the India fleet leaves and takes 250 units of clove. On day 180, the China junks leave and take 400 units. Nutmeg and mace ride on the same ships. The day-14 landing moves the Malacca clove price by 1.13 reals in one day.

Figure 4 — The fleet days

Clove at Malacca over one year: flat, then two big landings. The gray bands are the rests; the fleets sail inside the seasons. Drawn to journals/game/economy/006 and the pulse content under content/scenarios/nusantara-1550/economy/pulses/. Schematic.

Landings appear in the journal. Future days appear in the list “Coming events”. A fifth cause class (dated events) is not built yet. Nothing else moves a price.

journals/game/economy/006, journals/game/027 D8, pins/src/nusantara_1550/flow_pulse.rs (the day-14 receipt).

The swing and the hidden numbers

Each good has a swing: the farthest its price can move from base. Clove: ±75%. Rice: ±62%. Tin: ±17%. Five goods (camphor, iron, sago, salt, silver) sit at the floor: ±15%. The curve has the same shape in every market. Only the swing changes the size of the numbers, and the swing belongs to the good.

The last part of the swing is almost flat. Past 20% away from the target, the price is very close to the edge. The last steps are very small. So most of the curve is flat, and most of the bar is a price that cannot move.

Figure 5 — One shape, fourteen swings

Three goods on the same relative axis. The shape is one curve in every market; the swing decides how large a reading gets. Past the shaded middle part, the price sits at the edge of the swing. Drawn to journals/game/economy/014 D4 and the amplitude map of journals/game/economy/016 D5; the priors. Schematic.

Depth is never printed. Depth = target / 5. It tells you how much one trade moves the price. A starting hold of 10 units is 1.7% of Banten’s clove book. The upgraded hold of 40 units is 6.7%.

The swing is a design decision, not a law of nature. At the cutover (the day the new price rule went live), 17 cells had old prices outside the new swing. The designers moved those prices to the edge of the swing. Example: Banten clove rested at 8.40 reals; the top of the clove swing is 8.21 reals; so it became 8.21.

journals/game/economy/014 D4, journals/game/economy/016 D2, D5, D8; content/economy/priors.ron.

What the player cannot see

The prices are readable on purpose. The machine behind them is not.

the target
The base level is not drawn on the bar. The player must remember it, or learn it from the price.
the depth
The game never prints depth as a number. You meet it in the trade ticket: the ticket shows the price after your trade.
the pushes
The permanent pushes (the placement rows) are not in the “Price pressure” list. The settle line on the bar shows their effect.
the other ports
The interface shows your port and one chosen destination. It never lists all markets and never ranks them.
the Powers
Patrols, passes, and tariffs sit next to the price. They never change the price rule.
the rest
No owned production, no classes, no level-ups. Upgrades add upkeep.

The owner keeps one open problem here: a read that shows “where is this good expensive?” across the map, without breaking the rules above. This page is one experiment for that problem. It proposes nothing.

journals/game/port/004 D4 and D5, journals/game/world/000 D6 and D7, journals/game/economy/016 D17, journals/game/027 D8.

What is real on this page

the numbers live
All stocks, targets, base prices, swings, and speeds come from the game pack (export of 2026-10-10): 14 goods, 10 markets, both seasons, the two fleet days, the route receipts.
the math live
The page computes prices and paths with the shipped law, including the same erf approximation as the game code. If the page and the game disagree, the game is right.
the drawings schematic
Figures are drawn to match the record. They are not screenshots.
the run schematic
The 60-day run has one market, no fleet days, and no events.
the file prototype
A scratch prototype under design/prototypes/. It makes no claim on the game.
This file, and the export it reads; design/prototypes/economy-middles/README.md.

Sources

journals/game/economy/005 · the market record and the law
journals/game/economy/006 · the flows, the pulses, the day’s order
journals/game/economy/008 · the scenario rehost
journals/game/economy/009 · settle along the curve
journals/game/economy/013 · the beat law
journals/game/economy/014 · the amplitude rule
journals/game/economy/016 · the base-law cutover
journals/game/port/004 · the market read, base and rest
journals/game/world/000 · the price leads, the stock reads as a bar
journals/game/027 · the flow read
docs/economy.md · the decided model
content/scenarios/nusantara-1550 · the pack the export reads
content/economy/priors.ron · the law’s constants

Words on this page, and the same words in the game