SpacetraderGame reference

Pricing formulas

The equations behind goods, exchange quotes, stock and catalogue price ranges.

← Back to goods
01 / Exchange

From base value to a quoted price

Storage fill sets scarcity; geography adds a modest logistics adjustment and the supply tier sets the spread. The public baseline repeats for the same item, station and cycle day; actual trade quotes also depend on stock. All tables here use generic reference examples.

Stock sets the marginal quote

The centered stock curve sets the mid-price; each order clears one lot at a time.

f(q)=clamp(qK,0,1)
w(q)=1+tanh(2×(1−2×f(q)))tanh(2)2
pₘ(q)=max(5,round(p0×(exp(−0.085)+(exp(0.085)−exp(−0.085))×w(q))))
pask=⌈pₘ(q−0.5)×(1+s)⌉
pbid=max(1,⌊pₘ(q+0.5)×(1−s)⌋)
q
physical stock, in lots
K
storage ceiling, in lots
s
spread on each side
p₀
rounded base value × logistics, with a five-credit floor
pₘ(q)
rounded mid-price at stock q
f(q), w(q)
bounded fill and scarcity weight
Exact calculation details
logistics = 1 + .018 × tanh(ln(G)) + .01 × tanh(ln(1 + AU) / 3)
referenceMid = max(5, round(base × logistics))
capacity = the physical station/product storage ceiling
centerStock = capacity / 2
fill(q) = clamp(q / capacity, 0, 1)
weight(q) = [1 + tanh(2 × (1 − 2 × fill(q))) / tanh(2)] / 2
lowFactor = exp(−.085); highFactor = exp(.085)
mid(q) = max(5, round(referenceMid ×
         [lowFactor + (highFactor − lowFactor) × weight(q)]))
50%-full price = referenceMid × (lowFactor + highFactor) / 2, before rounding
ask = ceil(mid(q − .5) × (1 + spread))
bid = max(1, floor(mid(q + .5) × (1 − spread)))
order total = sum of each successive lot’s marginal quote

Textiles, refined alloy, life-support filters and magnesium use an acyclic manufacturing floor. The reference value is at least ceil((sum(recipe input × generic local ask) + normal processing services + 1) / (1 − spread) × exp(impact × 0.5 / minimumDepth)). This retains the manufacturing reference and its conservative rounding allowance. The actual output bid still follows stock fill; this floor does not promise profitable processing at every fill level. It uses public dated baseline quotes, without a captain’s stock changes or private premiums. Reversible essential utility chemistry instead receives a station appropriation equal to any actual input-and-service shortfall after all coproduct receipts; the payment cannot be claimed by a captain.

G is the location diagnostic used by the modest logistics overlay. Seasonal stock changes move along the same centered curve; the seasonal and reserve diagnostics are not added again as price multipliers. Whole-credit rounding can make cheaper goods appear stepped.

Daily supply spreads
Availability indexSupply tierSpread each side
Below 1.00Limited4%
1.00 to below 1.35Steady2%
1.35 or higherPlentiful1%

Buying reduces local reserves and raises subsequent asks; selling increases reserves and lowers subsequent bids. Every lot clears against the marginal stock curve below, so order totals include price movement. The seasonal baseline and spread tier remain public and repeatable; actual voyage quotes also reflect its saved station stock. Earned XP, reputation and the dealer-activity label do not independently multiply ordinary exchange prices.

02 / In practice

Worked examples from the reference rules

Loading source-backed examples…

03 / Value ladder

Commodity base values

A geometric value ladder

Each tier multiplies unrounded base value by 1.25; rounding sets five-credit increments.

b=5×round(80×1.25k5)
b
base value in credits
k
assigned value tier
Exact calculation details
base = round(80 × 1.25^tier / 5) × 5

Tiers begin at zero. Every step increases the unrounded value by 25%; the final base rounds to the nearest 5 credits. Restricted goods and the new raw-resource families use deliberately assigned fractional tiers; existing commodity IDs keep their original tiers.

Current commodity ladder
CommodityTierBase · crStock scale

Stock scale is separate from capital value. An explicit inventoryScale wins; otherwise the original, pre-ladder base gives 0.08 at ≥2,000 cr, 0.14 at ≥900, 0.25 at ≥600, then 0.4 for special-handling goods, otherwise 1. The first matching rule applies.

04 / Geography

Regional and local factors

Regional and local geography

The local factor is blended with its regional reference.

λ=0.16+0.12×min(1,r1000000)
G=R0.8×(LR)λ
r
local orbital radius, in kilometres
R
regional factor
L
local factor
λ
local blending weight
Exact calculation details
localWeight = 0.16 + 0.12 × min(1, sqrt(orbitalRadiusKm / 1,000,000))
G = R^0.8 × (L / R)^localWeight

For the original six staples, R is the geometric mean of station item-factors in the same planet system: exp(mean(ln(factor))). L is the selected station’s factor. A missing factor is 1.

For added commodities carrying a proxy field, the system’s exporter status and distance from the Sun determine R; L equals R:

Exporter and importer references

Use the exporter case when any station in the system exports the item.

Rexporter=0.90+0.025×ln(1+a)
Rotherwise=1.04+0.055×ln(1+a)
a
configured distance from the Sun, in AU
R
regional factor
Exact calculation details
R = 0.90 + ln(1 + AU) × 0.025    if any station in the system exports it
R = 1.04 + ln(1 + AU) × 0.055    otherwise
L = R

AU is the station’s configured system distance in astronomical units. Orbital radius is its local orbital radius in kilometres.

05 / Local economy

Production, consumption and seasonal reserves

Trading eligibility

A good can be offered through production, declared imports or transit stock. Buying eligibility also includes consumption.

Station sells=(P>0)∨retail import∨transit stock
Station buys=(C>0)∨station sells
P
local production
C
local consumption
Exact calculation details
stationSells = production > 0 OR declared retail import OR transit stock
stationBuys = consumption > 0 OR stationSells
player Buy = buy from station, subject to stock and access
player Sell = sell owned cargo to station, subject to buyer and ownership

Gross production and gross consumption determine trade direction; net surplus is not an eligibility gate. A station can manufacture a good and still consume more than it produces. A factory may buy an ingredient without offering it back as retail merchandise. The same policy feeds the live exchange, visited commodity directory and generic catalogue. Buy-price columns describe player purchases; sell-price columns describe player sale proceeds.

Each station has its own size, delivery lead time, exports, inputs, imports and transit goods. Seasons represent procurement and production schedules, including at airless stations.

Ingredients become outputs

Reviewed process capacities determine output, ingredient use and final demand.

P0, g=∑jBg, j×xj
I0, g=∑jAg, j×xj
Dg=∑j(Bg, j−Ag, j)×xj
Bᵍʲ
output lots of good g per batch j
Aᵍʲ
input lots of good g per batch j
xⱼ
reviewed batches per day
Exact calculation details
process capacity x[j] = reviewed mean main-output batches/day
B[g,j] = output and coproduct coefficients; A[g,j] = ingredient coefficients
P₀[station,g] = sum(B[g,j] × x[j]) for local processes
factoryInputs₀[station,g] = sum(A[g,j] × x[j])
finalDemand[g] = sum((B[g,j] − A[g,j]) × x[j]) across the network
C₀[station,g] = factoryInputs₀[station,g] + reviewed local share × finalDemand[g]
sum(P₀[g]) = sum(C₀[g]) for each good
primary inputs = final use + unrecovered process waste, at full-cycle balance

The reviewed 348-process capacity solution uses complete mass recipes and explicit alternate recovery routes. Coefficients are physical 250 kg lots, independent of value tier and inventory scaling. Intermediate mean output is 10,000 lots/day and higher-tier mean output is 3,000, supported by 20,000 mean primary collection lots. Gross repeated-stage output is 33,000, not 33,000 newly extracted lots. Ores and brines have no artificial household final-use sink. Each station has eight unrestricted core goods with at least five mean net-surplus lots/day under full supply; real inventories and inputs still limit sales and output.

