Open implementation · transpacific route

Chicago to Shanghai before the cable.

Goblin Cannon is Adam DePrince’s open implementation of a market-data path for the transpacific route. Its great circle peaks near 71°N—above the Arctic Circle and through the auroral oval. The steady-state 16QAM planning model is about 42 ms from Chicago to Shanghai. The software path is exercised in loopback and tests; no symbol has gone over the air. Putting it on air needs a partner, two sites, an RF chain, path-engineered antennas, and spectrum authorization.

Built by Adam DePrince Open implementation No over-air transmission yet

≈ cRadio propagation through the atmosphere is close to light speed in vacuum.
≈ ⅔ cLight propagates materially slower through the glass in an undersea cable.
~13.5 MHzThe intended HF target for an ionospheric path beyond the horizon.
Open sourceThe baseband, market-data path, controls, accounting, and tests are inspectable.

A longer-looking route can arrive first.

Undersea fiber pays twice: the signal travels slower inside glass, and the route follows cable landings and terrestrial networks rather than a straight market-to-market line.

HF skywave pays a different cost—the climb to the ionosphere, one or more skips, and a narrow, variable channel. But the wave travels through the atmosphere near c, and the geographic route can be far more direct. Goblin Cannon exists to turn that physical opening into a usable market-data feed.

The software keeps updates compact, sends continuously, and refuses to let an old queue consume a latency advantage. When airtime is scarce, the update with the highest value per on-air byte goes next.

The goal is the first useful price at the distant receiver—not bulk throughput, not a laboratory bitrate, and not a theoretical propagation number.

I built the stack. I can't fund the radio link.

Trading firms have run HF market-data links across the Atlantic for years under experimental authorizations. The FCC experimental filings are public. IEEE Spectrum and Radio World have covered the work. Their stacks are closed. I respect what they proved.

This is the open implementation. New York to London is the calibration against the known case. Commercial U.S.–Asia HF links exist. I found no prior published implementation and no prior published analysis of the Chicago-to-Shanghai route.

The full software path exists: modem, market-data path, auction, control plane, accounting, loopback, and tests. I have not transmitted one symbol over the air.

I am one guy in Vermont. Financially, I am a bug on the windshield of the firms already in this band.

Putting it on the air requires two sites, an RF chain, antennas engineered for the path, and spectrum authorization. Budget: TODO(adam): dollar figure. Equipment: TODO(adam): hardware list.

For U.S. testing, this needs a Part 5 experimental authorization; for commercial operation, the pending path is the coalition's petition for regular Part 90 operations, RM-11953, whose ECFS proceeding record was open on September 14, 2026 and recorded neither an NPRM date nor a Commission-decision date.

I can't fund it; you can.

A partner brings the funding, two operating sites, the RF chain, path-engineered antennas, and the spectrum-authorization work. I bring the open software stack, integration, test harness, and measurement. Start with the Goblin Reactor intake →

The transpacific route first. The known case second.

These are engineering predictions, not measured over-the-air results. They combine a transparent route model with the latency estimator asserted by the project’s unit tests.

10 / 24 kHz occupied profiles 8 / 19.2 ksym/s 5-byte delivery unit Rate-1/2 FEC 300 km virtual F-layer Steady-state; acquisition excluded

Channel widths. The 24 kHz occupied profile is a MIL-STD-188-110C Appendix D wideband HF channel width. The 10 kHz profile matches the transmitter bandwidth modeled at 20 kW in the coalition’s FCC technical study described by Radio World and included with the petition PDF. It keeps the estimator’s occupied-bandwidth ratio, so 10 kHz derives 8 ksym/s.

Transpacific path · northern vertex 71.534° N · four modeled skips

Chicago → Shanghai

Great-circle
11,357 km
Sky path
11,843 km
Propagation
39.503 ms
24 kHz robust planning profile16QAM · rate 1/2
FEC-adjusted rate
38.4 kbit/s
Stack model
2.083 ms
One-way total
41.586 ms
vs. glass floor
14.024 ms early
10 kHz planning profile16QAM · rate 1/2
FEC-adjusted rate
16.0 kbit/s
Stack model
5.000 ms
One-way total
44.503 ms
vs. glass floor
11.107 ms early
24 kHz deep-fade planning profileQPSK · rate 1/2
FEC-adjusted rate
19.2 kbit/s
Stack model
4.167 ms
One-way total
43.670 ms
vs. glass floor
11.941 ms early
Idealized great-circle fiber floor through glass 55.610 ms

