Skip to main content

Quote Profiles

Overview

A QuoteProfile (KsQuoteEngine.QuoteProfile) groups instruments together and provides shared tier-level settings. Every instrument belongs to a profile via its profileName field in Static Data Server. If no profile is explicitly assigned, the instrument uses the _DEFAULT profile.

Quote Engine maintains one QuoteProfile per (profile name, tier) pair. For a system configured with 3 tiers, each profile name will have three QuoteProfile records — one per tier.

Remember to configure the priceSource for each QuoteProfile - Quote Engine uses this field to decide what prices to use to produce quotes

QuoteProfile Fields

FieldDescriptionExample
nameProfile name. Read-only after creation.BOOK001
tierTier number (1…n). Read-only.2
enabledWhen false, all instruments in this profile and tier are disabled. Acts as a group-level kill switch.
A quote is only enabled if the master, profile, and instrument controls are all true.
true
firmWhen true, quotes for this profile/tier are published as firm (binding).
A quote is only firm if the master, profile, and instrument controls are all true.
true
priceSourceNamed price source to subscribe to for this profile's instruments. Must match an entry in KS_QE_PRICE_SOURCES._PRICE_ENGINE
positionSourceNamed position source for size strategies that require live book positions (TARGET, REDUCE). Must match an entry in KS_QE_POSITION_SOURCES. Leave blank if not required._POSITION_SERVER
spreadMultiplierMultiplier applied to the bid/ask spread width for all instruments in this tier. See Multiplier Calculation.1.0
sizeMultiplierMultiplier applied to the quoted size for all instruments in this tier. See Multiplier Calculation.1.0
referenceTierTier number to reference for syncing QuoteControl settings. Set to 0 (or omit) to disable reference sync. See Reference Tier Sync.1
QuoteControlReferenceFlagsControls which QuoteControl fields are synced from the referenceTier. See Reference Tier Sync.(see below)

Default QuoteControlReferenceFlags

FlagDefault
enabledtrue
firmtrue
bidAskSpreadtrue
bidAskSizeStrategyfalse
bidAskSizeCapfalse
targetPositionfalse

By default, enabled, firm, and bidAskSpread are synced from the reference tier (if set). Size-related flags are off, so each tier manages its own sizes independently.

Multiplier Calculation

Spread Multiplier

The effective spread multiplier applied to each quote is the product of the master profile's multiplier and the QuoteProfile's own multiplier:

effectiveSpreadMultiplier = _MASTER_.spreadMultiplier × quoteProfile.spreadMultiplier

The multiplier scales the width of the bid/ask spread relative to the mid price. A value of 1.0 leaves the spread unchanged; 2.0 doubles the width; 0.5 halves it.

Example — YIELD mode:

SettingValue
bidSpread50 bps
spreadMultiplier2.0
Mid yield4.50%

Step-by-step:

  1. Base bid yield: 4.50% + 0.50% = 5.00%
  2. Bid-to-mid deviation: 5.00% − 4.50% = 0.50%
  3. Scaled deviation: 0.50% × 2.0 = 1.00%
  4. Final bid yield: 4.50% + 1.00% = 5.50%

The multiplier is applied after the spread, amplifying the deviation from mid rather than just adding to the spread value. The mid quote itself is never affected by the spread multiplier.

Fast Market Use Case

The spread multiplier is useful for managing fast-market conditions. Setting quoteProfile.spreadMultiplier = 2.0 on the master profile doubles all quotes' spread widths instantly across all instruments — without touching any individual QuoteControl.

Size Multiplier

The effective size multiplier is similarly the product of the master and profile multipliers:

effectiveSizeMultiplier = _MASTER_.sizeMultiplier × quoteProfile.sizeMultiplier

For the FIXED strategy, quoted size is computed as:

quotedSize = sizeCap × effectiveSizeMultiplier

For example, a sizeCap = 2000 with sizeMultiplier = 0.5 produces a quoted size of 1000.

The size multiplier is particularly powerful when combined with referenceTier: set a common sizeCap on Tier 1 (used as reference) and use sizeMultiplier on Tier 2's profile to scale it without duplicating caps on every instrument.

Master Profile

A special profile named _MASTER_ (tier 0) provides platform-wide overrides for all quotes. It is automatically created on first startup with safe defaults.

Master SettingDefaultBehaviour
enabledfalseGlobal enable — must be set to true before any quotes are published
firmfalseGlobal firm flag
spreadMultiplier1.0Multiplied into every tier's effective spread multiplier
sizeMultiplier1.0Multiplied into every tier's effective size multiplier
warning

The master profile defaults to enabled=false. You must set it to true (via the Quote Profiles UI or an edit message) before Quote Engine will publish any enabled quotes.

Profile Auto-Creation

Quote Profiles are created automatically whenever a new Instrument Profile arrives from Static Data Server. For each configured tier, Quote Engine creates a new QuoteProfile for that tier by copying from:

  1. Tier 1's QuoteProfile (if it already exists for that profile name) — new higher tiers inherit tier 1's settings
  2. The master profile — used as the fallback if no tier 1 profile exists yet

This means creating a new Instrument Profile in SDS automatically bootstraps Quote Engine with sensible defaults across all tiers.

New Instrument Defaults

When a new instrument joins a profile, Quote Engine creates per-tier QuoteControls by copying from the profile's default QuoteControl — the control whose instrumentId equals the profile name (e.g. BOOK001).

Edit the profile-level QuoteControl to pre-configure default spreads, size caps, and strategies for new instruments. See New Instrument Defaults.

Assigning a Profile to an Instrument

Profiles are assigned to instruments in Static Data Server, not in Quote Engine. The profileName field on an instrument determines which QuoteProfile tier the instrument belongs to.

When an instrument changes profile, Quote Engine automatically unsubscribes from the old profile's price topic and subscribes to the new one.