The production cycle

All three planned output tiers follow the same 1,440-day phase.

ω=2×π1440
P(t)=μ×(1+0.4×cos(ω×(t−600)))
t
game day
μ
tier mean: 20,000 / 10,000 / 3,000 lots per day
ω
angular frequency in radians per day
Exact calculation details
ω = 2π / 1440
primary daily output = 20000 + 8000 × cos(ω × (day − 600))
intermediate daily output = 10000 + 4000 × cos(ω × (day − 600))
higher-tier daily output = 3000 + 1200 × cos(ω × (day − 600))
final-use preference peaks on day720; amplitude is40% of its mean
C(t) = actual process ingredients + actual final use
instantaneous amplitude = daily amplitude / sinc(ω / 2)

Whole-day integrals use peaks at 600.5 and 720.5 in continuous time. All process capacity schedules use a common phase; the old sector-offset calendar is no longer active. Final demand retains the 120-day lag, without forcing factory inputs onto an unrelated wave. The 12,000–28,000, 6,000–14,000 and 1,800–4,200 limits are planned full-supply outputs. Actual disrupted production may fall below them. Every ingredient is reserved from opening stock plus arrivals; progressive filling redistributes shared inputs when a competing line is blocked elsewhere. Newly produced goods cannot feed another plant until the following daily tick. Outputs and useful coproducts are credited once, with waste recorded separately. Electrolysis oxygen is now real saleable coproduct stock, not a second free oxygen batch. Household final use and client-delivery credits are settled only once. See all process recipes.

Capacity stages · whole-network daily output
StageMinimumMeanMaximum
Reserves absorb the seasonal imbalance

Seasonal production and use build or draw down the reserve around its mean.

B(t)=B̄+X×sin(ω×t)−Y×cos(ω×t)ω
Reserve ratio=B(t)B̄
B(t)
reference stock in lots
B̄
mean reserve
X, Y
seasonal flow coefficients
ω
angular frequency
Exact calculation details
P(t) − C(t) = P₀ − C₀ + X × cos(ωt) + Y × sin(ωt)
amplitude = hypot(X, Y) / ω
reserveMean = amplitude + max(80 / inventoryScale, 3 × C₀, P₀ − C₀)
B(t) = reserveMean + [X × sin(ωt) − Y × cos(ωt)] / ω
meanNetShipments = C₀ − P₀
B(d+1) − B(d) = integral(P − C, d..d+1) + meanNetShipments
reserve = B(t) / reserveMean

Each station/good retains at least 32 physical lots at its seasonal minimum. The entire seasonal residual builds or draws down reserves. A source-matched route plan balances every station and good. The reference includes starting reserves and a working pipeline, rather than assuming a newly founded empty economy. Means balance over 1,440 whole game days; local or daily flows need not balance. Positive net shipment flow is incoming. Fractional lots remain physical reserves.

Availability is bounded

The station’s role and its reserve ratio set the availability diagnostic.

A=clamp(ar×ρ,0.25,1.70)
aᵣ
role availability
ρ
reserve divided by mean reserve
Exact calculation details
roleAvailability = export ? 1.48 : transit ? 1.18 : import ? 1.15 : 0.72
availability = clamp(roleAvailability × reserve, 0.25, 1.70)
rolePrice = export ? 0.94 : transit ? 1.00 : import ? 1.06 : 0.88
F = clamp(rolePrice + (1 − reserve) × 0.06, 0.88, 1.14)
S = clamp((1 − reserve) × 0.12 + 0.035 × ((C₀ > 0 ? C / C₀ − 1 : 0)), −0.12, 0.12)

S below −0.025 is “Resupply season”; above 0.025 is “Demand season”; the remainder is between cycles. F and S are retained supply diagnostics; availability still sets the spread tier. F and S are not additional price multipliers on top of the storage-fill curve.

Station size and delivery lead times
StationSizeLead · days
06 / Inventory

Stock, bonding curves and freight

One physical stock balance

Production and received cargo add stock; actual use and dispatch remove it.

qd+1=qd+P+R−(C+D)
Retail available=min(⌊q−protected stock⌋,daily allocation−already bought)
qd
opening stock on day d
P, C
actual production and use
R, D
cargo received and dispatched
Exact calculation details
quantity[d+1] = quantity[d] + actualProduction − actualUse
                + receivedCargo − dispatchedCargo
nominal route = matching producer net surplus → consumer shortfall
route capacity = 2 × planned mean daily shipment
route lead = ceil(destination lead × 0.25) in the same system,
             otherwise destination lead (at least 1 day)
extra request = min(source excess / route lead, destination shortfall / route lead)
dispatch = min(real source stock, nominal + extra request, route capacity)
protected = 3 days of factory inputs + 2 days of final use
retail allocation = max(8, floor(2 × (planned daily production + mean net imports)))
available = min(floor(quantity − protected), retail allocation − already bought today)
buy n: quantity − n; sell n: quantity + n

Every received shipment has a matching earlier source withdrawal. Freight stays in transit for the full route delay. A verified blockade suspends departures and holds arriving goods in transit until the route reopens; an unconfirmed statistical report does not destroy cargo. Missing inputs curtail factory output; households cannot consume absent goods. Ordinary routes have no invented random losses. Restricted dealers, player cargo losses and discarded process by-products remain separate, explicit channels.

Fleet trades, warehouse trades and ordinary client pickups use the same physical station/product pool. There is no independent reserve reset or unlimited restock. Surplus production continues to accumulate if routes close; sales are rejected at the storage safety limit rather than silently deleting overflow. Earlier v43, v44, v45, v47, v48 and v50 v2 market books retain their exact physical stock and freight on upgrade, including compact pipelines and shipments on closed routes. New capacity affects subsequent production, never owned cargo or cash. New commodity opening reserves are recorded separately as introduced stock; they do not refill the existing32goods or invent an old shipment. Only market deviations and losslessly compressed pending shipments are saved; R1 runs and the v51 D1 dictionary preserve exact Float64 quantities, with bounded station, good and route counts. Reading the board never advances time. Existing v1 exchange receipts retain their old evolution through migration day; owned cargo, basis, contracts and money are preserved.

The S-curve is centered at half of each station/product’s storage capacity. Equal stock fractions either side of 50% have equal and opposite deviations from the center price before rounding and spread. Empty storage reaches the upper reference limit, and full storage reaches the lower limit. Operating reserves still guide procurement and commercial needs, independently of this price midpoint. Seasonal production, use and shipments move the physical stock along this one curve; no seasonal price shock is added on top.

Explore the full centered stock-price curve. The chart runs from 0 to Max with a dashed 50% midpoint. Quantities are 250 kg net lots; ship holds, packaging and manufacturing ratios retain their physical meaning. Each lot clears at its own marginal half-lot price, so split orders settle identically and reversing a purchase crosses the spread. Liberation premiums remain capped below the ask at the matching sale midpoint. Real shipments can close price gaps; later production, use and replenishment can reopen them. Route expenses determine actual profit.

Physical station storage

Each station/product has a stable storage ceiling: max(100 lots, ceil(1.25 × highest planned seasonal inventory)). Production tapers above 90% occupancy including committed inbound shipments, and every batch must fit all coproducts before consuming ingredients. Incoming cargo reserves room, full stores defer unloading, and new dispatch cannot exceed uncommitted receiving space. Exchange sales, Max and Sell all respect physical room and the remaining daily buying allowance. The allowance is two days of mean consumption plus one day of net export production, multiplied by inventory scale and a coverage factor clamped from .05 to1.5. Signed procurement reserves its receiving quantities. Buying and selling cannot reset the same-day counters. These finite commercial budgets do not refill or remove physical goods. Existing excess is retained and worked down through use and outgoing trade.

