S&P 5005,983+0.49%
NASDAQ21,220+0.47%
Russell2,187-0.64%
VIX18.20+0.7
10Y Yield4.31%+3.0bp
Gold2,936+0.62%
Crude70.40-0.98%
Bitcoin95,800-0.42%
S&P 5005,983+0.49%
NASDAQ21,220+0.47%
Russell2,187-0.64%
VIX18.20+0.7
10Y Yield4.31%+3.0bp
Gold2,936+0.62%
Crude70.40-0.98%
Bitcoin95,800-0.42%
simulated

K-Factor (MIFIDPRU)

FCA investment firm prudential capital requirements calculator with assessment storage, document uploads, and export.


Overview

The K-Factor module implements the MIFIDPRU capital requirements framework — the FCA's prudential regime for UK investment firms effective January 2022.

It provides:

Access the calculator at /kfactor.


The 9 K-Factors

MIFIDPRU 4 defines nine K-factors organized into three risk categories:

Risk to Customers (RtC)

K-FactorRegulationInputCoefficient
K-AUMMIFIDPRU 4.715-month rolling average AUM0.02%
K-ASAMIFIDPRU 4.815-month rolling average assets safeguarded0.02%
K-CMHMIFIDPRU 4.9Client money held (segregated + non-segregated)0.45% (seg) / 0.50% (non-seg)
K-COHMIFIDPRU 4.10Client orders handled (cash + derivatives)0.10% (cash) / 0.01% (deriv)

Risk to Market (RtM)

K-FactorRegulationInputCoefficient
K-DTFMIFIDPRU 4.11Daily trading flow (cash + derivatives)0.10% (cash) / 0.01% (deriv)
K-NPRMIFIDPRU 4.12Net position risk (pre-calculated)Direct input
K-CMGMIFIDPRU 4.13Clearing margin given to CCPs2.00%

Risk to Firm (RtF)

K-FactorRegulationInputCoefficient
K-TCDMIFIDPRU 4.14Trading counterparty default (pre-calculated)Direct input
K-CONMIFIDPRU 4.15Concentration risk (pre-calculated)Direct input

The total K-factor requirement is the sum of all individual K-factor capital charges. The firm's Own Funds Requirement (OFR) is the maximum of the Permanent Minimum Requirement, Fixed Overheads Requirement, and the K-factor total.


SNI Classification

A firm qualifies as Small and Non-Interconnected (SNI) under MIFIDPRU 1.2 if it meets all of the following thresholds:

K-FactorThreshold
K-AUMAUM < £1.2 billion
K-COHClient orders handled < £100 million/day
K-ASAAssets safeguarded < £900 million
K-CMHNo client money held (£0)

SNI firms benefit from a simplified prudential regime with reduced reporting obligations.

The calculator automatically evaluates SNI eligibility based on the values entered and displays a pass/fail indicator for each threshold.


Pass/Fail Diagnostics

Each K-factor is evaluated against proportionality thresholds to flag concentration risk — where a single K-factor dominates the total requirement:

K-FactorWarning ThresholdFail Threshold
K-AUM30% of total50% of total
K-ASA30% of total50% of total
K-CMH20% of total40% of total
K-COH20% of total40% of total
K-DTF25% of total45% of total
K-NPR30% of total50% of total
K-CMG20% of total40% of total
K-TCD20% of total40% of total
K-CON15% of total30% of total

Assessment Form

The calculator is organized into four tabbed sections:

1. Firm Details

Basic identification fields:

2. Risk to Customers

Input fields for K-AUM, K-ASA, K-CMH, and K-COH. Each field shows its regulatory coefficient and computes the capital requirement in real time as values are entered.

3. Risk to Market

Input fields for K-DTF, K-CMG, and K-NPR. K-NPR is a direct input (pre-calculated by the firm).

4. Risk to Firm

Input fields for K-TCD and K-CON. Both are direct inputs (pre-calculated by the firm).

All currency inputs are formatted in GBP. Each field displays a description, the applicable MIFIDPRU regulation reference, and the computed K-factor contribution alongside the input.


Results View

After submission, the results view displays:


Document Uploads

Assessments support file attachments stored in Supabase:

PropertyValue
StorageSupabase bucket kfactor-documents
Max file size25 MB
Allowed typesPDF, PNG, JPEG, XLSX, XLS, CSV
Document typesSupporting, Audit, Compliance
Path patternkfactor/{userId}/{assessmentId}/{uploadId}_{filename}

Export

Assessments can be exported in two formats:

Excel (.xlsx)

Three worksheets with Bloomberg Terminal styling:

  1. K-Factor Summary — K-factor, description, category, regulation, requirement, status
  2. Firm Details — firm name, FRN, reporting date, SNI status
  3. Input Data — all raw field values

