- Published on
Trading Back Office and Settlement Systems — The Data Journey Across Front, Middle, and Back
- Authors

- Name
- Youngju Kim
- @fjvbn20031
- Introduction
- FO/MO/BO and the System Map
- Order to Execution to Clearing to Settlement: Flows by Product
- Position and PnL Management — Real-Time PnL and EOD Valuation
- The Risk Middle Office — Limits and VaR
- Confirmation and Reconciliation — Confirms, Affirms, Break Management
- Settlement Systems — DVP, KSD, BOK-Wire+
- SWIFT Message Flows — MT and MX
- Ledger Postings and the Accounting Interface
- Corporate Actions Processing
- When an Outage Is an Incident — The Settlement Fail Runbook
- Designing the Reconciliation Batch
- A Data Model Sketch
- Pitfalls and Anti-Patterns
- Build Checklist
- Closing Thoughts
- References
Introduction
When people say trading systems, they usually picture the glamorous front office — order execution, algo trading, the order book. But after a fill, there is a much longer journey before money and securities actually move: position updates, PnL calculation, confirmation, clearing, settlement instructions, ledger postings, and reconciliation. The middle office and back office systems own that journey.
The back office is unglamorous, but it is the area where an outage is immediately a financial incident. A settlement that slips by one day creates counterparty risk and penalties; an unresolved reconciliation break becomes a finding in the audit and the regulatory examination. This article follows a single equity, bond, or derivatives trade from execution through every system it touches until final settlement and accounting postings, and examines the controls and batches at work along the way. We also cover Korean market infrastructure context (Korea Exchange, Korea Securities Depository, and the Bank of Korea BOK-Wire+ system).
This article is a technical resource, not investment advice.
FO/MO/BO and the System Map
Trading division systems at brokers and banks are traditionally split into three zones.
+--------------------------------------------------------------------+
| FRONT OFFICE (FO) "creates the trade" |
| - OMS (order mgmt) / EMS (execution mgmt) / algo engines |
| - pricing, quoting, market data |
| - trader blotter (intraday activity) |
+---------------------------+----------------------------------------+
| execution events
v
+--------------------------------------------------------------------+
| MIDDLE OFFICE (MO) "controls the trade" |
| - trade capture / enrichment - accounts, fees, settlement details |
| - limit monitoring (position/credit/VaR), risk reporting |
| - real-time PnL, intraday position management |
| - confirmation, affirmation (institutional clients) |
+---------------------------+----------------------------------------+
| confirmed trades
v
+--------------------------------------------------------------------+
| BACK OFFICE (BO) "finishes the trade" |
| - settlement instruction generation, links to CSD/CCP/custodians |
| - ledger postings, accounting interface, fees and taxes |
| - reconciliation (positions/cash/trades), break management |
| - corporate actions, reporting, regulatory filings |
+--------------------------------------------------------------------+
The core principle is segregation of duties. The people who originate trades (FO) and the people who validate and settle them (MO/BO) must be separated in both the org chart and system entitlements. An architecture in which an FO trader can edit settlement data in the back office system is, by itself, an audit finding.
Order to Execution to Clearing to Settlement: Flows by Product
The end-to-end flow as a sequence:
Trader OMS/EMS Exchange/OTC MO (capture/ Clearing BO Depository/
| | | confirm) house (settlement) accounts
|--order----->|--route----->| | | | |
| |<--fill------| | | | |
| |--fill feed--------------->| | | |
| | | |--enrich/check->| | |
| | | |--send confirm-> (cpty) | |
| | | | |<--clearing--| |
| | | | |--netting--->| |
| | | | | |--instruct-->|
| | | | | |<--settled---|
| | | | | |--post/recon-|
Clearing and settlement structures differ by product.
| Aspect | Listed equities | Bonds | Listed derivatives | OTC derivatives |
|---|---|---|---|---|
| Execution venue | Exchange (KRX) | Mostly OTC plus inter-dealer government bond market | Derivatives market (KRX) | Bilateral contracts |
| Clearing | KRX CCP | Mostly bilateral, some CCP | KRX CCP | Some mandatory CCP clearing (IRS etc.) |
| Settlement cycle | T+2 (KRX equities) | Typically T+1, deal-dependent | Daily mark-to-market (margin) | Per contract terms (CSA collateral) |
| Settlement method | DVP via depository | DVP | Cash net settlement | Cash/collateral transfers |
| Key risk | Settlement fails | Fails, counterparty | Margin shortfalls | Counterparty credit, collateral disputes |
Design implication: split the trade model into a product-agnostic core (trade identifier, parties, quantity, amounts, dates) and product-specific extensions (underlying, expiry, and margin for derivatives; accrued interest for bonds). Above all, separate the dates — trade date, intended settlement date, actual settlement date — from day one. Untangling them later is painful.
Position and PnL Management — Real-Time PnL and EOD Valuation
Position keeping is conceptually simple: accumulate execution events per account and instrument. The hard part is PnL, which splits into two kinds.
Realized PnL
= profit fixed at the moment of sale
= (sale price - cost basis price) x quantity sold [cost basis: moving average etc.]
Unrealized PnL
= book profit on open positions
= (current valuation price - cost basis price) x open quantity
Intraday PnL
= change versus the prior-day official valuation
= realized PnL today + (today price - prior close price) x open quantity
+ PnL on positions opened today
Real-time PnL belongs to the middle office: join the execution stream with the market data stream and aggregate per trader, desk, and book. EOD (end-of-day) valuation, by contrast, is the official number owned by BO and risk. All positions are revalued at closing prices (under fair value standards), and these numbers feed the accounting ledger and regulatory reporting.
# Skeleton of an EOD valuation batch (conceptual)
from decimal import Decimal
def eod_valuation(positions, closing_prices, fx_rates, base_ccy="KRW"):
results = []
for pos in positions:
price = closing_prices.get(pos.instrument_id)
if price is None:
# Unpriceable instruments must go to an exception queue —
# never default them to zero
results.append(valuation_exception(pos, reason="NO_PRICE"))
continue
mv_local = Decimal(pos.quantity) * price.clean_price
if pos.instrument_type == "BOND":
mv_local += Decimal(pos.quantity) * price.accrued_interest
fx = fx_rates.get((pos.currency, base_ccy), Decimal("1"))
mv_base = mv_local * fx
unrealized = mv_base - pos.cost_basis_base
results.append(make_valuation(pos, mv_local, mv_base, unrealized,
price_source=price.source))
return results
Operational points:
- Price source priority and fallback: illiquid bonds and unlisted instruments lack closing prices, so you need model prices or prior-price fallback rules — and the source actually used must be recorded.
- Explaining FO estimate vs BO official PnL: the two numbers can differ (price snapshot timing, fee treatment). Differences above a threshold must be explained before close. This is the PnL explain process.
- Late adjustments: errors found after close are booked as same-day correcting entries, never by editing prior-day data. Closed business dates are immutable.
The Risk Middle Office — Limits and VaR
The other pillar of the middle office is risk control.
- Limit monitoring: position limits (instrument, sector, book), loss limits (intraday and cumulative), and credit limits (per-counterparty exposure) are watched in real time or near real time. The breach procedure (alert, explanation, forced unwind or not) must be defined as a system workflow.
- VaR (Value at Risk): an estimate of the maximum loss over a holding period (say one day) at a confidence level (say 99 percent). Methods include historical simulation, variance-covariance, and Monte Carlo. Whatever the method, the quality of position and market data drives the result. Computing VaR is the risk engine job, but the accuracy and timeliness of the position snapshot it consumes is a back office data quality problem.
- Backtesting: compare VaR estimates against realized PnL to validate the model — a procedure required under Basel market risk rules (including FRTB).
Confirmation and Reconciliation — Confirms, Affirms, Break Management
The most important control right after execution is trade confirmation: verifying that our record of the trade matches the counterparty record.
- Exchange-traded business is comparatively simple because exchange execution data is authoritative.
- OTC trades (bonds, OTC derivatives) require both parties to match the terms each recorded — via electronic confirmation platforms, SWIFT messages, or at worst fax and email handling.
- Institutional client trades add affirmation by the asset manager and allocation (splitting a block execution across multiple fund accounts).
Any mismatch found in confirmation or reconciliation is registered as a break and tracked until resolved.
Break lifecycle:
detected --> assigned (owner designated)
--> investigating (cause code classification)
--> resolved (correcting entry / counterparty fix / price fix ...)
--> closed (approver sign-off)
Key metric: open break count x aging x amount
High-value breaks older than 3 days auto-escalate
Settlement Systems — DVP, KSD, BOK-Wire+
Settlement is the moment securities and cash actually move. The core concept is DVP (Delivery versus Payment): delivery of securities and payment of cash are made mutually conditional, eliminating principal risk where only one leg completes. Under the BIS CPMI classification there are three DVP models.
| Model | Securities | Cash | Characteristics |
|---|---|---|---|
| DVP model 1 | Gross, trade by trade | Gross, trade by trade | Minimal principal risk, high liquidity needs |
| DVP model 2 | Gross, trade by trade | Net settlement | Securities immediate, cash netted at close |
| DVP model 3 | Net settlement | Net settlement | Best liquidity efficiency, high system dependence |
Korean market infrastructure:
- Korea Exchange (KRX): on-exchange matching and clearing (CCP). As central counterparty for listed equities and derivatives, it guarantees settlement.
- Korea Securities Depository (KSD): the central securities depository (CSD). Securities delivery happens via book-entry transfer; equities are managed under the electronic securities registration regime.
- Bank of Korea BOK-Wire+: the won large-value RTGS system. Final cash transfer occurs across current accounts at the Bank of Korea, and securities DVP is processed in linkage with KSD.
- Settlement cycle: the KRX equities market settles T+2 (two business days after trade date).
From the back office system perspective, settlement processing consists of:
confirmed trade
--> generate settlement instruction
- apply counterparty SSI (Standing Settlement Instructions)
--> transmit instruction (KSD link / via custodian over SWIFT for global)
--> track matching status (matched against counterparty instruction?)
--> monitor settlement date (intended vs actual)
--> settlement confirmed --> finalize ledger postings
--> on fail: settlement fail handling flow (below)
SSI master data quality determines the settlement STP (straight-through processing) rate. If settlement account details per counterparty, currency, and product are wrong, that trade is guaranteed manual work.
SWIFT Message Flows — MT and MX
SWIFT messages are the standard for cross-border settlement and global custody links. Messages commonly used in securities settlement:
| Purpose | MT (legacy) | MX (ISO 20022) |
|---|---|---|
| Receive securities against payment | MT541 | sese.023 (RvP) |
| Deliver securities against payment | MT543 | sese.023 (DvP) |
| Settlement confirmation | MT545 / MT547 | sese.025 |
| Status and processing advice | MT548 | sese.024 |
| Holdings statement | MT535 | semt.002 |
| Transaction statement | MT536 | semt.017 |
| Customer credit transfer | MT103 | pacs.008 |
| Bank-to-bank funds transfer | MT202 | pacs.009 |
Example flow — receiving a foreign currency bond through a global custodian (RvP):
Asset mgr / broker BO Global custodian Local CSD / sub-custodian
| | |
|--- MT541 (receive) --->| |
| |--- local instruction --->|
| |<-- matching/status ------|
|<-- MT548 (status) -----| |
|<-- MT545 (confirm) ----| (on settlement) |
| | |
|<-- MT535 (EOD holdings)| |
Operational note: MT fields are loose, so conventions differ by institution. Even for the same MT548, status code usage varies by custodian, so you need per-counterparty parsing rules agreed at onboarding. The ISO 20022 transition (ongoing in the securities space) mitigates this with structured codes.
Ledger Postings and the Accounting Interface
Every trade ultimately becomes accounting entries. The back office system carries a posting rules engine that translates trade events into accounting events.
Example postings by event (equity buy, simplified):
Trade date (T): DR securities receivable xxx CR payable xxx
Settle date (T+2): DR securities held xxx CR receivable xxx
DR payable xxx CR cash xxx
EOD valuation: DR/CR valuation PnL xxx CR/DR valuation adj xxx
Design principles:
- One trade maps to many postings, and every posting must retain the source trade identifier (drill-down must work).
- Posting rules live in data: hardcoding product, event, and account mappings means a deployment for every new product. A rules table with versioning is the standard approach.
- EOD close and the general ledger interface: the sub-ledger daily summary feeds the GL, and a sub-ledger-to-GL balance reconciliation runs in the daily batch.
Corporate Actions Processing
Dividends, bonus issues, stock splits, mergers, call and put exercises — corporate actions (CA) are the most error-prone area of the back office.
- Event capture: CA notifications arrive from the CSD, custodians, and data vendors (SWIFT MT564 family). The same event arrives from multiple sources in different shapes, so golden record creation (cross-source reconciliation) is the first gate.
- Entitlement calculation: apply ratios to holdings as of record date. The accuracy of the record date position snapshot is everything. Entitlements on lending positions (lent and borrowed shares) must be handled too.
- Voluntary CAs: events requiring an election (rights subscription, conversion) need a workflow of client election capture, cutoff, and instruction transmission, with strict deadline management. Missing a cutoff is typically unrecoverable, so alerts and escalation are mandatory.
When an Outage Is an Incident — The Settlement Fail Runbook
A settlement fail is the state where securities or cash did not move on the intended date. Causes include securities shortfall (seller side), insufficient funds, instruction mismatch, and SSI errors.
Settlement fail runbook (summary):
1. Detect (on settlement date, as early as possible)
- dashboard of intended vs matched/settled status
- alert on unmatched instructions before settlement date
(unmatched at T+1 = warning signal)
2. Classify (cause codes)
- instruction mismatch (UNMATCHED) / securities shortfall (LACK)
/ insufficient funds (MONY)
- our fault vs counterparty fault — liability drives penalties
3. Immediate actions
- mismatch: re-verify terms with counterparty, send corrected instruction
- securities shortfall: explore borrowing, negotiate partial settlement
- funds shortfall: escalate to treasury, source intraday liquidity
4. Notify stakeholders
- client (institutional) / trading desk / compliance and risk
- if the fail creates a chain, analyze impact on downstream settlements
5. Aftermath
- record fail costs and penalty settlements
- root cause analysis -> SSI cleanup, process improvement items
- monthly report on repeat counterparties and repeat causes
Regimes that levy cash penalties on fails, like the settlement discipline rules under the EU CSDR, have spread — so fail monitoring is directly tied to cost reduction.
Designing the Reconciliation Batch
Reconciliation is the heart of the back office. At minimum three kinds must run daily.
- Position reconciliation: internal books vs depository/custodian holdings (MT535)
- Cash reconciliation: internal cash ledger vs bank/custodian statements (MT940/camt.053)
- Trade reconciliation: FO system vs BO system for the day (internal systems)
# Skeleton of a position reconciliation batch (conceptual)
from collections import defaultdict
from decimal import Decimal
KEY = ("account_id", "instrument_id") # reconciliation key
TOLERANCE = Decimal("0") # zero tolerance for positions
def reconcile(internal_rows, external_rows, as_of_date):
internal = aggregate(internal_rows) # key -> quantity
external = aggregate(external_rows)
breaks = []
for key in internal.keys() | external.keys():
iq = internal.get(key, Decimal("0"))
eq = external.get(key, Decimal("0"))
if abs(iq - eq) > TOLERANCE:
breaks.append({
"as_of": as_of_date,
"key": key,
"internal_qty": iq,
"external_qty": eq,
"diff": iq - eq,
"classification": classify(key, iq, eq), # auto cause guess
})
return breaks
def classify(key, iq, eq):
# auto-classification heuristics: pending settlements, CA timing,
# unbooked securities lending, etc.
# leave unknowns as UNKNOWN for human investigation
...
Design principles:
- Reconcile snapshots: both sides must share the same as-of time. If internal data is post-close while the external side is a prior-day statement, the timing gap mass-produces false breaks.
- Auto-classify and auto-resolve: known patterns (settlement timing and so on) get auto-classified and auto-matched, letting humans focus on unknown breaks. The auto-resolution rules themselves are auditable, so keep a change history.
- Breaks are data: keep the break lifecycle (detect, assign, investigate, resolve, close) in tables and automate aging reports.
A Data Model Sketch
+----------------+ +------------------+ +-------------------+
| TRADE | | SETTLEMENT_ | | POSITION |
+----------------+ | INSTRUCTION | +-------------------+
| trade_id PK |--+ +------------------+ | account_id |
| order_id FK | +-<-| trade_id FK | | instrument_id |
| account_id | | si_id PK | | as_of_date |
| instrument_id | | direction (R/D) | | quantity |
| qty / price | | ssi_id FK | | cost_basis |
| trade_date | | expected_date | | (daily snapshots) |
| settle_date | | matched_status | +-------------------+
| status | | settled_at |
| version | +------------------+ +-------------------+
+----------------+ | RECON_BREAK |
| +------------------+ +-------------------+
+-------------> | POSTING | | break_id PK |
+------------------+ | recon_type |
| posting_id PK | | as_of_date |
| trade_id FK | | key (acct/instr) |
| event_type | | diff_amount |
| debit_account | | status / aging |
| credit_account | | assigned_to |
| amount / ccy | | resolution_code |
| posted_at | +-------------------+
+------------------+
The crucial feature of the trade table is versioning. Amendments and cancels are stacked as new version rows, never edits, with a view that always points to the latest effective version. Settlement instructions and postings must be traceable to the trade version that generated them — that is what keeps amendment handling consistent.
Pitfalls and Anti-Patterns
- Trade date vs settlement date confusion: if different screens show positions on different bases (trade-date vs settle-date position) without saying so, every reconciliation descends into chaos. State the basis and deliberately offer both views.
- Editing closed data: directly updating data for a closed business date is fatal in an audit. Corrections are always same-day reversal entries plus rebooking.
- Manual SSI management: a perennial cause of fails. Put four-eyes approval and validity periods on SSI changes.
- Tolerance abuse in reconciliation: widening tolerances to reduce breaks destroys the point of reconciling. Zero tolerance for positions is the principle.
- Free-text status codes: capturing break causes and fail reasons as free text makes statistics and automation impossible. Design the code scheme first.
- Manual CA deadline tracking: relying on calendars and human memory for voluntary CA cutoffs guarantees an incident eventually.
- Implicit batch dependency chains: if the ordering of price feed, valuation, postings, GL transfer, and reconciliation lives only in documents and not in the scheduler, a delay produces partially executed, polluted data.
Build Checklist
- Are FO/MO/BO system entitlements separated per segregation of duties
- Does the trade model manage amendments and cancels as versions
- Are trade-date and settle-date position views clearly distinguished
- Is there a price source priority and an exception queue for unpriceable instruments in EOD valuation
- Is there a PnL explain process between FO estimates and BO official numbers
- Are confirms/affirms electronic with aging monitoring of unconfirmed trades
- Are SSIs managed as master data with change approval workflow
- Is instruction matching status tracked before settlement date
- Is there a settlement fail runbook with cause codes and escalation paths
- Do position/cash/trade reconciliations run daily with lifecycle-managed breaks
- Can postings drill down to source trades, with posting rules managed as data
- Is the sub-ledger to GL balance reconciliation automated
- Is there cross-source CA reconciliation and voluntary cutoff alerting
- Are batch dependencies explicit in the scheduler (DAG)
Closing Thoughts
The value of back office systems is invisible on a good day. When everything flows STP, nobody talks about the back office. But on the day a settlement fails, a reconciliation breaks, or the auditors arrive — what protects the organization is a well-designed data model, immutable history, automated reconciliation, and a rehearsed runbook. If you build trading systems, make the last mile of the data journey as solid as the glamorous front — or more so.
References
- BIS CPMI — Principles for Financial Market Infrastructures (PFMI): https://www.bis.org/cpmi/publ/d101.htm
- BIS CPMI — Delivery versus Payment in Securities Settlement Systems: https://www.bis.org/cpmi/publ/d06.htm
- Korea Securities Depository: https://www.ksd.or.kr
- Bank of Korea (BOK-Wire+): https://www.bok.or.kr
- Korea Exchange (clearing and settlement): https://www.krx.co.kr
- Financial Supervisory Service of Korea: https://www.fss.or.kr
- SWIFT — Standards (MT/MX): https://www.swift.com/standards
- ISO 20022: https://www.iso20022.org
- DTCC (US clearing and settlement infrastructure): https://www.dtcc.com
- ESMA — CSDR (settlement discipline): https://www.esma.europa.eu
- Basel Committee — Minimum capital requirements for market risk (FRTB): https://www.bis.org/bcbs/publ/d457.htm