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
| Field | Description | Example |
|---|---|---|
| name | Profile name. Read-only after creation. | BOOK001 |
| tier | Tier number (1…n). Read-only. | 2 |
| enabled | When 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 |
| firm | When 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 |
| priceSource | Named price source to subscribe to for this profile's instruments. Must match an entry in KS_QE_PRICE_SOURCES. | _PRICE_ENGINE |
| positionSource | Named 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 |
| spreadMultiplier | Multiplier applied to the bid/ask spread width for all instruments in this tier. See Multiplier Calculation. | 1.0 |
| sizeMultiplier | Multiplier applied to the quoted size for all instruments in this tier. See Multiplier Calculation. | 1.0 |
| referenceTier | Tier number to reference for syncing QuoteControl settings. Set to 0 (or omit) to disable reference sync. See Reference Tier Sync. | 1 |
| QuoteControlReferenceFlags | Controls which QuoteControl fields are synced from the referenceTier. See Reference Tier Sync. | (see below) |
Default QuoteControlReferenceFlags
| Flag | Default |
|---|---|
enabled | true |
firm | true |
bidAskSpread | true |
bidAskSizeStrategy | false |
bidAskSizeCap | false |
targetPosition | false |
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:
| Setting | Value |
|---|---|
bidSpread | 50 bps |
spreadMultiplier | 2.0 |
| Mid yield | 4.50% |
Step-by-step:
- Base bid yield:
4.50% + 0.50% = 5.00% - Bid-to-mid deviation:
5.00% − 4.50% = 0.50% - Scaled deviation:
0.50% × 2.0 = 1.00% - 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.
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 Setting | Default | Behaviour |
|---|---|---|
enabled | false | Global enable — must be set to true before any quotes are published |
firm | false | Global firm flag |
spreadMultiplier | 1.0 | Multiplied into every tier's effective spread multiplier |
sizeMultiplier | 1.0 | Multiplied into every tier's effective size multiplier |
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:
- Tier 1's QuoteProfile (if it already exists for that profile name) — new higher tiers inherit tier 1's settings
- 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.