Ordinary client freight

Acceptance removes each product from available source stock, loads compatible active holds, and freezes terms. Clients consume deliveries: destination exchange stock is unchanged at handover. Delivered lots offset subsequent local final-use demand, so the receiving client is not counted twice; this does not offset industrial recipe inputs. Client cargo cannot be sold, donated or counted as collateral. Late, lost or abandoned freight follows the signed restitution and breach terms. Surviving cargo stays sealed client property with no owned purchase basis. Only explicit theft converts retained cargo into owned goods after full restitution and the breach fee are billed.

TierLots / productsEarned Navigation or Commerce levelLicensed destinationsActive ships
Parcel6 / 1021
Mixed freight24 / 2141
Regional freight96 / 3281
Fleet charter320 / 43162

Total active capacity must support the tier. Actual free compatible holds and real source stock are rechecked atomically at acceptance. Regional licences, discovered goods and operating ship capabilities remain enforced. The board matches actual source surplus above local reserves to receiving shortages and expected use, less inbound consignments and unused demand credits. It offers up to six distinct destinations, one shipment each. Active same-origin routes remain reserved across refreshes; each route/cycle permits one booking. Freight commission comes from station margin after the quoted operating budget. The source bid and destination ask are internal acquisition/invoice references, distinct from a player’s source-ask/destination-bid arbitrage. Risk, receiving urgency, duration, product handling and existing support affect the share within its cap. Expenses accrue from actual departures and are shared across carried cargo, preventing duplicate reimbursement. Capital and a percentage of cargo replacement value are not paid as expenses.

Freight commission has a profit cap

The captain receives a contextual share of the pool, subject to a cap relative to the station’s retained profit.

Π=max(0,invoice−source cost−expense ceiling)
c=⌊Π×s1+s⌋
c≤⌊0.25×(Π−c)⌋
Π
positive pool after acquisition and the expense ceiling
s
contextual share, capped at 0.25
c
captain commission
Π − c
station retained profit
Exact calculation details
source cost = sum(source bid total for every product)
receiving invoice = sum(destination ask total for every product)
expenses ceiling = loaded reference hull operating costs
pool = max(0, receiving invoice - source cost - expenses ceiling)
share = min(0.25, (0.08 + 0.10*risk + 0.04*urgency
                   + 0.02*min(1,routeDays/180) + 0.01*(products-1)/3) * support * captain)
commission = floor(pool * share / (1 + share))
station retained profit = pool - commission
commission <= floor(station retained profit * 0.25)
payment = commission + min(expenses ceiling, recorded allocated voyage expenses)
missing restitution = sum(ceil(locked product replacement value * units lost / original units))
ordinary breach = missing restitution + signed breach fee
new breach fee = max(100, ceil(station retained profit * 0.10))
theft = full locked replacement value + breach fee; available funds then charter debt

Freight and navigation share actual voyage risk = 1 − (1 − corridor chance) × (1 − approach chance), capped at 0.55. Origin, flight duration, belt and regional exposure affect the corridor; destination exposure affects the approach. Confirmed destination blockades have pricing risk 1 and force an encounter before docking. Thirty-day public traffic samples adjust actual forecasts: deviation = clamp((reports − expected reports)/(samples + 30), −0.04, 0.04), fading linearly over 120 days from issue to projected arrival. Public circulars describe station approaches without personal creditor or loadout effects; your voyage may also include confirmed intelligence and creditor exposure. Both raids, one raid or no raid can occur. A corridor contact saves and interrupts the remaining flight before arrival. Accepted freight terms never reprice.

Unaccepted freight deadlines stay fixed to the dispatch issue date plus the loaded reference flight and clearance and 90 days. The board hides an offer once the current loaded fleet would arrive after that deadline; acceptance rechecks before stock changes. Delivery on the due date is allowed. Signed jobs expire once the calendar passes the deadline, including elapsed transit and incident delays.

07 / Alternative markets

Discreet dealers and canteen traders

Restricted dealer quotes

Private exchange cycles

Private-channel stock and demand replenish on deterministic fourteen-day cycles.

k=⌊d14⌋
Remaining stock=initial stock−b+s
Remaining demand=initial demand−s+b
d
game day
k
cycle index
b, s
lots bought and sold by the captain
Exact calculation details
cycle = floor(day / 14)
h = H64('illicit:' + station + ':' + item + ':' + cycle)
open = eligible supplier AND h mod 100 < 64
initial stock = open AND floor(h / 101) mod 5 ≠ 0 ? 2 + floor(h / 503) mod 11 : 0
initial demand = open AND floor(h / 211) mod 5 ≠ 0 ? 4 + floor(h / 719) mod 17 : 0
remaining stock = initial stock − bought + sold
remaining demand = initial demand − sold + bought
hp = H64('illicit-price:' + station + ':' + item + ':' + cycle)
mid = round(base × (0.80 + (hp mod 70) / 100))
spread = original dealer tier (8%, 4%, 1.5%) using initial stock / 8
buy = ceil(mid × (1 + spread)); sell = floor(mid × (1 − spread))
next refresh = (cycle + 1) × 14

The multiplier ranges from 0.80 to 1.49. Eligibility, open status and remaining demand still govern whether a transaction is possible. Viewing the dealer again does not reroll the cycle.

Visiting cargo factors

Traveller bid and ask

Traveller quotes apply fixed purchase and sale factors to base value.

pask=⌈1.12×b⌉
pbid=⌊0.88×b⌋
b
base value in credits
Exact calculation details
buy = ceil(base × 1.12); sell = floor(base × 0.88)
stock = 3 + floor(seed / 271) mod 6 − bought + sold
demand = 4 + floor(seed / 313) mod 5 − sold + bought

Traveller visits are intermittent. Their fixed spread differs from ordinary exchange supply tiers.

Cargo-screening packages

PackagePrice · crMass · t
Finite screening-package stock

Each package receives a deterministic small stock allocation.

Stock=1+⌊z359+42×i⌋mod3−b
z
visit seed
i
package index
b
packages already bought
Exact calculation details
stock for package index i = 1 + floor(seed / (359 + i × 42)) mod 3 − bought

Only visiting canteen cargo traders sell these. One package of each type covers the arriving active fleet for one inspection; warehouse storage does not activate protection.

08 / Outfitting

Supplies, fittings and supporting services

Ammunition and spares

Regular weapon rounds cost 20 cr each, missiles 90 cr and torpedoes 240 cr. Magazine and hold capacity limit orders.

Engineering spares

Distance sets the baseline; the captain’s discount applies before upward rounding.

p=⌈p0×(1−d)−ε⌉
p₀
distance-adjusted baseline
d
captain spare discount
ε
rounding guard: 10⁻⁹
Exact calculation details
distanceFactor = 1 + min(1, max(0, systemAU − 1) × 0.025)
spareBaseline = ceil(180 × distanceFactor / 10) × 10
sparePrice = ceil(spareBaseline × (1 − captainSpareDiscount) − 10⁻⁹)

The engineer background supplies a 10% spare discount.

Fuel

Propellant cost

Fuel is charged on the purchased mass after the applicable discount.

C=⌈max(0,m×p×(1−d)−ε)⌉
m
fuel purchased, in tonnes
p
station price per tonne
d
discount
ε
rounding guard: 10⁻⁸
Exact calculation details
fuelCost = ceil(max(0, tonnes × stationFuelPrice × (1 − discount) − 10⁻⁸))

An eligible Petrel at ≥50% integrity receives 8% off at Callisto, Rhea, Ceres and Earth High. Fleet refuelling applies the discount to the eligible Petrel’s fuel portion; other fuel uses the station baseline.

Installed fittings and physical crates