PDF

Single-page report containing:

Export filename: kfactor_assessment_YYYYMMDDHHMM.{xlsx,pdf}


API Routes

POST /api/kfactor — Save Assessment

Saves a completed assessment to the database. Requires authentication.

Payload:

{
  firmName: string
  frn?: string
  reportingDate?: string
  sniStatus?: string
  inputValues: Record<string, string>       // raw form inputs
  kfactorResults: Record<string, number>    // computed K-factors
  totalRequirement: number
  passFailResults?: Record<string, PassFailResult>
}

GET /api/kfactor — List Assessments

Returns the authenticated user's saved assessments, ordered newest first.

POST /api/kfactor/upload — Upload Document

Multipart form upload. Fields: file, assessmentId, docType, notes (optional).

GET /api/kfactor/upload — List Documents

Returns documents for a given assessmentId query parameter.

POST /api/kfactor/export — Export Assessment

Generates and returns an Excel or PDF file. Accepts format: "xlsx" | "pdf" in the request body alongside the full assessment data.


Architecture

Components

ComponentFileDescription
KFactorSurveycomponents/KFactorSurvey.tsxMulti-section assessment form with results view
KTcdCalculatorcomponents/kfactor/KTcdCalculator.tsxK-TCD position calculator with 3 input modes

Database Models

KFactorAssessment — stores completed assessments with input values, computed results, and pass/fail diagnostics. Indexed on [userId, createdAt] and [firmName].

KFactorDocument — stores document metadata with Supabase storage path. Cascade-deletes when the parent assessment is removed.

Page Route

The K-Factor page at /kfactor renders the assessment form with a tab bar switching between the K-Factor Survey and the K-TCD Calculator.


K-TCD Calculator

The K-TCD Calculator computes the trading counterparty default capital requirement under IFR Articles 25–32. It accepts positions via CSV upload, manual entry, or the built-in sample portfolio, and produces per-netting-set and total K-TCD figures. Access the calculator at /kfactor (K-TCD tab).


K-TCD Formula

The top-level formula is:

K-TCD = alpha × EV × RF × CVA

where each component is defined as follows:

ComponentDefinition
alpha1.2 — fixed IFR multiplier (IFR Article 26)
EVExposure Value = max(0, RC + PFE − C), computed at the netting set level
RCReplacement Cost — current market value (CMV) of the position; zero if not provided
PFEPotential Future Exposure = |Notional × Duration × Delta| × Supervisory Factor
CCollateral value after supervisory haircuts (IFR Article 31)
RFRisk Factor — 1.6% for institutions and governments, 8% for other counterparties (IFR Article 30)
CVACredit Valuation Adjustment — 1.5 for standard derivatives, 1.0 for SFTs, intragroup, and long-settlement transactions (IFR Article 32)

Duration sub-formula (IFR Article 29)

For interest-rate and credit asset classes, duration is a maturity-weighted discount factor:

Duration = (1 − exp(−0.05 × M)) / 0.05

where M is the residual maturity in years. For all other asset classes, Duration = 1.

Delta sub-formula

For option positions, delta is computed via the Black-Scholes cumulative normal distribution:

For non-option positions, Delta = 1.


IFR Table 3: Supervisory Factors

Supervisory factors scale PFE by asset class risk. Source: IFR Article 29.

Asset ClassSupervisory Factor
Interest Rate0.5%
Foreign Exchange4.0%
Credit1.0%
Equity (Single Name)32.0%
Equity (Index)20.0%
Commodity18.0%
Other32.0%

IFR Table 4: Collateral Haircuts

Supervisory haircuts reduce the collateral value (C) recognized in the EV calculation. Source: IFR Article 31.

Collateral TypeResidual MaturityHaircut
Cash0%
Government bonds< 1 year1%
Government bonds1 to 5 years3%
Government bonds> 5 years6%
Corporate bonds< 1 year2%
Corporate bonds1 to 5 years6%
Corporate bonds> 5 years12%
Equities (main index)20%
Gold15%

Currency mismatch add-on: An additional 8% haircut applies when the collateral currency differs from the transaction currency (IFR Article 31). This add-on is applied on top of the base haircut above.


Netting Sets

Positions are grouped into netting sets by (Client ID, Netting Class). EV is computed at the netting set level — individual position exposures cannot be evaluated in isolation because offsetting positions within the same netting agreement reduce the total replacement cost and PFE.