Calibration against the known case · two modeled skips

New York → London

Great-circle
5,570 km
Sky path
5,814 km
Propagation
19.392 ms
24 kHz robust planning profile16QAM · rate 1/2
FEC-adjusted rate
38.4 kbit/s
Stack model
2.083 ms
One-way total
21.476 ms
vs. glass floor
5.800 ms early
10 kHz planning profile16QAM · rate 1/2
FEC-adjusted rate
16.0 kbit/s
Stack model
5.000 ms
One-way total
24.392 ms
vs. glass floor
2.883 ms early
24 kHz favorable-channel profile64QAM · rate 1/2
FEC-adjusted rate
57.6 kbit/s
Stack model
1.458 ms
One-way total
20.851 ms
vs. glass floor
6.425 ms early
Idealized great-circle fiber floor through glass 27.276 ms

As a consistency check—not a validation—STAC’s audit of RAFT’s Chicago → London HF Ultra Link reported a 24.8 ms mean during SLA hours; this route model gives about 22 ms for bare two-hop Chicago → London propagation over about 6,350 km, an audited residual of about 3 ms alongside this model’s 2.1 ms stack allowance, while the audited result includes RF group delay, acquisition, and terrestrial tails excluded here.

Stack model. The unit test constrains a five-byte delivery unit at 8 ksym/s to about 5.0 ms for 16QAM, and at 19.2 ksym/s to about 2.1 ms for 16QAM and about 1.5 ms for 64QAM. QPSK is derived from the same estimator. Rates are FEC-adjusted ceilings before framing, CRC, pilots, and acquisition overhead.

Route model. Sky distance uses a spherical Earth, a 300 km virtual reflection height, and equal-length skips. The Chicago–Shanghai great circle peaks near 71°N, above the Arctic Circle and through the auroral oval. The fiber floor uses the same great-circle distance at c/1.468—no cable detour, landing route, switching, or terrestrial tail—so the comparison is intentionally generous to fiber.

Not a link budget. On Chicago–Shanghai, auroral absorption is the primary channel risk where the great-circle path crosses the auroral oval. Constellation viability near 13.5 MHz also depends on time, season, solar conditions, antennas, power, noise, multipath, Doppler, and the actual allocation. These profiles say what the software path costs if the channel supports them.

Encode. Skip. Decode.

One reasonable reference profile makes the accounting concrete. The graphic below uses steady-state rate-1/2 16QAM in a 24 kHz occupied channel.

Reference 16QAM Rate 1/2 FEC 24 kHz occupied 19.2 ksym/s 5 input bytes → 80 coded bits → 20 symbols
01 TX application Not yet measured

Price intake + next-slot choice

Capture the quote, encode the bank-relative delta, and choose the highest-value waiting update.

02 Encode side about 1.0 ms

Frame + FEC + AES + map

One 20-symbol duration in the tested model covers the transmitter half of the encode/decode allowance.

03 ~13.5 MHz sky path 39.5 / 19.4 ms

Ionospheric propagation

Two modeled skips to London; four to Shanghai. RF front-end and channel group delay remain outside this estimate.

04 Decode side about 1.0 ms

Demap + AES + Viterbi + CRC

The receiver half of the model turns soft symbols back into a verified, delimiter-complete message.

05 RX application Not yet measured

Rebuild price + emit UDP

Apply the synchronized bank, enforce receiver permissions, publish locally, and record delivery.

Chicago → Shanghai modeled radio pathabout 41.6 ms
New York → London calibrationabout 21.5 ms

The estimator returns two times coded airtime; this graphic assigns about 1.0 ms of symbol-duration allowance to TX and about 1.0 ms to RX. Totals add the unit-tested 2.1 ms model to sky propagation. They exclude the two “not yet measured” application stages, RF hardware group delay, pilots, acquisition, and live channel effects.

Current value crosses first.