Upgrade cost by level

The reviewed module rate multiplies the rounded hull-price basis and level factor.

C=round(⌈H200⌉×200×r×0.005×ℓ)
H
hull price
r
module rate
ℓ
level multiplier: 1, 2 or 4
Exact calculation details
stepCost = round(ceil(hullPrice / 200) × 200 × moduleRate × 0.005 × levelMultiplier)
levelMultiplier = 1, 2, 4 for levels 1, 2, 3
installed value = sum(stepCost for every installed level)
field installation fee = ceil(crate purchase price × 0.05)

The crate purchase costs the same as its fitting step. Field installation also consumes one Crane spare and one game day. Hulls have their listed class price; stock and experience determine availability.

ModuleRate

Repairs

Service discounts

Local standing includes one quarter of wider standing, before the score is bounded.

Effective standing=clamp(l+round(0.25×w),−100,100)
l
local score
w
wider score
Exact calculation details
effectiveStanding = clamp(localScore + round(widerScore × 0.25), −100, 100)
standingDiscount = clamp((homeStation ? 0.20 : 0)
                 + (effectiveStanding ≥ 20 ? 0.10 : effectiveStanding ≤ −20 ? −0.10 : 0), −0.10, 0.30)
serviceDiscount = clamp(standingDiscount + projectBonus + localKestrelBonus, −0.10, 0.30)
Hull repairs

Discounts combine multiplicatively; the repaired integrity shortfall determines the bill.

d=1−(1−ds)×(1−dc)
C=max(0,⌈(100−h)×u×(1−d)−ε⌉)
h
current integrity percentage
u
unit repair cost
dₛ, d꜀
service and captain discounts
ε
rounding guard: 10⁻⁸
Exact calculation details
unit = max(10, ceil(hullPrice × 0.0005))
combinedDiscount = 1 − (1 − serviceDiscount) × (1 − captainRepairDiscount)
cost = max(0, ceil((100 − integrity) × unit × (1 − combinedDiscount) − 10⁻⁸))

Service discount is local-standing terms plus a qualifying project concession (5%) and, for a qualifying local Kestrel, 5%, clamped to −10%…30%. The Kestrel bonus requires Earth or Moon, at least three local deliveries and standing score ≥10. Project concessions must be current and at least stage 3. Captain repair discounts combine multiplicatively.

Warehouse bays

Warehouse purchase

Eligible reductions are applied before the captain’s discount and rounding.

C=max(1,⌈(F−Rp−Rh)×(1−d)−ε⌉)
F
base bay fee
Rₚ, Rₕ
eligible project and hull reductions
d
captain warehouse discount
ε
rounding guard: 10⁻⁹
Exact calculation details
projectReduction = qualifying final project ? floor(baseFee × 0.05) : 0
PeregrineReduction = eligible ? min(5,000, floor(baseFee × 0.15)) : 0
bayFee = max(1, ceil((baseFee − projectReduction − PeregrineReduction)
                    × (1 − captainWarehouseDiscount) − 10⁻⁹))

A bay is 10 tonnes, purchased once without recurring rent. The Peregrine must be the flagship at ≥50% integrity with nonnegative effective local standing. Quartermasters receive a 10% warehouse discount.

Warehouse tenant leases

Canteen introductions offer fixed 14-, 30- or 60-day terms. Tenant goods occupy real space but remain outside owned inventory, collateral and net worth. Capacity, goods, terms and the offer’s 30-day cycle determine availability; no player save is used by this reference.

Warehouse lease return

The ordinary lease combines a time-proportional property return and a capped cargo component.

Rordinary=⌈A×0.24×t365.25+min(A×0.12,V×0.003)×t30⌉
A
allocated property value
V
cargo value
t
term in game days
Exact calculation details
allocated property = station bay price × cargo units / 40
ordinary rent = ceil(allocated property × 0.24 × term / 365.25
              + min(allocated property × 0.12, cargo value × 0.003) × term / 30)
shared cap = serviceReward(local serviceRouteCost, cargoValue,
                           risk = restricted ? 0.05 : 0.005)
restricted rent = ceil(ordinary rent × 3
                + min(shared cap × 0.8, cargo value × 0.012) × term / 30)
quoted rent = max(10, min(shared cap, ordinary or restricted rent))
restricted seizure liability = min(cargo value, quoted rent × 2)

Cargo value uses the cycle-opening local buy quote, with the existing discreet-dealer quote for restricted goods. Rent settles into the station bank on collection; full deposit accounts retain a pending payment. Weekly checks use normal customs selection, trust and detection rules. Matching warehouse packing is consumed per selected inspection and reduces detection. Seizure forfeits rent and bills the fixed liability to that station’s deposits first, then credit. Client lots cannot be sold or counted as owned assets.

Reserve berth fees

Berth fees settle locally

Deposits pay the fee first; the remainder becomes branch credit.

Deposit debit=min(D,F)
Credit charge=F−min(D,F)
F
daily berth fee
D
available local deposit
Exact calculation details
daily reserve fee = sum(station daily rate for each chargeable reserve ship)
fee for elapsed days = sum(daily reserve fee for each elapsed day)
deposit debit = min(local deposit, daily fee)
credit charge = daily fee − deposit debit
auction threshold = local branch credit limit × 1.10
auction order = lowest current liquidation value first
auction debt payment = min(proceeds, remaining branch debt)
surplus deposit = proceeds − debt payment

Rates are fixed per station, from 1 to 5 cr per ship per day. Reserve ships at your home base are free. Assigned escorts, embarked craft and towed hulls do not pay a separate reserve fee. Fees bill the bank at each reserve ship’s actual station every day: deposits first, then floating-rate branch credit. Earlier fixed agreements remain separate. Interest accrues before that day’s bill. Above 110% of the branch limit, local reserves are auctioned from lowest liquidation value to highest until local debt is cleared or no reserves remain; surplus becomes a deposit at that bank. Sold hulls stop accruing fees. Cash departure costs exclude these bank-billed fees. The Fleet overview and voyage estimate use the same daily rates. Active visiting ships keep their separate docking and launch-window charges.

StationReserve berth · cr / day
09 / Special quotes

Relationship offers, relics and recovered antiquities

Personal supply offers

A personal supply offer

The discounted purchase remains at least one credit above the ordinary sale quote.

p=max(ps+1,⌈pb×(1−d)⌉)
pᵦ
today’s buy quote
pₛ
today’s sell quote
d
relationship discount
Exact calculation details
unit = max(todaySell + 1, ceil(todayBuy × (1 − discount)))
discount = 3% at relationship tier 1; 5% at tier 2
order quantity = 2

An offer appears only when its unit price is below today’s buy quote; offers are limited by relationship tier.

Named relics from travellers

Relic dealer quotes

The selling reference is 45% of catalogue value.

psell=⌊V×0.45⌋
V
catalogue relic value
Exact calculation details
buy = ceil(relicBase × (0.85 + (floor(seed / 193) mod 31) / 100))
sell / recorded liquidation value = floor(relicBase × 0.45)

The buy multiplier ranges from 0.85 to 1.15. This is separate from recovered-case appraisal.

RelicBase · cr

Recovered cases

Antiquity appraisal

Condition and authenticity determine the appraisal basis.

V=round((2500+100×c)×α)
c
condition score
α
authenticity factor: 0.50 / 1.00 / 0.15
Exact calculation details
authenticityFactor = unappraised ? 0.50 : genuine ? 1.00 : 0.15
base = round((2,500 + condition × 100) × authenticityFactor)
bid = floor(base × (scholarStation ? 1.10 : 0.85))

Condition is 0…100. Scholar stations have science, archives or survey specialties. Appraisal costs 150 cr and one day. Legal custody affects seizure and eligibility, rather than directly multiplying the bid.

10 / Catalogue

