1. Source vs. derived data
Every price you see on Empty Leg Index falls into one of two categories.
Source data
The listed price, aircraft type, origin, destination, and departure time for every leg come directly from operator and broker listings. We aggregate across multiple sources, refresh every 15 minutes, and never modify the underlying values. When a listing's price changes, we record a snapshot in our price-history table — the raw material for the decay analysis below.
Derived data
Three numbers per listing are our estimates, computed using documented formulas and published reference tables:
- The estimated operator floor (section 2)
- The price-decay context for the route class (section 3)
- The wait-or-book recommendation derived from the two above (section 4)
We label these clearly throughout the product and never present them as quoted prices. Our estimates can be wrong — we publish the math so anyone, operators included, can challenge it.
2. The fuel-floor estimator
Concept
When an operator has committed to flying an aircraft on a one-way charter, the return leg is a sunk cost. Crew is paid; the airframe will move. Any revenue on that leg is incremental. The operator's true minimum is the marginal cost of operating it: fuel, crew duty time, and ground handling at both ends.
We call this the operator floor. The estimate is conservative — a price the operator could rationally accept if no other revenue is available, not what they're targeting in negotiation.
The formula
estimated_floor = fuel_cost + crew_cost + ground_handling + positioning_buffer
where:
block_time_hours = (great_circle_distance / cruise_kts) × 1.10
fuel_burn_gal = block_time_hours × cruise_gph + reserve_gal
fuel_cost = fuel_burn_gal × jet_a_price_per_gal
crew_cost = aircraft.min_crew_cost_per_leg
ground_handling = origin_handling + landing_origin
+ destination_handling + landing_destination
positioning_buffer = if distance < 200nm: 0.10 × subtotal else 0Multiplier rationale
- 1.10 on block time — taxi, climb, descent, and ATC routing add roughly 8–12% over great-circle time. 1.10 is the median in published charter-quote data.
- Reserve fuel — 100 gal for light, scaling to 350 gal for ultra-long-range. Conservative interpretation of NBAA IFR reserves.
- Crew cost — represents marginal duty-time cost for a leg, not fully-loaded crew salary.
- Positioning buffer — under ~200 nm, fixed costs dominate. Adds 10% to the otherwise-calculated subtotal.
Display range and confidence
We display the floor as a range — floor × 0.92 to floor × 1.08 — to communicate uncertainty honestly.
- High — all reference data was direct. No fallbacks.
- Medium — exactly one fallback (e.g., FBO category default).
- Low — multiple fallbacks, OR distance < 100 nm. Treat as ballpark; we suppress recommendations in this case.
Reference data — aircraft (0 models)
Cruise GPH and KTS values are conservative interpretations of book performance figures; real-world burns are typically 5–10% higher.
Show 0 aircraft profiles
| Model | Category | GPH | KTS | Reserve | Crew $ | Seats |
|---|
Reference data — airports (0 airports)
Costs are typical-range estimates from published FBO rate cards, cross-referenced with operator-reported figures. Airports without explicit data fall through to category averages.
Show 0 airport profiles
| ICAO | Name | Category | Handling (low - high) | Landing |
|---|
Jet-A fuel price
We currently use a single national-average Jet-A price, refreshed weekly. As of 2026-04-27, we're using $6.25/gallon.(stale — refresh pending) Regional pricing refinement is on the roadmap.
3. The price-decay curve
Empty leg prices typically soften as the departure date approaches. The closer to departure, the less time the operator has to find another buyer, and the more willing they are to settle near floor. We measure this directly.
Method
hours_to_departure = listing.departure_at - observation.observed_at price_index = observation.price / listing.first_observed_price route_class = aircraft_category × distance_band distance bands: short (<500 nm), medium (500-1500 nm), long (>1500 nm) buckets: >168h, 72-168h, 48-72h, 24-48h, 12-24h, <12h
Sample-size threshold
We only display a curve when the route class has at least 50 unique completed listings in the last 12 months. Below that threshold, the median is too noisy.
Outlier handling
We exclude observations where price_index < 0.4 or price_index > 1.5 — these are typically data errors. Negative hours_to_departure values past 2h are excluded as scrape-timing errors.
Current curves (0 route classes, 0 listings analyzed)
No route classes have sufficient sample size yet. Curves appear once we accumulate 50+ completed listings per class.
4. Wait-or-book recommendations
Given a listing's floor estimate, the historical decay curve for its route class, and time remaining to departure, we produce one of five recommendations: BOOK NOW, WAIT, WAIT or NEGOTIATE, FAIR, or INSUFFICIENT DATA.
Decision tree
- If floor confidence is low, return INSUFFICIENT DATA.
- If listed price is at or below estimated floor, return BOOK NOW with note “exceptional deal.”
- If < 6 hours to departure:
- Listed within 25% of floor → BOOK NOW
- Else → WAIT or NEGOTIATE (operators rarely refuse cash offers in this window)
- If listed price is within 15% of floor → BOOK NOW (“already strong price”).
- If we don't have a usable decay curve for this route class:
- Spread < 30% above floor → FAIR
- Spread ≥ 30% above floor → WAIT
- Compute expected remaining decay from the curve. If expected final spread is at least 10 percentage points below current spread → WAIT. Otherwise → FAIR.
What “BOOK NOW” means
It does not mean we predict you'll save money.It means: this listing is already at or near the price we'd expect it to settle at, given current market conditions for its route class. Further drops are unlikely to be meaningful, and waiting risks losing the deal. A recommendation, not a guarantee.
What “WAIT” means
Listings in this route class typically drop in price between now and departure. Based on historical medians, you can expect a meaningfully lower price closer to the date. It does not mean a specific listing will drop — only that the central tendency for legs like this is to soften.
Sellout-risk numbers
The Founding tier displays an estimated risk of the listing selling before the typical decay window elapses. v1 uses static estimates by departure-time bucket (3% at >7 days out, scaling to 30% under 12 hours). v1.1 will replace these with empirical rates measured against booking outcomes once we have ≥3 months of recommendation-served data.
Calibration tracking
Every recommendation we serve is logged with its inputs and timestamp. We periodically measure how often WAIT recommendations were followed by actual price drops (and BOOK NOW recommendations were followed by listings being booked). When we update the decision rules based on this feedback, the change appears in the changelog.
5. What we don't claim
The honest list of where our methodology is limited:
- We don't predict individual listings. Our recommendations describe central tendencies; the specific listing may behave differently.
- We don't model operator-specific economics. Newer fleets, owner-operators, and partner deadhead deals can run leaner. Our floor is an industry-average baseline.
- Our floor is an estimate, not a quote. Actual willingness to sell depends on factors we don't observe (other inventory, scheduling, customer relationships).
- We don't account for special services. Catering, specific FBO selection, alternate routing — none of this is in the floor.
- The decay-curve method assumes the past predicts the present. A market shock would invalidate near-term curves until we accumulate new data.
- We don't model sales-tax differences across jurisdictions. Listed prices may or may not include tax; we display them as-is.
Operator corrections welcome
We get reference data wrong sometimes. If you're an operator and you see a number that's off — handling fees at a specific FBO, fuel-burn rates for an aircraft, anything — email [email protected] with your correction. We'll acknowledge within 48 hours, investigate, and credit you in the changelog.
6. Methodology changelog
Every change to a formula, multiplier, or reference dataset is logged here. We also log dataset refreshes (e.g., quarterly aircraft profile review).
v1.0.0 — 2026-04 — Initial publication
- Published fuel-floor estimator with reference data for 0 aircraft and 0 airports.
- Published decay curves with weekly compute job (Sun 23:00 UTC).
- Published wait-or-book recommendation logic with calibration logging.
- Sellout-risk numbers seeded with static placeholders pending empirical replacement.
- Negotiation-guidance block added for Insider+ tier (per-listing opening offer + acceptance zone).
- Seasonality intelligence: 20 corridor signals refreshed weekly (Sun 23:30 UTC).
Pre-v1.0 — Internal development
- Methodology developed and tested against historical listing data.
- Source data pipeline established with 15-minute refresh.
- 3-tier listing provenance scoring (Direct > Verified > Aggregator).