Main ConceptsFormula Prices
Main Concepts

Formula Prices in Jules

How Jules stores, configures, and computes index-based formula prices — field reference, prefill logic, and all 15 formula codes.

Formula Prices in Jules

How to configure formula price templates, understand which fields are pre-filled, and apply the right formula code to your trades.


Table of Contents

  1. Overview
  2. Formula Templates
  3. The 15 Formula Codes and Their Equations
  4. Formula Parameters Reference
  5. How Formulas Flow Through Operations
  6. Prefill Logic
  7. Price Fixation
  8. Key Business Rules
  9. Glossary

Overview

Jules supports index-based (formula) pricing for recyclable commodity trades. Instead of a fixed price, a formula price references a live or published market index and applies mathematical adjustments (differential, recovery, other costs) to compute the final transaction price.

The formula pricing system has two levels:

LevelWherePurpose
Formula templateConfigured in SettingsDefines the equation and optional default parameters per organization
Operation QualityOn each tradeThe specific formula and parameters applied to a trade leg

When a formula price is set on an operation quality, it is automatically propagated to all containers linked to that trade.


Formula Templates

Formula templates define the structure of formula pricing for your organization. Each template specifies:

  • Which formula equation to use (from the 15 standard formula codes)
  • An optional display label
  • Default market index and pricing settings that pre-populate when the template is selected

Template fields

FieldDescriptionAuto-set?
Formula codeThe equation used to compute the priceYes (from standard list)
Display labelDefault name shown to usersYes (from code)
Custom labelYour organization's custom name for this formulaManual
Primary indexDefault market index (e.g., LME Copper, TSI HMS)Recommended to set
Secondary indexSecond market index (for dual-index formulas)For dual-index formulas
Index optionalityIf two periods apply, use HIGHEST or LOWEST resultOptional
Price modeHow to read the index value (see below)Recommended to set
Price typeWhich published quote to useRecommended to set
PromptLinked futures contract monthOptional

The 15 Formula Codes and Their Equations

Each formula code defines a specific algebraic equation. The system ships with 15 standard codes; they cannot be deleted, but organizations can create additional custom formulas with the same code (non-unique code is supported).

CodeDisplayEquation
INDEXIndexPrice = Index
INDEX_MINUS_DIFFERENTIALIndex - DifferentialPrice = Index − Differential
INDEX_MINUS_DIFFERENTIAL_MINUS_OTHER_COSTSIndex - Differential - Other costsPrice = Index − Differential − OtherCosts
INDEX_MINUS_DIFFERENTIAL_TIMES_RECOVERY(Index - Differential) * RecoveryPrice = (Index − Differential) × Recovery
INDEX_MINUS_DIFFERENTIAL_TIMES_RECOVERY_MINUS_OTHER_COSTS[(Index - Differential) * Recovery] - Other costsPrice = [(Index − Differential) × Recovery] − OtherCosts
INDEX_MINUS_BRACKETED_DIFFERENTIAL_TIMES_RECOVERY_MINUS_OTHER_COSTSIndex - (Differential * Recovery) - Other costsPrice = Index − (Differential × Recovery) − OtherCosts
INDEX_MINUS_OTHER_COSTSIndex - Other costsPrice = Index − OtherCosts
INDEX_PLUS_OTHER_COSTSIndex + Other costsPrice = Index + OtherCosts
INDEX_PLUS_OTHER_COST_1_PLUS_OTHER_COST_2Index + Other costs #1 + Other costs #2Price = Index + OtherCosts + OtherCosts2
INDEX_TIMES_RECOVERYIndex * RecoveryPrice = Index × Recovery
INDEX_TIMES_RECOVERY_MINUS_OTHER_COSTSIndex * Recovery - Other costsPrice = (Index × Recovery) − OtherCosts
INDEX_TIMES_RECOVERY_MINUS_UNITSIndex * (Recovery - Units)Price = Index × (Recovery − Units%)
INDEX_PLUS_INDEX_2_PLUS_OTHER_COSTSIndex + Index #2 + Other costsPrice = Index + Index2 + OtherCosts
INDEX_PLUS_INDEX_2_PLUS_OTHER_COSTS_CONTANGOIndex + Index #2 + Other costs + ContangoPrice = Index + Index2 + OtherCosts + Contango
INDEX_TIMES_RECOVERY_PLUS_INDEX_2_TIMES_RECOVERY_2_PLUS_OTHER_COSTSIndex * Recovery + Index #2 * Recovery #2 + Other costsPrice = (Index × Recovery) + (Index2 × Recovery2) + OtherCosts