Baseline cycle lows, highs and local balance

These generic daily snapshots describe undisturbed public seasonal reserves. Player shipments and local liberation premiums can move actual voyage quotes outside this baseline range. No active voyage, private inventory or trading strategy is imported into the reference distributions.

Maximum gain, loss and quote frequency

Extremes of the quote populations

These compare the best and worst observed buy/sell quotes, before journey costs.

Gmax=max(0,Bmax−Amin)
Lmax=min(0,Bmin−Amax)
Amin, Amax
lowest and highest buy quotes
Bmin, Bmax
lowest and highest sell quotes
Exact calculation details
max gain = max(0, highest sell − lowest buy)
max loss = min(0, lowest sell − highest buy)
gain % = max gain / lowest buy × 100
loss % = max loss / highest buy × 100

P(max gain quote pair) = count(lowest-buy exchange quotes) / count(all buy quotes)
                      × count(highest-sell exchange quotes) / count(all sell quotes)
P(max loss quote pair) = count(highest-buy exchange quotes) / count(all buy quotes)
                      × count(lowest-sell exchange quotes) / count(all sell quotes)

Amounts are per traded unit and exclude fuel, provisions, fees, repairs and losses in transit. Percentages use the purchase price for that outcome. If all price pairs lose money, maximum gain is 0; if all pairs profit, maximum loss is 0. Missing buy or sell prices give N/A.

Quote frequency assumes two independent, uniform selections from the matching exchange station/day observations across the complete 1,440-day phase cycle. Each station/day counts once; buy observations include only stations that list the item, while sell observations include all accepting exchanges. This measures exact quoted extrema, not the probability of making a profitable journey. Actual journeys have ordered dates, travel costs, access and finite stock.

Typical gains, losses and their probabilities

The Return columns selector changes the leading value and sorting basis for all four return columns. Choose Credits first or Return % first, then click a gain/loss heading to sort. Switching basis preserves the selected column and direction. Both values remain visible and in CSV exports.

Expected gross trading margin

Break-even pairs contribute zero. The populations compare quote pairs, without a voyage-timing or transport-cost model.

M=sell−buy
E(M)=p+×μ++p−×μ−
M
sell quote minus buy quote
p₊, p₋
fractions of winning and losing pairs
μ₊, μ₋
mean margin within winning and losing pairs
Exact calculation details
pair margin = sell − buy
pair return % = (sell − buy) / buy × 100
N = listed-exchange buy observations × accepting-exchange sell observations
P(gain) = number of pairs with margin > 0 / N
P(loss) = number of pairs with margin < 0 / N
P(break even) = number of pairs with margin = 0 / N
Avg gain = sum(positive pair margins) / number of winning pairs
Avg loss = sum(negative pair margins) / number of losing pairs
Average % = mean of each winning / losing pair’s return percentage
Expected margin = P(gain) × Avg gain + P(loss) × Avg loss

The average columns describe ordinary winning and losing quote pairs, using all daily price observations rather than exceptional top/bottom 10% tails. Each station/day counts once across the complete repeating cycle. Frequently quoted prices receive proportionally more weight. The displayed percentage is the average individual return on purchase price, not a return calculated from mean prices.

The frequency below each average is its share of all quote pairs, including break-even pairs in the denominator. Gain, loss and break-even probabilities sum to 100%. If a population contains no winners or no losers, that conditional average is N/A with 0% of pairs. Unsupported markets and missing buy/sell populations show N/A without a probability.

These are exact results for the stated model of two independent, uniformly selected exchange station/day observations. They are not a forecast for a particular route, ship or trading strategy. Departures, travel times, stock, licences and running costs are excluded. Traveller and restricted-dealer availability has no defined weight here, so those channels are excluded. Weighted histograms and cumulative sums calculate the results without allocating billions of quote pairs.

Daily buy and sell price distributions

The final column pools one daily quote per station across every day of the 1,440-day pricing cycle, separately for purchases and sales. Buy quotes include stations listing that good; sell quotes include all accepting exchanges. Each available station-day has equal weight. Matching market-access and item filters determine which exchange rows contribute. Histograms retain the exact count at every quoted price, so a price quoted on 100 days contributes 100 observations.

Daily quote distributions

Each eligible station-day observation has equal weight over the complete cycle.

μ=∑knk×pkN
σ2=∑knk×(pk−μ)2N
σ=σ2
pₖ
observed price
nₖ
number of observations at that price
N
total observations
μ, σ
population mean and standard deviation
Exact calculation details
Buy population = { ask(station, day) for every listed station, day = 0…1,439 }
Sell population = { bid(station, day) for every accepting station, day = 0…1,439 }
N = number of station-day observations on that side
mean price = Σ(price × count) / N
population variance = Σ(count × (price − mean)²) / N
standard deviation = sqrt(population variance)
median = middle price, or average of the two middle prices when N is even
bin frequency = observations in that price bin / N
at/below = count(quote ≤ marker price) / N
at/above = count(quote ≥ marker price) / N

The solid cyan curve is Buy; the dashed gold curve is Sell. Both use the same horizontal credit-price scale and vertical frequency scale within that good. The Return columns selector affects gain/loss columns only; price curves always use credits. Each side is normalized to its own quote count. A sell-only selection still has a sell curve, with no fabricated buy observations. Intermittent travellers, restricted dealers and equipment offers have no daily availability distribution and contribute no invented observations.

Hover, focus or click markers for the exact minimum, maximum, mean, median and ±1, ±2 and ±3 population standard deviations, plus the share of daily quotes at or below/above that price. The two shares can overlap at tied prices. A low buy percentile helps identify an unusually cheap purchase quote; a high sell percentile identifies an unusually high bid. These frequencies describe public prices, not transaction volume or the probability of making a trade.

The drawing uses 128 common price bins, light mass-conserving local smoothing and shape-preserving cubic interpolation. It is an empirical price-frequency curve, not a fitted bell curve. Means, medians, extrema and deviations use the unsmoothed integer quotes. No density extends beyond a side’s observed minimum or maximum. Deviation markers beyond quoted support are labeled outside the quoted range; negative theoretical markers sit at the zero-price edge. Axis limits may extend beyond the observed quotes to accommodate those markers.

Holding goods allows you to choose when to sell. These curves show how frequently prices occur over a full cycle; they do not preserve timing order or estimate the wait until a target price returns. Travel, stock, access, storage, bank interest and other carrying costs still affect the result. The existing gain/loss amounts and their frequencies remain separate independent quote-pair comparisons. Their random-pair probabilities are not the success odds of a patient trading strategy. Repeating additional years verifies the recurring model but adds no new independent pricing phases.

For the current repeating seasonal model, checking every distinct daily phase covers an unlimited run. The pricing cycle lasts 1,440 game days, so integer daily phases repeat every 1,440 days. A calendar game year remains 365.25 days for annual interest and operating costs.

Net local production

The net physical flow is converted from 250 kg lots into tonnes.

Net tonnes/day=0.25×E(P(d)−C(d))
P(d), C(d)
daily production and consumption in lots
E
mean over the reference cycle
Exact calculation details
lowBuy = min(buy(day)); highBuy = max(buy(day))
lowSell = min(sell(day)); highSell = max(sell(day))
for day = 0…1,439

item summary low = minimum of matching source-row lows
item summary high = maximum of matching source-row highs

net tonnes / day = mean(P(day) − C(day)) × 0.25
intensity = abs(mean(P(day) − C(day))) / stationSize
rate = High at intensity ≥ 0.8; Medium at ≥ 0.4; Low otherwise

Net balance is mean production minus consumption multiplied by the item’s physical inventory scale. It excludes incoming and outgoing shipments. Positive means surplus, negative means consumption. A net magnitude below 0.000001 units/day is shown as N/A.

