The Market Risk Management System database consists of 14 core tables organized into 4 main functional areas:
- Reference Data - Master data for currencies, asset classes, counterparties, and instruments
- Market Data - Price data, historical data, and risk-free rates
- Trading Data - Trades and positions
- Risk Management - Risk metrics, limits, and breaches
βββββββββββββββββββ
β Currencies β
βββββββββββββββββββ
β CurrencyID (PK) β
β CurrencyCode β
β CurrencyName β
ββββββββββ¬βββββββββ
β
β 1:N
β
ββββββββββΌβββββββββββββ ββββββββββββββββββββ
β Instruments β β AssetClasses β
βββββββββββββββββββββββ ββββββββββββββββββββ
β InstrumentID (PK) ββββN:1βββ AssetClassID(PK) β
β InstrumentCode β β AssetClassName β
β InstrumentName β β AssetClassCode β
β InstrumentType β ββββββββββββββββββββ
β AssetClassID (FK) β
β CurrencyID (FK) β βββββββββββββββββββββ
β IssuerCPID (FK) ββββN:1βββ Counterparties β
β UnderlyingInstID(FK)β βββββββββββββββββββββ
ββββββββ¬βββββββββββββββ β CounterpartyID(PK)β
β β CounterpartyCode β
β 1:N β CounterpartyName β
β β CounterpartyType β
β β CreditRating β
ββββββββΌβββββββββββ β ExposureLimit β
β MarketData β βββββββββββ¬ββββββββββ
βββββββββββββββββββ β
β MarketDataID(PK)β β 1:N
β InstrumentID(FK)β β
β PriceDate β βββββββββββΌββββββββββ
β ClosePrice β β Trades β
β OpenPrice β βββββββββββββββββββββββββββ
β HighPrice β β β TradeID (PK) β
β LowPrice β β β TradeRefNumber β
β Volume β β β InstrumentID (FK) β
β Volatility β β β CounterpartyID(FK)β
βββββββββββββββββββ β β TradeDate β
β β SettlementDate β
βββββββββββββββββββ β β TradeType β
β PriceHistory β β β Quantity β
βββββββββββββββββββ β β Price β
β PriceHistoryID β β β NotionalAmount β
β InstrumentID(FK)ββββββββ€ β TradeStatus β
β PriceDate β β β BookName β
β ClosePrice β β βββββββββββββββββββββ
β DailyReturn β β
β LogReturn β β
βββββββββββββββββββ β βββββββββββββββββββββ
β β Positions β
βββββββββββββββββββββββββββ
β PositionID (PK) β
β InstrumentID (FK) β
β CounterpartyID(FK)β
β BookName β
β PositionDate β
β Quantity β
β AveragePrice β
β MarketPrice β
β MarketValue β
β UnrealizedPnL β
β RealizedPnL β
βββββββββββ¬ββββββββββ
β
β 1:N
β
βββββββββββΌββββββββββ
β RiskMetrics β
βββββββββββββββββββββ
β RiskMetricID (PK) β
β PositionID (FK) β
β CalculationDate β
β VaR_95 β
β VaR_99 β
β ExpectedShortfall β
β DeltaExposure β
β GammaExposure β
β VegaExposure β
βββββββββββββββββββββ
ββββββββββββββββββββ βββββββββββββββββββββββββ
β RiskLimits β β RiskLimitBreaches β
ββββββββββββββββββββ βββββββββββββββββββββββββ
β LimitID (PK) ββββββ1:Nβββ BreachID (PK) β
β LimitType β β LimitID (FK) β
β EntityType β β BreachDate β
β EntityID β β ActualValue β
β LimitAmount β β LimitValue β
β WarningThreshold β β ExcessAmount β
β EffectiveDate β β BreachSeverity β
β ExpiryDate β β ResolutionStatus β
ββββββββββββββββββββ βββββββββββββββββββββββββ
ββββββββββββββββββββ βββββββββββββββββββββ
β RiskFreeRates β β AuditLog β
ββββββββββββββββββββ βββββββββββββββββββββ
β RateID (PK) β β AuditID (PK) β
β CurrencyID (FK) β β TableName β
β RateDate β β RecordID β
β TenorDays β β Action β
β Rate β β UserName β
ββββββββββββββββββββ β ActionDate β
β OldValues β
β NewValues β
βββββββββββββββββββββ
Stores currency master data.
Key Columns:
CurrencyID- Primary keyCurrencyCode- 3-character ISO code (USD, EUR, etc.)CurrencyName- Full currency name
Defines asset class categories for risk classification.
Key Columns:
AssetClassID- Primary keyAssetClassName- Name (Equities, Fixed Income, etc.)RiskWeighting- Risk weighting factor for calculations
Master data for trading counterparties.
Key Columns:
CounterpartyID- Primary keyCounterpartyCode- Unique identifierCreditRating- Credit rating (AAA, A, BBB, etc.)ExposureLimit- Maximum allowed exposure
Financial instruments catalog.
Key Columns:
InstrumentID- Primary keyInstrumentCode- Ticker/ISINInstrumentType- Stock, Bond, Option, Future, FX, SwapAssetClassID- Foreign key to AssetClassesUnderlyingInstrumentID- Self-reference for derivatives
Daily market prices and volatility.
Key Columns:
InstrumentID- Foreign key to InstrumentsPriceDate- Trading dateClosePrice- Closing priceVolatility- Implied or historical volatility
Historical prices with calculated returns for VaR.
Key Columns:
DailyReturn- Simple daily returnLogReturn- Logarithmic return (for VaR calculations)
Risk-free interest rates by currency and tenor.
Key Columns:
TenorDays- Maturity in days (1, 30, 90, 365, etc.)Rate- Interest rate (decimal)
All trading transactions.
Key Columns:
TradeID- Primary keyTradeRefNumber- External reference numberTradeType- Buy or SellQuantity- Number of unitsNotionalAmount- Total transaction valueTradeStatus- Active, Closed, Cancelled
Aggregated current positions.
Key Columns:
PositionID- Primary keyQuantity- Net quantity (positive = long, negative = short)AveragePrice- Weighted average acquisition priceMarketValue- Current market valueUnrealizedPnL- Mark-to-market profit/lossBookName- Portfolio/book identifier
Calculated risk measures for positions.
Key Columns:
VaR_95- Value at Risk at 95% confidenceVaR_99- Value at Risk at 99% confidenceExpectedShortfall- Expected loss beyond VaRDeltaExposure- First-order price sensitivityGammaExposure- Second-order price sensitivityVegaExposure- Volatility sensitivity
Defined risk limits by entity.
Key Columns:
LimitType- VaR, Exposure, ConcentrationEntityType- Counterparty, Instrument, AssetClass, PortfolioLimitAmount- Maximum allowed valueWarningThreshold- Warning level (e.g., 0.80 = 80%)
Historical record of limit breaches.
Key Columns:
BreachSeverity- Warning, Breach, CriticalResolutionStatus- Open, Acknowledged, ResolvedExcessAmount- Amount over limit
Audit trail for all data changes.
Key Columns:
TableName- Table that was modifiedAction- INSERT, UPDATE, DELETEOldValues- Previous values (JSON)NewValues- New values (JSON)
-
Instruments β AssetClasses (N:1)
- Each instrument belongs to one asset class
- Asset classes contain multiple instruments
-
Instruments β Currencies (N:1)
- Each instrument is denominated in one currency
-
Instruments β Counterparties (N:1)
- Optional: For bonds/notes, links to issuer
-
Instruments β Instruments (N:1)
- Self-reference for derivatives linking to underlying
-
Trades β Instruments (N:1)
- Each trade is for one instrument
-
Trades β Counterparties (N:1)
- Each trade is with one counterparty
-
Positions β Instruments (N:1)
- Each position is for one instrument
-
Positions β Counterparties (N:1)
- Each position is with one counterparty
-
RiskMetrics β Positions (N:1)
- Risk metrics calculated for each position
-
RiskLimitBreaches β RiskLimits (N:1)
- Each breach references a specific limit
Positions Table:
IX_Positions_Date_NonZero- Date-based queries for active positionsIX_Positions_Instrument_Date- Instrument position historyIX_Positions_Counterparty_Date- Counterparty exposure
MarketData Table:
IX_MarketData_Instrument_Date- Price lookupsIX_MarketData_Date_Instrument- Date range queries
RiskMetrics Table:
IX_RiskMetrics_Position_Date- Latest metrics by positionIX_RiskMetrics_Date- Portfolio-wide risk reporting
See 07-Indexes/CreateIndexes.sql for complete index definitions.
1. TRADE ENTRY
βββββββββββ
β Trades β
ββββββ¬βββββ
β
βΌ
βββββββββββββββ
β Positions β ββββ Updated via sp_ProcessTrade
βββββββ¬ββββββββ
β
βΌ
ββββββββββββββββ
β MarketData β ββββ Daily price feed
ββββββββ¬ββββββββ
β
βΌ
ββββββββββββββββ
β RiskMetrics β ββββ Calculated via sp_CalculatePortfolioRisk
ββββββββ¬ββββββββ
β
βΌ
ββββββββββββββββββββββ
β RiskLimitBreaches β ββββ Checked via sp_CheckRiskLimits
ββββββββββββββββββββββ
Comprehensive view of all active positions with instrument and counterparty details.
Risk metrics joined with position and instrument information.
Aggregated exposure analysis by counterparty with limit utilization.
Portfolio summary aggregated by book and asset class with ROLLUP.
Calculates P&L based on quantity, average price, and market price.
Calculates total exposure including contract size.
Calculates annualized volatility from historical returns.
Parametric VaR calculation using normal distribution.
Calculates business days between two dates.
Processes new trades and updates positions automatically.
Parameters:
- Trade details (instrument, counterparty, quantity, price, etc.)
Actions:
- Inserts trade record
- Updates or creates position
- Recalculates average price
- Handles long/short position changes
Calculates risk metrics for all positions as of a date.
Parameters:
@CalculationDate- Date for calculation@BookName- Optional: specific book
Actions:
- Updates market values
- Calculates VaR (95%, 99%)
- Calculates Expected Shortfall
- Computes Greeks
Checks current exposures against limits and logs breaches.
Parameters:
@CheckDate- Date for limit check
Actions:
- Calculates current exposures
- Compares against limits
- Logs new breaches
- Returns breach details
See 06-Queries/AnalyticalQueries.sql for 10 advanced analytical queries demonstrating:
- Window functions
- CTEs
- Pivots
- Statistical analysis
- Time-series analysis
- Correlation analysis
- Stress testing
For installation instructions, see INSTALLATION.md