Choosing the right formula


Formula Parameters Reference

These fields apply both on operation qualities and on containers (where they appear as separate buy-side and sell-side parameters).

Index selection

FieldDescriptionRequired by formula
FormulaThe selected formula templateAlways
Primary indexThe main market indexAlways
Secondary indexSecond market indexDual-index formulas
Index currencyCurrency of the index valueWhen converting units
Index unitUnit in which the index is quoted (T, MT, lb…)When converting units

Index value and adjustments

FieldDescriptionUsed in formula
Index valueFixed override for primary index valueOptional — overrides live index
Index value #2Fixed override for secondary index valueOptional
Index value %Percentage adjustment on primary indexOptional
Index value % #2Percentage on secondary indexOptional
DifferentialSubtracted/added spread vs indexFormulas with DIFFERENTIAL
RecoveryRecovery rate % for primary indexFormulas with RECOVERY
Recovery #2Recovery rate % for secondary indexDual-index with recovery
Other costsOther cost deduction/additionFormulas with OTHER_COSTS
Other costs #2Second other cost valueINDEX_PLUS_OTHER_COST_1_PLUS_OTHER_COST_2
Units %Units percentage deductionINDEX_TIMES_RECOVERY_MINUS_UNITS
ContangoContango adjustmentINDEX_PLUS_INDEX_2_PLUS_OTHER_COSTS_CONTANGO

Price mode — how the index value is read

Each index reference has a price mode that defines over what time range the index value is read:

ValueDescription
Single dayPrice from a single specific day
Average M-1Average over the prior calendar month
Average W-1Average over the prior week
Custom rangeCustom start/end date range
FixedA hardcoded fixed value (no live index lookup)

For a custom range, also set the start date and end date for each index.

Each index also has a second price mode used when optionality is set — the system takes the HIGHEST or LOWEST of the two modes.

Price type — which published value to use

ValueDescription
ClosingEnd-of-day closing price
OfficialOfficial published settlement
LiveLive/intraday quote
Market on closeMarket-on-close price

Quotational period (QP)

The QP defines the averaging window for the index over the shipment lifecycle.

FieldDescription
QP labelQP label (e.g., "M+1", "BL month", "arrival month")
QP start dateStart of the QP window
QP end dateEnd of the QP window
First reference eventEvent that marks the start of the QP (see below)
First QP daysNumber of days after the first reference event
Last reference eventEvent that marks the end of the QP
Last QP daysNumber of days after the last reference event
Period labelFree-text period label for primary index
Period label #2Free-text period label for secondary index
Timing noteFree-text timing note for primary index
Timing note #2Free-text timing note for secondary index

Reference date events:

SAILING_DATE, BOL_DATE, ARRIVAL_DATE, DEPARTURE_DATE, ORDER_DATE, DELIVERY_DATE, GATED_IN_DATE, LOADING_DATE, ETA, ETD, BL_DATE, TELEX_RELEASE_DATE

Prompt (for futures-based indices)

Prompts link an index to a specific futures contract month. Available prompts are loaded automatically per index when configuring a formula.

Temporary / provisional pricing

FieldDescription
Temporary priceMarks this price as provisional (the index has not yet been published)
Temporary price #2Same flag for secondary index value

When a price is marked as temporary, the index value acts as an estimate. Once the actual index is known, update the value and clear the temporary flag.

Display overrides

FieldDescription
PDF display nameCustom label shown on PDFs instead of the default formula code label

How Formulas Flow Through Operations

1. Operation Quality (trade level)