Item summaries apply visible filters across matching stations. If ordinary exchange rows are present, their daily quotes supply all four extrema, gain/loss statistics and curves. Private dealer envelopes remain visible in station rows; a private-only selection has its own range with no invented daily probability. Each of the four extrema is independent: the lowest buy and highest sell may occur in different places and on different days. Unavailable prices remain N/A.

Restricted-dealer bounds enumerate the 70 permitted price multipliers and stock/spread possibilities; they are a formula envelope, not a guarantee every joint combination is visited. Traveller, equipment and antiquity rows use their own formulas above. Baseline supply prices exclude eligible captain, fleet and service discounts.

11 / Progression

Unlocks, order limits and profit

Commodity discovery

The highest qualifying milestone requires all three conditions.

Stage=max(milestones meeting XP ∧ visits ∧ licensed destinations)
Exact calculation details
commodity XP = earned Commerce XP
stage = highest milestone with XP, visits AND licensed destinations all satisfied
Commodity discovery milestones
StageXPVisitedLicensed

New captains begin with ten general-cargo goods. Materials, industrial, specialist and advanced accounts require earned Commerce and visits; Navigation alone never opens an account. Existing owned goods and sealed client goods stay visible and can be unloaded or settled. A product’s discovery level, handling compatibility and available destination access determine whether it can be traded. They do not increase or discount its daily exchange quote. Previously earned knowledge is preserved by the discovery records.

Cargo margin

Recorded purchase basis is allocated proportionally to the goods actually sold.

M=∑jrj−C
rⱼ
successive marginal sale proceeds
C
allocated purchase cost
Exact calculation details
buy maximum = min(available stock, affordable units, compatible free hold units)
sell maximum = min(owned units, physical receiving room, remaining daily buyer allowance)
sale revenue = sum of the successive marginal bids
allocated purchase cost = recorded proportional cost of the sold cargo
cargo margin = sale revenue − allocated purchase cost

The exchange voyage planner budgets the loaded route, replacement propellant, provisions, crew wages, berth charges, debt interest and explicit disruption/raider allowances. Dated observations are labelled separately from public outlooks. Scenario ranges are not statistical confidence intervals or promised prices; return manifests are budgeted separately. Max is a physical/affordable limit, not a recommendation.

Procurement buys captain-owned goods against finite receiving needs; supply circuits pay each stop once. No advance or client goods are supplied. Missed or abandoned stops reduce local trust; completed stops stay settled. Useful profitable supply to an undersupplied station builds a bounded customer record, not reputation for wash trading. Credit collateral counts only the currently funded buyer allowance, shared across local warehouses and ships.

Client-owned freight cannot be sold. Restricted dealers also enforce remaining purchase demand. Cargo with missing purchase records has an unknown margin. The displayed cargo margin excludes fuel, berth fees and repairs.

12 / Relics & crew

Relic leads, collectors and named crew

Crew costs and skill support

Daily wages scale with the hired tier. Matching relic and crew skill bonuses use the larger contribution.

Daily wage=⌈W90⌉×k
Effective skill=min(10,e+max(r,c))
W
seven-day local work budget
k
cost multiplier: 1 / 2 / 4
e
earned skill
r, c
matching relic and on-duty crew bonuses
Exact calculation details
relic liquidation reference = floor(catalogue relic value × 0.45)
collector bid = relic liquidation reference
collector demand = one of each named relic per station per 30-day cycle

route/work budget = serviceReward(serviceRouteCost(reference hull, itinerary, work days))
discovery contribution = max(150, relic liquidation reference − route/work budget)
battle victories required = max(3, ceil(relic liquidation reference / battle work budget))
public deliveries required = max(3, ceil(relic liquidation reference / local work budget))

crew local work budget = serviceReward(serviceRouteCost(Kestrel, local, 7 work days), work=7)
tier cost multiplier = Specialist 1, Veteran 2, Elite 4
crew signing fee = ceil(crew local work budget × 0.5) × tier cost multiplier
crew daily wage = ceil(crew local work budget / 90) × tier cost multiplier
crew transit wage = total retained daily wages × (flight days + launch wait days)
crew skill bonus = Specialist 1, Veteran 2, Elite 3 while on duty
effective skill = min(10, earned level + max(relic bonus, on-duty crew skill bonus))
freight premium = 1 + max(Commerce relic ? 0.05 : 0, on-duty quartermaster bonus × 0.05)
new freight share = min(0.25, contextual share rate × freight premium × captain freight modifier)
new freight payment = capped station-profit commission + recorded allocated travel expenses

Discovery uses a return journey and one work day. Raider-recovery work uses an Osprey reference, three work days, catalogue relic value as risk exposure and the existing 10% risk premium; only new defensive victories in ordinary travel count. Public service uses the local one-day Kestrel work budget and requires wider reputation 20 and local trust 10. These relic leads grant one named instrument, with no additional cash reward and no expiry. Each named relic can be granted free once per voyage; selling does not reset that provenance. Private canteen relic jobs also have no expiry; unrelated freight, passengers, transport and missions retain their deadlines. Formerly completed or failed outcomes stay historical.

Collectors at Meridian, Shackleton, Kepler, Occator, Callisto, Kraken and Triton use the same 45% relic bid as travelling antiquarians. Traveller prices, finite visit stock, all commodity quotes and all quote-pair distributions remain unchanged. Physical antiquity cases retain their condition, appraisal, ownership and custody rules.

Four named crew may be retained, with two on duty and at most one on-duty specialist per skill. The strongest crew or relic skill bonus applies, up to effective level 10, and never counts as earned XP or access qualifications. On-duty Specialist, Veteran and Elite quartermasters offer 5%, 10% and 15% on newly accepted freight-office fees. Only the strongest crew or relic premium applies; existing contracts stay fixed. The original four skill roles follow the effective-skill targeting, incident-risk, battle-repair and negotiation formulas, with normal caps. The current shared budget gives signing fees of 520 / 1,040 / 2,080 cr and daily wages of 12 / 24 / 48 cr for Specialist / Veteran / Elite respectively. Tier benefits are +1 / +2 / +3 effective skill. Legacy hires keep their original contract and +1 skill benefit. All retained members receive wages, including off-duty days. Transit wages are included and paid once in the departure quote. Stopped service and additional delay days invoice wages once; any cash shortfall uses the existing original-charter balance. Release at a station stops future wages without refunding the signing fee. Six possible monthly identities are divided randomly into three ten-day travel windows. Each person can make one brief visit, lasting three to seven days; at most two potential visitors belong to a window, and a probability draw determines whether each visits. It is normal to find no recruits. The original candidate identities and all signed agreements retain their generation rules; availability now depends on the encounter model below. These specialists provide operational benefits instead of an effective-skill bonus. Costs use the same tiered work budget. New matching crew and relic abilities use the strongest source; captain background and disposition modifiers remain additive, with normal risk, accuracy, heat and repair caps. Benefits stop when stood down, released, stowed or sold. Travel safety does not alter physical travel time or propulsion requirements.

Finding travelling recruits

Travelling specialist probability

The contextual factors multiply before the chance is bounded.

Visit chance=clamp(b×r×s×g,0.02,0.90)
b
career-based encounter baseline
r
role affinity
s
skill affinity
g
grade factor
Exact calculation details
experience = max(earned skill levels) / 10
career = clamp((voyages + deliveries + victories + aid + passenger charters
                + 3 × liberated stations + completed commissions) / 40, 0, 1)
ship history = clamp((distinct acquired classes − 1) / 7, 0, 1)
base = clamp(0.28 + 0.12 × experience + 0.14 × career
             + 0.10 × ship history + 0.08 × positive reputation / 100
             + 0.04 × positive local trust / 100
             − 0.12 × negative reputation / 100
             − 0.08 × clamp(freight failures / 4, 0, 1), 0.12, 0.78)