The transmitter sends immediately when it can. Under backpressure, it holds one candidate for the next slot. A new candidate either replaces that winner or is rejected. Old quotes do not form a waiting line.

  1. 01

    Encode a bank-relative delta.

    The market bridge subtracts the synchronized bank price. It sends the bank identifier, radio symbol, and signed delta in base-254 form. The framer later adds a four-byte CRC.

  2. 02

    Price the on-air bytes.

    The market bridge derives its shadow bid from displacement since the last sent price, recent price velocity, instrument weight, and billable length. The transmitter compares every submitted bid against payload length plus the CRC.

  3. 03

    Gate the next-slot bid.

    A client bid must fit its remaining budget. If the transmit queue is occupied, only one waiting winner remains. A higher bid per wire byte displaces it. A client winner is charged only when it is sent.

  4. 04

    Confirm delivery or refund.

    A matching receiver report closes the outstanding charge. A sent client bid with no match after the default one-second window is refunded by the accounting sweep.

80 cents beats 100.

The lower nominal bid wins because it occupies fewer wire bytes. The backed-up transmitter retains Candidate B as the single next-slot winner.

The accounting test follows the money.

A client starts with 1,000 cents. Sending a 300-cent bid reserves it and leaves 700 cents. A matching delivery report closes that charge. A later 300-cent bid leaves 400 cents; when it remains unconfirmed beyond one second, the refund returns the balance to 700 cents.

Receiver permissions, synchronized price banks, and health state travel through the control plane. The canonical terrestrial record reconciles what was sent with what the radio receiver reports. Decisions, deliveries, suspicions, and refunds are logged.

Physics creates the opening. Discipline keeps it.

Propagation speed is only the beginning. The rest of the system is built to avoid giving the advantage back through routing, batching, stale data, or unverifiable delivery.

The sky-path planning profiles are QPSK, 16QAM, and 64QAM. Higher orders remain in the modem for wire and loopback testing. They are not planned for skywave.

Near-cAtmospheric propagation
DirectNo cable-landing route
CompactBank-relative price deltas
CurrentOne waiting winner
ContinuousNo block batching
PlannedQPSK · 16QAM · 64QAM
VerifiedCRC and canonical matching
MeasuredEnd-to-end event ledger

Variable sky. Deterministic acceptance.

01

Weak samples become erasures.

Confidence stays visible through demapping, so the decoder can treat ambiguity as missing information instead of inventing a price.

02

Fades do not leak partial messages.

An erasure or CRC mismatch drops the damaged message and ignores the remainder until a clear delimiter restores the boundary.

03

Lost lock becomes reacquisition.

Pilot failure returns the receiver to search so a later schedule epoch can be acquired instead of extending corrupted state.

04

Stale control state closes the feed.

Missing heartbeats clear bank confidence; stale bases and disallowed symbols never become local quote packets.

05

A second path checks the sky path.

Receiver reports are matched against the canonical transmitted sequence, separating real delivery from possible injection or false acceptance.

Open software. Real sky.

Goblin Cannon opens the baseband modem, market-data path, prioritization, control plane, accounting, and measurement machinery. To race a cable, a deployment still needs two physical sites and an RF system engineered for the path.

The target near 13.5 MHz is a system-design objective, not blanket authorization to transmit. Frequency, power, bandwidth, emissions, and operating rights must match the license and jurisdiction at each site.

Build around the open core

  • RF hardware and site equipment: TODO(adam): hardware list
  • Path-specific propagation planning and channel characterization
  • Clocking and exchange-to-exchange latency measurement
  • Spectrum authorization and operational controls

Reproduce the path. Measure the race.

The repository contains the C++23 baseband library, sender and receiver, local loopback, control services, market-data adapters, accounting, and measurement tools. Prove the full software path locally, then connect the IQ stream to an RF chain built for the target route.

Goblin Cannon is a private, encrypted point-to-point link. It moves an operator's own feed between the operator's own sites; it is not a data-distribution service and does not redistribute anyone's data. The author tests against Massive.com data locally. Anyone using this software with market data is responsible for their own licensing with whatever vendor they use, including any redistribution agreements if their use goes beyond private encrypted transport. Not affiliated with or endorsed by Massive.com.

CMake 3.24+ C++23 x86_64 OpenSSL Protobuf gRPC RF hardware separate
~/goblin-cannon
$ git clone https://github.com/adamdeprince/goblin-cannon.git
$ cd goblin-cannon
$ cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
$ cmake --build build
$ ctest --test-dir build --output-on-failure

# Run the software loopback node
$ ./build/goblin_cannon_local_node