BRD/FRD Documentation Guide
Complete framework for writing Business Requirements Documents and Functional Requirements Documents that drive successful delivery.
Enterprise-Grade Resources
- Battle-tested frameworks
- Institutional best practices
- Regulatory compliance standards
- Adaptable to your context
BRD/FRD Documentation Guide
Overview
A comprehensive guide to documenting business and functional requirements that prevent scope creep, reduce rework, and ensure stakeholder alignment. Includes templates, examples, and best practices from Tier-1 implementations.
Document Structure
Business Requirements Document (BRD)
Purpose: Define WHAT the business needs and WHY Audience: Business stakeholders, executives, project sponsors Focus: Business outcomes, not technical solutions
Functional Requirements Document (FRD)
Purpose: Define HOW the solution will work Audience: Development teams, testers, architects Focus: Detailed functional specifications
BRD Template
1. Executive Summary
PROJECT: [Trade Surveillance Enhancement]
SPONSOR: [Head of Compliance]
BUSINESS OWNER: [Compliance Manager]
REQUESTED BY: [FCA Regulatory Review]
DATE: [15 January 2025]
VERSION: 1.0
BUSINESS PROBLEM:
Current trade surveillance system generates excessive false positives (85% false positive rate),
consuming 40 hours/week of analyst time and creating risk of missing genuine market abuse.
BUSINESS OBJECTIVE:
Reduce false positive rate to <20% while maintaining 100% detection of suspicious activity,
freeing up 30 hours/week for proactive risk analysis.
SUCCESS CRITERIA:
- False positive rate reduced from 85% to <20% (measured over 3 months)
- Zero false negatives (all genuine suspicious activity detected)
- Analyst investigation time reduced by 75%
- System processes 10,000 trades/day with <1 minute latency
BUSINESS VALUE:
- Cost Saving: £180k annually (reduced analyst time)
- Risk Reduction: Improved detection of market abuse, reduced regulatory risk
- Efficiency Gain: 30 hours/week reallocated to proactive surveillance
- Regulatory: Demonstrates continuous improvement to FCA
TIMELINE:
- Discovery & Requirements: 4 weeks
- Solution Design: 3 weeks
- Development & Testing: 12 weeks
- UAT & Training: 3 weeks
- Go-Live: Week of [Date]
BUDGET:
- Total Project Cost: £250k (software: £150k, implementation: £80k, training: £20k)
- 3-Year ROI: 116% (£540k savings vs £250k cost)
2. Business Context
Current State
As-Is Process:
1. Trading activity occurs across 5 venues (LSE, NYSE, BATS, etc.)
2. End-of-day batch job ingests trade data (T+0, 11pm)
3. Rules engine applies 47 surveillance rules
4. System generates average 850 alerts per day
5. 2 analysts manually review each alert (45 min average)
6. ~700 alerts (85%) closed as false positives
7. ~150 alerts require further investigation
8. ~10 alerts escalated to MLRO per month
Pain Points:
- Alert Fatigue: 85% false positive rate demoralises analysts
- Delayed Detection: Batch processing means T+1 detection (too late for intraday abuse)
- Manual Inefficiency: 40 hours/week spent on false positives
- Regulatory Risk: FCA identified risk of "missing the needle in the haystack"
- Poor Tuning: Rules are hard-coded, require IT change to adjust thresholds
Future State
To-Be Process:
1. Trading activity occurs across 5 venues (no change)
2. Real-time streaming ingests trade data (<1 min latency)
3. ML-enhanced rules engine applies tuned surveillance logic
4. System generates ~125 alerts per day (targeted reduction)
5. Automated triage categorises alerts by risk score
6. Analysts review high-risk alerts first (15 min average)
7. ~25 alerts (20%) closed as false positives
8. ~100 alerts require investigation (genuine suspicious activity)
9. ~10 alerts escalated to MLRO per month (no change in escalations)
Benefits:
- Improved Accuracy: 20% false positive rate (vs 85% today)
- Real-Time Detection: <1 minute latency (vs T+1 today)
- Efficiency: 75% reduction in analyst investigation time
- Better Tuning: Business users can adjust thresholds without IT
- Audit Trail: Enhanced lineage and explainability for regulators
3. Stakeholder Analysis
| Stakeholder | Role | Interest | Influence | Engagement Strategy |
|---|---|---|---|---|
| Head of Compliance | Sponsor | High - accountable for regulatory compliance | High | Weekly steering committee |
| Compliance Manager | Business Owner | High - day-to-day user | High | Daily stand-ups, UAT lead |
| Surveillance Analysts | End Users | High - will use system daily | Medium | Workshops, UAT participants |
| MLRO | Decision Maker | Medium - receives escalations | High | Monthly reviews, sign-off on logic |
| CTO | Technical Authority | Medium - system architecture | High | Technical design reviews |
| FCA | Regulator | High - oversight of market abuse controls | High | Quarterly updates, demo at readiness assessment |
4. Business Requirements
Functional Requirements Summary
| Req ID | Requirement | Priority | Rationale | Acceptance Criteria |
|---|---|---|---|---|
| BR-001 | Real-time trade surveillance | MUST | Current T+1 batch is too slow for intraday abuse detection | System processes trades within 1 minute of execution |
| BR-002 | ML-enhanced alert scoring | MUST | Reduce false positive rate | False positive rate <20% measured over 3 months |
| BR-003 | Business-configurable thresholds | MUST | Enable compliance to tune rules without IT dependency | Compliance manager can modify thresholds in UI without code change |
| BR-004 | Alert triage and prioritisation | SHOULD | Enable analysts to focus on high-risk alerts first | Alerts auto-categorised into High/Medium/Low risk |
| BR-005 | Integration with existing case management | MUST | Avoid dual data entry | Alerts auto-create cases in existing Actimize system |
| BR-006 | Audit trail and explainability | MUST | Regulatory requirement for transparency | Full lineage from trade → alert → decision logged and reportable |
Non-Functional Requirements Summary
| Req ID | Requirement | Priority | Target | Acceptance Criteria |
|---|---|---|---|---|
| NFR-001 | Performance | MUST | Process 10,000 trades/day with <1 min latency | Load testing demonstrates sustained throughput |
| NFR-002 | Availability | MUST | 99.5% uptime during trading hours (7am-7pm) | Max 2 hours downtime per month during trading hours |
| NFR-003 | Data Retention | MUST | Retain all alert data for 7 years (regulatory) | Automated archival to cold storage after 1 year |
| NFR-004 | Security | MUST | Role-based access control, audit logging | Penetration test shows no critical vulnerabilities |
| NFR-005 | Scalability | SHOULD | Support 50% growth in trade volume without re-architecture | System handles 15,000 trades/day without performance degradation |
5. Scope
In Scope
Trade surveillance for equity trading (LSE, NYSE, BATS, Chi-X, Turquoise) 8 core market abuse patterns (layering, spoofing, wash trading, etc.) Integration with existing Actimize case management system Training for 2 surveillance analysts and 1 compliance manager Data migration of last 12 months of historical alerts
Out of Scope
✗ FX and Fixed Income trading (separate project) ✗ Post-trade surveillance (settlement failures, etc.) ✗ Replacement of Actimize case management system ✗ Suspicious Transaction Report (STR) generation (manual process retained) ✗ Trader desktop integration
Assumptions
- Trade data feeds from existing OMS remain unchanged
- Compliance team provides SME support for rule calibration
- Infrastructure team provides AWS cloud environment
- 3rd party vendor (ThetaRay) provides ML model
Dependencies
- OMS vendor provides API access to real-time trade data
- AWS account provisioning completed by infrastructure team
- ThetaRay software licenses procured
- Actimize API documentation provided by vendor
Constraints
- Must go-live before FCA inspection (Q2 2025)
- Budget cap of £250k
- Cannot disrupt existing surveillance during implementation
- Must support current analyst workflows (minimal retraining)
6. Success Metrics
| Metric | Current | Target | Measurement Method |
|---|---|---|---|
| False Positive Rate | 85% | <20% | (False positives / Total alerts) × 100 |
| Detection Latency | T+1 (24 hours) | <1 minute | Time from trade execution to alert generation |
| Analyst Time per Alert | 45 minutes | <15 minutes | Manual time tracking over 3 months |
| System Uptime | 95% | 99.5% | AWS CloudWatch monitoring |
| User Satisfaction | N/A (no survey) | >4.0/5.0 | Post-implementation survey of analysts |
7. Risk Register
| Risk | Impact | Likelihood | Mitigation |
|---|---|---|---|
| ML model produces unexpected results | High | Medium | Parallel run with old system for 3 months; manual override capability |
| OMS API unstable | High | Low | Build resilience with message queue; retain batch fallback |
| Users resist new system | Medium | Medium | Early user involvement in design; comprehensive training programme |
| FCA changes requirements mid-project | High | Low | Quarterly FCA updates; flexible design to accommodate changes |
| Data quality issues in historical data | Medium | High | Data profiling and cleansing in migration phase |
FRD Template
1. Functional Specification Overview
DOCUMENT: Functional Requirements - Trade Surveillance Enhancement
VERSION: 1.0
DATE: [Date]
STATUS: Approved
RELATED DOCUMENTS:
- Business Requirements Document v1.0
- Technical Design Document v1.0
- Data Integration Specification v1.0
PURPOSE:
This document specifies HOW the trade surveillance system will function to meet
the business requirements defined in the BRD. It serves as the contract between
business and development teams.
2. Use Cases
Use Case UC-001: Real-Time Alert Generation
Primary Actor: System (automated) Stakeholders: Surveillance Analyst Preconditions: Trade data received from OMS Trigger: Trade executed and sent to surveillance system
Main Success Scenario:
- System receives trade message from OMS via Kafka
- System enriches trade with reference data (counterparty, instrument, trader)
- System applies 8 surveillance rules to trade
- If rule triggered, system calculates risk score using ML model
- System creates alert in database with risk score and supporting evidence
- System sends notification to analyst dashboard
- If High-risk alert, system sends email to compliance manager
Extensions (Alternative Flows):
- 2a. Reference data not found → Log error, alert marked "Data Quality Issue"
- 4a. ML model unavailable → Use rule-based score only, flag for review
- 6a. Analyst dashboard unavailable → Queue notification for retry
Postconditions: Alert is created and visible to analysts
Business Rules:
- BR-001: Alert must be generated within 1 minute of trade execution
- BR-002: Risk score must be between 0-100 (0=low risk, 100=high risk)
- BR-003: High-risk alerts (score >70) trigger immediate email notification
Use Case UC-002: Alert Investigation
Primary Actor: Surveillance Analyst Stakeholders: MLRO, Compliance Manager Preconditions: Alert exists in system Trigger: Analyst selects alert from queue
Main Success Scenario:
- Analyst opens alert from prioritised queue
- System displays alert details:
- Trade details (instrument, quantity, price, time, trader, counterparty)
- Rule(s) triggered and threshold breached
- Risk score and contributing factors
- Historical context (trader's recent activity, similar alerts)
- Market context (price movements, volume)
- Analyst reviews supporting evidence
- Analyst makes decision: Close as False Positive / Escalate for Investigation
- System prompts for mandatory comment (min 50 characters)
- Analyst enters comment and submits decision
- If "Escalate", system creates case in Actimize with all context
- System updates alert status and logs decision with timestamp and user ID
Extensions:
- 4a. Analyst needs more information → Request additional data from trader
- 7a. Actimize API unavailable → Queue case creation for retry, notify analyst
Postconditions: Alert is closed or escalated; decision is logged
Business Rules:
- BR-004: Analysts must action high-risk alerts within 4 hours
- BR-005: All decisions require mandatory comment (min 50 chars)
- BR-006: Escalated alerts auto-create case in Actimize within 5 minutes
3. Functional Requirements Detail
FR-001: Real-Time Trade Ingestion
Description: System shall ingest trade data from OMS in real-time via Kafka message queue
Inputs:
- Trade message from OMS (JSON format)
- Fields: TradeID, Instrument, Quantity, Price, Timestamp, TraderID, Venue, CounterpartyID
Processing:
- Validate message schema (reject if invalid)
- Enrich with reference data:
- Trader name and desk from HR system
- Instrument details from market data provider
- Counterparty name from CRM
- Calculate derived fields:
- Trade value = Quantity × Price
- Time since market open
- Store in trade data lake (S3) and operational database (PostgreSQL)
Outputs:
- Trade record in database (available for surveillance rules)
- Trade logged to audit trail
Performance: Process 10,000 trades/day with <1 minute latency (95th percentile)
Error Handling:
- Invalid message schema → Log error, send to dead letter queue
- Reference data unavailable → Proceed with incomplete enrichment, flag for manual review
FR-002: Surveillance Rule Execution
Description: System shall apply 8 surveillance rules to each trade in real-time
Rules:
- Layering: Multiple orders placed and cancelled without execution
- Spoofing: Large order cancelled shortly after smaller opposite-side execution
- Wash Trading: Trader buys and sells same instrument within 1 hour
- Marking the Close: Large trade in final 5 minutes of trading
- Pump and Dump: Trader buys then promotes stock (requires external data)
- Front Running: Trader executes before client order
- Insider Trading: Trading ahead of corporate announcement (requires screening vs announcements)
- High Frequency Manipulation: Excessive order-to-trade ratio
Inputs:
- Trade record (from FR-001)
- Historical trades for same trader/instrument (look-back window: 30 days)
- Order data from OMS (for layering/spoofing detection)
Processing: For each rule:
- Check if trade meets rule conditions
- If triggered, collect evidence (e.g., related orders, price movements)
- Calculate rule-specific score (0-100)
Outputs:
- Rule trigger flag (yes/no) per rule
- Rule-specific score per triggered rule
- Evidence package (related trades, orders, market data)
Business Rules:
- Rules applied in parallel (not sequential)
- If multiple rules trigger, highest score determines alert priority
- Rule thresholds configurable by compliance manager (no code changes)
FR-003: ML Risk Scoring
Description: System shall calculate ML-enhanced risk score for each triggered alert
Inputs:
- Rule trigger flags and scores (from FR-002)
- Trader historical behaviour (past 90 days):
- Number of previous alerts (false positive rate)
- Trading patterns (volatility, instrument diversity)
- Market context:
- Price volatility for instrument
- Trading volume vs average
Processing:
- ThetaRay ML model receives input features
- Model outputs risk score (0-100) and confidence level
- System combines rule-based score with ML score (weighted average: 60% ML, 40% rule)
Outputs:
- Final risk score (0-100)
- Risk category: Low (0-40), Medium (41-70), High (71-100)
- Model explainability: Top 3 contributing factors
Performance: Score generation within 5 seconds per alert
Fallback: If ML model unavailable, use rule-based score only (flagged for review)
FR-004: Alert Triage and Prioritisation
Description: System shall automatically categorise and prioritise alerts for analyst review
Inputs:
- Alert risk score (from FR-003)
- Current analyst workload
- Alert age
Processing:
- Categorise alert by risk score:
- High: Score >70 → Top of queue
- Medium: Score 41-70 → Standard queue
- Low: Score 0-40 → Review when capacity available
- Within each category, order by:
- Age (oldest first)
- Instrument type (priority: equities > derivatives)
Outputs:
- Prioritised alert queue visible to analysts
- High-risk alerts highlighted in red
- SLA countdown timer displayed (High: 4 hours, Medium: 24 hours, Low: 72 hours)
Business Rules:
- High-risk alerts require immediate notification (email + dashboard popup)
- If alert breaches SLA, escalate to compliance manager automatically
FR-005: Actimize Integration
Description: System shall integrate with Actimize case management system for escalated alerts
Inputs:
- Escalated alert (from analyst investigation)
- Alert details, evidence, analyst comments
Processing:
- Map surveillance alert fields to Actimize case fields
- Call Actimize REST API to create case
- Upload supporting documents (trade blotter, evidence package)
- Link case ID back to surveillance alert
Outputs:
- Case created in Actimize
- Case ID stored in surveillance system
- Confirmation sent to analyst
Error Handling:
- API call fails → Retry 3 times with exponential backoff
- After 3 failures → Queue for manual creation, notify IT support
Performance: Case creation within 5 minutes of escalation decision
4. User Interface Requirements
UI-001: Analyst Dashboard
Description: Main screen for surveillance analysts to review and action alerts
Layout:
┌─────────────────────────────────────────────────────────────┐
│ TRADE SURVEILLANCE DASHBOARD [User: Sarah]│
├─────────────────────────────────────────────────────────────┤
│ │
│ [High-Risk: 5] [Medium-Risk: 18] [Low-Risk: 47] │
│ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ PRIORITY QUEUE │ │
│ ├────┬──────────┬─────────┬───────┬──────────┬─────────┤ │
│ │ ! │ Time │ Trader │ Rule │ Risk │ SLA │ │
│ ├────┼──────────┼─────────┼───────┼──────────┼─────────┤ │
│ │ 🔴 │ 09:15:23 │ J.Smith │Layering│ 87 (HIGH)│ 3h 12m │ │
│ │ 🔴 │ 09:23:45 │ M.Jones │Spoofing│ 78 (HIGH)│ 2h 54m │ │
│ │ 🟡 │ 09:31:12 │ A.Brown │Wash │ 65 (MED) │ 22h 18m │ │
│ │ ...│ │ │ │ │ │ │
│ └────┴──────────┴─────────┴───────┴──────────┴─────────┘ │
│ │
│ [Filter: All Rules ▼] [Filter: All Desks ▼] [Search: ___] │
└─────────────────────────────────────────────────────────────┘
Interactions:
- Click on alert row → Open alert detail screen
- Filter by risk level, rule type, desk, trader
- Search by trader name, instrument, alert ID
Acceptance Criteria:
- Dashboard loads within 2 seconds
- Auto-refreshes every 30 seconds
- Visual indicators (🔴/🟡/🟢) for risk level
- SLA countdown updates in real-time
UI-002: Alert Detail Screen
Description: Detailed view of single alert for investigation
Sections:
- Alert Summary: Risk score, rule triggered, timestamp, trader, instrument
- Trade Details: Full trade information, counterparty, venue
- Evidence Package: Related trades, orders, price chart
- Historical Context: Trader's past alerts, false positive rate
- Decision Panel: Close as false positive / Escalate for investigation
- Comment Box: Mandatory comment (min 50 characters)
Actions:
- [Close as False Positive] button
- [Escalate to Investigation] button
- [Request More Information] button (sends email to trader's manager)
- [Export PDF] button (for regulatory reporting)
Acceptance Criteria:
- All evidence loads within 3 seconds
- Comment box enforces 50-character minimum
- Decision cannot be submitted without comment
- PDF export includes full audit trail
5. Data Requirements
Trade Data Model
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
| TradeID | String(20) | Yes | Unique trade identifier | TRD-20250115-00123 |
| Instrument | String(12) | Yes | Ticker symbol | VOD.L |
| Quantity | Integer | Yes | Number of shares | 10000 |
| Price | Decimal(10,4) | Yes | Execution price | 125.5000 |
| Timestamp | DateTime | Yes | Execution time (UTC) | 2025-01-15 09:15:23 |
| TraderID | String(10) | Yes | Trader identifier | TRAD001 |
| Venue | String(10) | Yes | Execution venue | LSE |
| CounterpartyID | String(20) | Yes | Counterparty identifier | CP-12345 |
Alert Data Model
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
| AlertID | String(20) | Yes | Unique alert identifier | ALT-20250115-00456 |
| TradeID | String(20) | Yes | Related trade | TRD-20250115-00123 |
| RuleTriggered | String(50) | Yes | Rule name | Layering |
| RiskScore | Integer | Yes | 0-100 | 87 |
| RiskCategory | Enum | Yes | LOW/MEDIUM/HIGH | HIGH |
| Status | Enum | Yes | OPEN/CLOSED/ESCALATED | OPEN |
| CreatedTimestamp | DateTime | Yes | Alert creation time | 2025-01-15 09:16:12 |
| AnalystID | String(10) | No | Assigned analyst | AN001 |
| Decision | Enum | No | FALSE_POS/ESCALATED | NULL |
| Comment | Text | No (required on decision) | Analyst comment | ... |
6. Integration Specifications
Integration INT-001: OMS Trade Feed
Source System: Fidessa OMS Integration Method: Kafka message queue Message Format: JSON Frequency: Real-time (streaming) Volume: ~10,000 messages/day (peak: 500/hour)
Sample Message:
{
"tradeId": "TRD-20250115-00123",
"instrument": "VOD.L",
"quantity": 10000,
"price": 125.50,
"timestamp": "2025-01-15T09:15:23Z",
"traderId": "TRAD001",
"venue": "LSE",
"counterpartyId": "CP-12345",
"side": "BUY"
}
Error Handling:
- Invalid schema → Dead letter queue
- Duplicate tradeId → Idempotent processing (ignore duplicate)
- Missing required field → Reject and log error
Integration INT-002: Actimize Case Management
Target System: Actimize SAM Integration Method: REST API Authentication: OAuth 2.0 Frequency: On-demand (per escalation) Volume: ~100 cases/month
API Endpoint: POST /api/v2/cases Request Body:
{
"caseType": "MARKET_ABUSE_INVESTIGATION",
"priority": "HIGH",
"subject": "Layering Alert - Trader J.Smith - VOD.L",
"description": "...",
"relatedAlerts": ["ALT-20250115-00456"],
"assignedTo": "MLRO_TEAM"
}
Response:
{
"caseId": "CASE-2025-00789",
"status": "CREATED",
"timestamp": "2025-01-15T10:30:00Z"
}
7. Non-Functional Requirements
NFR-001: Performance
- Alert generation latency: <1 minute (95th percentile)
- Dashboard load time: <2 seconds
- Search response time: <500ms
- ML scoring: <5 seconds per alert
- Actimize case creation: <5 minutes
NFR-002: Scalability
- Support 10,000 trades/day (current)
- Scale to 15,000 trades/day without re-architecture
- Support 5 concurrent analysts (current: 2)
NFR-003: Availability
- 99.5% uptime during trading hours (7am-7pm GMT, Monday-Friday)
- Planned maintenance outside trading hours only
- Automatic failover for critical components
NFR-004: Security
- Role-based access control (RBAC): Admin, Analyst, Read-Only
- All API calls authenticated via OAuth 2.0
- Sensitive data encrypted at rest (AES-256) and in transit (TLS 1.3)
- Audit logging of all user actions
NFR-005: Compliance
- Data retention: 7 years (regulatory requirement)
- Audit trail: All decisions logged with user ID, timestamp, IP address
- Immutable logs: No deletion or modification of historical data
Requirements Traceability Matrix
| Business Req | Functional Req | Test Case | Status |
|---|---|---|---|
| BR-001: Real-time surveillance | FR-001: Trade ingestion, FR-002: Rule execution | TC-001, TC-002 | Approved |
| BR-002: ML-enhanced scoring | FR-003: ML risk scoring | TC-003 | Approved |
| BR-003: Business-configurable thresholds | FR-002: Surveillance rules (configurable) | TC-004 | Approved |
| BR-005: Actimize integration | FR-005: Actimize integration | TC-005 | Approved |
Change Control Process
- Change Request: Stakeholder submits change request form
- Impact Assessment: BA assesses impact on scope, timeline, budget
- Approval: Project board approves/rejects change
- Update Documents: BA updates BRD/FRD with version control
- Communication: Change communicated to all stakeholders
Change Authority:
- Minor changes (<5 days effort): Project Manager
- Major changes (>5 days effort): Project Board
- Scope changes: Business Sponsor
Approval
| Role | Name | Signature | Date |
|---|---|---|---|
| Business Owner | Compliance Manager | ___ | //____ |
| Project Sponsor | Head of Compliance | ___ | //____ |
| Technical Lead | Solution Architect | ___ | //____ |
| Business Analyst | Lead BA | ___ | //____ |
Need Expert Support?
Writing requirements that actually drive successful delivery requires experience, discipline, and stakeholder management skills. If you need support with business analysis, requirements elicitation, or preventing project failures, contact our team for a consultation.
Template Version: 1.0 Last Updated: January 2025 Compatible With: BABOK, Agile, Waterfall, Hybrid methodologies License: Free for commercial use with attribution
Strategic Advisory Services
Transform operational complexity into strategic advantage. Partner with experienced advisors who deliver enterprise-grade transformation.
Request Advisory