role affinity = 1 + 0.6 × clamp(relevant past events / 10, 0, 1)
                  + 0.35 if an acquired class suits this profession
skill affinity = 0.75 + 0.05 × earned level in the relevant skill
Specialist grade factor = 1
Veteran grade factor = 0.5 + 0.5 × experience + 0.1 × career
Elite grade factor = 0.12 + 0.7 × experience + 0.18 × career
visit chance = clamp(base × role affinity × skill affinity × grade factor, 0.02, 0.90)

Combat, liberation, rescue, passenger work, clinic work, repairs, trading and exploration favour related professions. Owned, previously purchased, sold and recorded lost classes contribute to ship history; classes discovered in a saved encounter register remain recorded after sale or loss. Only earned levels contribute, so relics and crew cannot manufacture recruitment progress. The first enquiry freezes the career context for that station and ten-day window. Later achievements affect future windows, while reopening, reloading, changing duties or returning to the same commons cannot reroll the frozen visit. Independent stable hashes choose the visitor order, arrival, duration and probability draw; they never consume combat or travel RNG. Appearance probabilities describe scheduled visits, not daily hiring success. Visitors can be absent before arrival, leave on the displayed date, and refuse to re-sign after release during the same monthly identity cycle. Hiring before departure uses the existing finite crew slots, signing fees and recurring wages. Existing hires remain aboard after their original visit ends.

Operational support

Matching support effects

Only on-duty crew and equipped relics contribute their matching ability.

Support=max(c,r)
Combined modifier=background+disposition+support
c
matching crew ability
r
matching equipped relic ability
Exact calculation details
crew ability = tier rank × specialty step, only while on duty
relic ability = catalogue power, only while equipped
support = max(matching crew ability, matching equipped relic ability)
combined modifier = captain background + disposition + support
travel fatigue step = 0.08; combat fatigue step = 0.08
incident-risk step = 0.06; belt-debris-risk step = 0.08
attack accuracy step = 0.01; guarding protection step = 0.015
laser heat reduction step = 1; combat hull repair step = 1

Fatigue and incident modifiers reduce the corresponding base amount multiplicatively. Accuracy is added before the normal hit-chance cap; guard protection reduces the guarded hull-damage multiplier subject to its floor. Cooling subtracts heat from laser shots; repair adds restored integrity, capped at full hull. Relic powers and every crew specialty are included in the generic formula data.

13 / Station liberation

Blockade liberation commissions

Distance and reports

Distance-based outbreak probability

The displayed distance relation approaches 60% and starts at 2.5% at Earth.

p=0.025+(0.60−0.025)×(1−exp(−r8))
r
distance from Earth, in AU
p
outbreak probability in the stated report model
Exact calculation details
report period = floor(ship-day / 30)
report day = report period × 30
distance = separation from Earth at report day, in AU
           (all Earth-group stations use distance 0)
chance = 0.025 + (0.60 − 0.025) × (1 − exp(−distance / 8))
new outbreak = stable voyage / target / period hash draw < chance
blockade = any outbreak since the saved world-start period, until liberated

The chance is a new outbreak draw per station per 30-day period, not a daily or per-journey roll. Earth-group stations use the protected local baseline; orbital phase sets other distances. A new outbreak persists until defeated, independently of mission acceptance. The world-start date is saved on the first successful action after this mechanic is installed (day zero for new captains), so older voyages do not inherit years of previously unmodelled outbreaks. Each station’s stable draws are independent of travel/combat randomness. Refreshes, forecasts, reloads and accepting or declining a commission cannot reroll them.

Liberation commission payment

The reviewed route, work and combat reserve feed the shared reward quote.

Payment=100×⌈R100⌉
R
shared service reward for the quoted terms
Exact calculation details
threat = 1 for orbit distance ≤ 2 AU; 2 for ≤ 12 AU; otherwise 3
reference patrol = Osprey / Gannet / Gyrfalcon for threats 1 / 2 / 3
work days = threat + 1
route budget = serviceRouteCost(reference patrol, target, returnTrip=true, workDays)
combat reserve = ceil(reference hull value × 0.03)
               + local engineering spare price × max(1, ceil(reference dry mass / 25))
payment = ceil(serviceReward(route budget, cargoValue=reference hull value,
                            work=work days, risk=0.1, extra=combat reserve) / 100) × 100

The two nearest eligible licensed destinations are checked for station blockades. An authority may have no commission; accepting one secures the existing quoted payment. Travelling to a blockaded station immediately launches the same actual tactical battle, accepted commission or not, before docking, customs, delivery handover or station services. Victory must defeat the entire hostile formation. An accepted or withdrawn commission for that target is cleared by this battle and pays its original reward once at the issuer; an uncommissioned encounter has no invented authority payment or combat bounty. Every station can be liberated once per voyage. Unrelated battles, retreats, surrender and dispersal do not count.

After a failed attempt the fleet remains outside the closed docks. Retry the blockade or explicitly contract recovery to the departure station. Recovery uses the actual fleet’s return-route propellant, provisions, launch-window cost, 900 cr per operational hull and physical route days; it is paid once from cash with ordinary credit fallback. Existing combat damage, lost hulls and cargo, emergency stabilization, crew wages, passage time, interest, berths and deadlines continue. It does not grant access to the blockaded exchange.

Post-liberation exchange recovery

Post-liberation recovery bid

The temporary uplift decays over thirty days and stays below the ordinary ask.

r=0.20×(1−a30)
Brecovery=max(B,min(A−1,⌊B×(1+r×w)⌋))
a
days since liberation, within 0 ≤ a < 30
w
bounded demand weight
A, B
ordinary ask and bid
Exact calculation details
age = ship-day − liberation day
recovery factor = 0.20 × (1 − age / 30), for 0 ≤ age < 30; otherwise 0
demand weight = clamp(1 + (local consumption − local production)
                           / max(1, consumption + production), 0.5, 1.5)
recovery bid = max(ordinary bid,
                   min(ordinary ask − 1,
                       floor(ordinary bid × (1 + recovery factor × demand weight))))

The premium is local, conditional and strongest for net consumers, fading over 30 days. It applies only to ordinary exchange goods, including owned warehouse stock sold through the exchange. Contraband, relics, ship sales, freight/mission payments and supplier prices retain their existing rules. The recovery sell quote stays below the matching marginal ask, preventing a local buy/resell profit or XP loop as reserves change. Finite market stock, owned cargo, client custody and purchase basis remain enforced. The ordinary baseline cache is kept separate from player recovery quotes. The generic dashboard retains its approved unconditional daily-cycle figures and distributions; these conditional voyage outcomes are described here rather than mixed into those statistics.

14 / Reputation

Reputation and station reports

Reputation becomes harder near the top

The required public progress per score point includes a quadratic term above seventy.

h(s)=400+20×max(0,s)+10×max(0,s−70)2
s
current public reputation score
h(s)
progress needed for the next point
Exact calculation details
public step(s) = 400 + 20 × max(0,s) + 10 × max(0,s−70)²
local step(s) = 200 + 10 × max(0,s) + 5 × max(0,s−60)²
endorsement = clamp(1 + acting station trust / 100, 0.5, 1.5)
public progress += round(base positive award × 100 × endorsement)
local progress += base positive award × 100
while progress ≥ step(current score) and support allows:
    subtract step; increase score by 1
retain at most step(current score)−1 unspent progress
public ceiling = 90 without three stations at local trust 20
               = 97 without six stations at local trust 30
               = 99 without ten stations at local trust 40
               = 100 with all those endorsements

These replace flat positive score awards; their original weights still distinguish deliveries (3), first clinic aid (5), victories (4), repeat clinic supply (2) and traffic/research reports (1), before captain modifiers. Negative awards apply immediately at the existing magnitude and erase partial progress. Scores remain integers from −100 to 100; existing earned scores/history are preserved. Wider reputation still contributes 25% to effective local reception; public/local customs trust remains 75%/25%. Service discounts, bank review and introductions use their existing bounded standing rules. Ordinary daily exchange prices do not change.