When creating or updating an operation quality, set the formula type to the chosen template. This defines the "standard" price for this trade leg. All the formula parameters above apply at this level.

2. Containers (per-container level)

Each container linked to an operation quality carries its own buy-side and sell-side formula parameters. These inherit from the operation quality and are updated automatically when the formula changes on the operation quality.

Auto-propagation rule: When the price formula changes on an operation quality (and the price type is INDEX), Jules automatically updates all containers linked to that operation quality to match the new formula.


Prefill Logic

When a user selects a formula template, the defaults stored on that template are pre-populated into the form fields. The fields that can be pre-populated from the template are:

  • Primary and secondary index
  • Index optionality settings
  • Price modes (primary and secondary, including alternative modes)
  • Prompts (primary and secondary, including alternative prompts)
  • Price types (primary and secondary, including alternative types)

Fields that are never prefilled (must always be set manually per trade):

  • Differential — specific to each deal
  • Recovery rates — material-specific
  • Other costs — deal-specific deductions
  • Index values — known only after index publication
  • Quotational period label and date fields — shipment-specific
  • Price fixation fields — set only after a price fixation event

Best practice: Fill as many defaults as possible on the formula template. For a commodity you trade regularly on LME closing with a 1-month average, set those defaults once — users will only need to enter the differential and other costs per trade.


Price Fixation

Some trades allow partial or full price fixation before the QP ends.

FieldDescription
Fixation typePercentage (fix a portion) or Absolute (fix a specific value)
Fixed valueThe fixed price value (for Absolute fixation)
Fixed percentagePercentage of quantity fixed (for Percentage fixation)
Fixation dateDate the price was fixed

These fields apply on both operation qualities and containers.


Key Business Rules

1. Multiple formulas, same equation

Multiple formulas can share the same equation code but have different default settings (e.g., two "Index minus Differential" formulas, one defaulting to LME Copper and another to LME Aluminium). They get different IDs so users can distinguish them in dropdowns.

2. Dual index support

Formulas with INDEX_2 in the code require both a primary and a secondary index to be set. The second index has its own full set of parameters (price mode, price type, recovery, etc.).

3. Optionality (HIGHEST / LOWEST)

When optionality is set, Jules computes the price using both price modes configured for an index, then takes the higher or lower result. This is common for "best-of-two-periods" pricing.

4. Auto-propagation scope

Auto-propagation only runs when the price type is INDEX on the operation quality. Fixed-price operations are not affected.

5. Temporary price workflow

  1. At trade creation, if the index is not yet published, mark the price as temporary and enter an estimated index value
  2. When the actual index is published, update the index value with the real figure and clear the temporary flag
  3. The final invoice uses the definitive index value

6. Multi-tenant isolation

Each organization has its own set of formula templates. Formulas configured for one client are never visible to another.


Glossary

TermDefinition
IndexA published market benchmark price (e.g., TSI, LME, Platts, RISI)
Formula codeThe algebraic equation code that defines how Index, Differential, Recovery, and Other Costs are combined
Formula templateA saved formula configuration — stores the equation code plus optional defaults that pre-populate new operation qualities
DifferentialA fixed spread added or subtracted from the index (e.g., −15 USD/T)
RecoveryA percentage representing the usable fraction of the material (e.g., 98% for high-grade scrap)
Other costsA fixed cost added or deducted from the formula (e.g., handling, freight, treatment charge)
ContangoA market structure premium used in some futures-based formulas
QP (Quotational Period)The time window over which index values are averaged to compute the final price
PromptA specific futures contract month linked to an index
Price modeHow the index value is read: single day, weekly average, monthly average, custom range, or fixed
Price typeWhich published quote to use: Closing, Official, Live, or Market-on-Close
OptionalityA mechanism to compute using two price modes and keep the highest (or lowest) result
Temporary priceA provisional price set before the index is published; replaced once the actual value is known
Price fixationLocking in a price (or a portion of it) before the QP ends
Operation QualityA line on an operation representing a specific material with its price, quantity, and terms
Container formulaThe buy-side and sell-side formula stored per container, inherited from and synchronized with the operation quality