Aggregation steps for each netting set:

  1. Sum all RC values across positions in the set
  2. Sum all PFE values across positions in the set
  3. Sum all collateral-adjusted values (C) across positions in the set
  4. Compute EV = max(0, total RC + total PFE − total C)
  5. Apply RF and CVA from the first position's counterparty type and transaction type
  6. K-TCD for the netting set = 1.2 × EV × RF × CVA

Total K-TCD is the sum of K-TCD across all netting sets.


CSV Upload Format

Upload positions as a CSV file with the following columns. The first row must be a header row matching these column names exactly (case-insensitive).

Column NameRequiredDescription
ClientRequiredCounterparty or client identifier used for netting set grouping
Netting ClassRequiredNetting agreement class (e.g. A, B, C); positions sharing Client + Netting Class are netted
Asset ClassRequiredOne of: interest-rate, foreign-exchange, credit, equity-single, equity-index, commodity, other
DescriptionOptionalHuman-readable position description
NotionalRequiredNotional amount in the position's base currency
CurrencyRequiredISO 4217 currency code (e.g. USD, EUR, GBP)
Maturity DateRequiredISO 8601 date (YYYY-MM-DD)
Trade DateOptionalISO 8601 date; defaults to today if omitted
Counterparty TypeRequiredOne of: institution, government, other
CMVOptionalCurrent market value; used as replacement cost (RC). Defaults to 0 if omitted
SideRequiredbuy or sell
Collateral AmountOptionalCollateral posted by the counterparty before haircuts. Defaults to 0 if omitted
Collateral TypeOptionalOne of: cash, govt-bond-lt1y, govt-bond-1to5y, govt-bond-gt5y, corp-bond-lt1y, corp-bond-1to5y, corp-bond-gt5y, equity, gold, none
Collateral CurrencyOptionalISO 4217 currency code of the collateral. Used for currency mismatch detection
Is OptionOptionaltrue or false. Defaults to false if omitted
Option TypeOptionalcall or put. Required when Is Option = true
StrikeOptionalStrike price. Required when Is Option = true
Underlying PriceOptionalCurrent price of the underlying. Required when Is Option = true
IVOptionalImplied volatility as a decimal (e.g. 0.25 for 25%). Required when Is Option = true
Option ExpiryOptionalISO 8601 date. Falls back to Maturity Date if omitted

Example rows:

Client,Netting Class,Asset Class,Description,Notional,Currency,Maturity Date,Trade Date,Counterparty Type,CMV,Side,Collateral Amount,Collateral Type,Collateral Currency,Is Option,Option Type,Strike,Underlying Price,IV,Option Expiry
Alpha Capital,A,interest-rate,US Treasury 10Y bond derivative,20000000,USD,2035-04-08,2026-04-08,institution,500000,buy,15000000,cash,USD,,,,,
Beta Trading,C,equity-single,AAPL equity total return swap,5000000,USD,2027-04-08,2026-04-08,other,200000,buy,1000000,equity,USD,,,,,
Alpha Capital,A,foreign-exchange,EUR/USD FX call option,10000000,EUR,2026-07-08,2026-04-08,institution,150000,buy,2000000,govt-bond-1to5y,USD,true,call,1.12,1.10,0.08,2026-07-08

The file must not exceed 500 rows. Rows with missing required fields are rejected with a per-row error message.


Sample Portfolio

The built-in sample portfolio contains 21 positions across 3 clients and all 7 IFR asset classes. It can be loaded with one click from the K-TCD Calculator tab — no file upload required.

Alpha Capital (institution, RF 1.6%) — 6 positions in netting classes A and B

Netting ClassDescriptionAsset Class
AUS Treasury 10Y bond derivativeInterest Rate
AEUR/USD FX forwardForeign Exchange
AEUR/USD FX call optionForeign Exchange
AJPY/USD FX forwardForeign Exchange
BCorporate bond (IG) credit derivativeCredit
BUS Treasury 2Y note derivativeInterest Rate

Beta Trading (other, RF 8%) — 8 positions in netting classes C and D

Netting ClassDescriptionAsset Class
CAAPL equity total return swapEquity (Single)
CMSFT equity total return swapEquity (Single)
CNVDA equity total return swapEquity (Single)
CAAPL put optionEquity (Single)
CNVDA call optionEquity (Single)
DCrude oil futuresCommodity
DNatural gas futuresCommodity
DGold futuresCommodity
DCopper futuresCommodity

Gamma Fund (mixed counterparty types) — 7 positions in netting classes E and F

Netting ClassDescriptionAsset Class
ES&P 500 index total return swapEquity (Index)
EEURO STOXX 50 index swapEquity (Index)
ERussell 2000 total return swapEquity (Index)
ERepo — government securitiesInterest Rate
FExotic basket option (structured)Other
FCLO tranche swapOther
FVariance swapOther

Regulatory References