A canteen/commons reputation conversation can spread a recorded public deed or substantial local service/misconduct from another station. Reports expire after 180 days; an account reaches at most three other stations once each, and each station considers one account per 30 days. Same-day accounts of the same sign from the same origin share one dissemination limit. Positive reports contribute base 1 public and base 2 local progress; negative reports cost up to 1 public and 2 local points immediately. Receipts persist across reloads and contacts. Gossip never becomes a new source, and praise dated on or before newer misconduct cannot mask it. No new account means no score change. Drinks, browsing and refreshing never grant reputation.

Trading work, credit and scheduled hulls

One persistent work record pools known sale margins and recorded operating costs across ships, warehouses, split orders and reloads. Departure settles the preceding work; stationary trading settles on its next sale after 30 days. A profitable result earns up to 20 Commerce XP, with no new allowance per click. Client work retains its own existing rewards.

New-charter emergency headroom is 3,000 cr above the financed starter-hull balance. Expansion seasoning is clamp((profitable voyages + recorded legacy voyages − 80) / 40, 0, 1). Earned net operating income, eligible repayments and recoverable assets support expansion only in proportion to seasoning. The asset ceiling and local branch ceiling still apply; borrowed cash cannot support itself. Conservative shared batch liquidation replaces first-unit bid multiplication.

Basic Swift, Kestrel, Heron and Peregrine batches are guaranteed but finite at qualified suppliers. One sold-out basic hull may be reserved for the next class batch, with no deposit and full catalogue price due at collection. Specialist scarcity remains.

Finite blockades last 21–45 days in 180-day station slots. Reports, shipping and arrival encounters share a daily episode schedule, with first-year Earth corridor protection and post-victory cooldown. Accepted authority payments still require player victory and can never be claimed twice.

14 / Credit

Daily rate momentum, fixed loans and trading demand

Public wholesale conditions are sampled each ship-day. A daily economic target changes acceleration and velocity; it does not overwrite the rate.

Accumulation at daily quoted rates

With no intervening cash flows, multiply the balance by the accumulation factor across the elapsed days.

as,t=∏d = s, …, t−1(1+id)1365.25
vs,t=1as,t
Vt=Vs×as,t
id
annual effective quote applicable on day d
aₛ,ₜ
accumulation from day s to day t
vₛ,ₜ
corresponding actuarial discount factor
Vₛ, Vₜ
starting and ending balance
Exact calculation details
F(d) = 0.026 + 0.020 sin(2πd / 1440) + 0.006 sin(2πd / 330)
B = mean[(production − consumption) / max(1, production + consumption)]
    over listed goods; C = max(0, −B)
T = sum[min(1, best positive exporter-to-consumer gross margin)]
    / max(1, surplus goods)
R = regional legacy loan baseline − 0.04
O = Moon .003; Earth high orbit .001; other moons .0015; else 0
Loan target = max(.012, F + .010 + .4R + .5O + .003C + .002T)
Deposit target = clamp(F − .006 + .2R + O + .005C + .003T, .002, F + .008)
Baseline spread target = Loan target − Deposit target
For rate level x and daily velocity v:
  a = clamp(.0144(target − x) − .24v, −.000025, +.000025)
  v = clamp(v + a, −.00035, +.00035)
  x = x + v
The same damped update smooths the baseline spread.
Momentum = clamp(rate velocity / .00035, −1, +1)
Credit spread = clamp(smoothed baseline spread × (1 + .35 × Momentum), .008, .040)
Floating = round4(max(.012, rate level))
Deposit = round4(max(.002, Floating − Credit spread))
Deposit ceiling = lowest current network floating quote − .001
Final deposit = min(Deposit, Deposit ceiling)
L = clamp((station resupply lead days − 24) / 86, 0, 1)
S = clamp((22 − station size) / 19, 0, 1)
Branch locking premium = .0025L + .0025S
Fixed premium = round4(.015 + .003 min(1, R / .062) + .002C + branch locking premium)
Fixed quote = round4(Floating + Fixed premium)
Regional baselines: Mercury .067, Venus .058, Earth .040,
Mars .060, Ceres .073, Jupiter .078, Saturn .085, Uranus .094, Neptune .102
Daily interest factor = (1 + applicable annual quote)^(elapsed days / 365.25)
Cross-day factor = product of the applicable daily factors

Production and consumption are the exchange’s seasonal physical flows; each listed good receives one normalized vote. Export working-capital demand uses the best positive gross consumer bid versus exporter ask, excluding restricted cargo, private discounts, freight fees and voyage costs. Station risk baselines, size and resupply lead settings remain fixed profiles; the goods signals and funding conditions are sampled daily. A stronger upward rate velocity widens the deposit/loan spread proportionally, while a stronger downward velocity narrows it. The cross-branch ceiling can further reduce a deposit quote to preserve the no-instant-carry rule. Small changes can round to the same displayed rate.

Each quote is reconstructed from at most 240 preceding daily targets, initialized at the first target with zero velocity. The bounded warm-up avoids dependence on which date or branch was opened first; no growing rate history is saved. Only public seasonal summaries, a bounded target cache and eight completed quotes are cached. Opening pages, player balances, trade perturbations, reputation and refresh do not reroll public rates. Reputation still affects borrowing limits.

A fixed loan locks its own annual quote for that draw; later draws use current terms and never enlarge an old cheap agreement. The station-specific 1.5–2.5-point annual locking premium remains separate from the momentum-sensitive deposit/loan spread. There is no upfront points charge or early repayment fee. Original fixed contracts and the 4% charter retain their signed terms. Floating loans and deposits use every elapsed daily quote, including during long voyages, without changing already recorded balances or elapsed history. Repayments settle highest current rates first.

Every current floating loan exceeds every current deposit yield, preventing an immediate funded-deposit loop. Older fixed borrowing can still cost less than a later deposit yield. Net carry must account for interest paid during travel, fuel, provisions, berths and other liabilities. Deposits remain branch-local and cash in transit earns no deposit interest. Gross goods margins are funding-demand signals, not promised returns.

Reference

Notation and reference source

Effective interest i and discount v follow Society of Actuaries financial-mathematics notation. Here, a denotes accumulation between the stated dates, and v is its reciprocal. Accumulation examples assume no intervening cash flows. The year basis is 365.25 game days.

All amounts are credits unless stated. Exchange lots are 250 kg. Percentages in equations use decimals: 8% = 0.08. ceil rounds up, floor rounds down, round selects the nearest integer (positive half values round up); exp, ln, sqrt, cos and tanh are the standard mathematical functions. clamp(x, lo, hi) limits x to that interval. “mod” is the nonnegative remainder for the positive hash values used here. Small 10⁻⁸ / 10⁻⁹ offsets prevent floating-point rounding from adding an unwanted credit or removing a stock unit.

Deterministic integer hashes

Hashes apply a fixed-width wrap after each multiplication; the original character and byte handling remains in the details.

hk+1=(hk⊕b)×pmod2m
m
bit width: 32 or 64
p
the stated hash multiplier
b
character code or UTF-8 byte, as specified
Exact calculation details
H32: start 2,166,136,261; for each character c:
     h = unsigned32(imul(h XOR charCode(c), 16,777,619))
H64: start 1,469,598,103,934,665,603; for each UTF-8 byte b:
     h = unsigned64((h XOR b) × 1,099,511,628,211)

Hashes make station offsets and trader cycles deterministic. Trader seeds belong to that visit; reopening the interface does not generate a new draw.

Approved pricing baseline. Tables and examples are frozen to the reviewed economy revision. No player save is read.

Back to top ↑