# Project 3: SEC Cybersecurity Disclosure Quality Classifier

## Capstone 2026 — BUSI488/COMP488 — Team Knowledge Transfer

**Project:** Build a validated, reusable classifier that labels SEC cybersecurity disclosures by content category and specificity level, then fine-tune an open-weights model for deployment at scale.

**Methodology:** Ringel (2023) "Synthetic Experts" pipeline — use frontier LLMs to generate training labels, then distill into a small open-weights encoder model.

**Why this project:** No HuggingFace dataset of extracted Item 1C disclosures exists. No trained classifier for cybersecurity disclosure quality exists. No domain-adapted ModernBERT on SEC filings exists. The iXBRL CYD taxonomy just went live (Dec 2024). We produce **three publishable artifacts**: a novel dataset, a labeling methodology, and a SOTA classifier.

---

## Table of Contents

1. [Regulatory Background](#1-regulatory-background)
2. [Labeling Rubric](#2-labeling-rubric)
3. [Data Acquisition](#3-data-acquisition)
4. [GenAI Labeling Pipeline](#4-genai-labeling-pipeline)
5. [Model Strategy](#5-model-strategy)
6. [Evaluation & Validation](#6-evaluation--validation)
7. [Release Artifacts](#7-release-artifacts)
8. [3-Week Schedule (6 People)](#8-3-week-schedule-6-people)
9. [Budget](#9-budget)
10. [Reference Links](#10-reference-links)

---

## 1. Regulatory Background

### The Rule: SEC Release 33-11216 (July 2023)

The SEC adopted final rules requiring public companies to disclose cybersecurity risk management, strategy, governance, and material incidents. This created a massive new text corpus with natural variation in quality — perfect for classification.

Full rule PDF: <https://www.sec.gov/files/rules/final/2023/33-11216.pdf>
Fact sheet: <https://www.sec.gov/files/33-11216-fact-sheet.pdf>

### Item 1C — Annual Disclosure (10-K)

Appears as **Regulation S-K Item 106**, reported in **Item 1C** of the 10-K. Two mandated subsections:

**Item 106(b) — Risk Management and Strategy:**
1. Processes for assessing, identifying, and managing material cybersecurity risks
2. Whether/how cybersecurity processes integrate into overall enterprise risk management (ERM)
3. Whether the company engages external assessors, consultants, or auditors
4. Processes to oversee/identify risks from third-party service providers
5. Whether cybersecurity risks (including prior incidents) have materially affected or are reasonably likely to affect business strategy, results, or financial condition

**Item 106(c) — Governance:**

*Board Oversight (106(c)(1)):*
- Description of board's oversight of cybersecurity risks
- Identification of responsible board committee/subcommittee
- Processes by which the board/committee is informed about risks

*Management's Role (106(c)(2)):*
- Which management positions/committees are responsible
- Relevant expertise of those persons
- How management monitors prevention, detection, mitigation, and remediation
- Whether and how frequently management reports to the board

**Key design note:** The SEC uses "describe" — it does not prescribe specific items. The enumerated sub-items are non-exclusive suggestions. This principles-based approach creates natural variation in specificity and content, which is exactly what our rubric captures.

### Item 1.05 — Incident Disclosure (8-K)

Required within **4 business days** of determining a cybersecurity incident is material:
1. Material aspects of the nature, scope, and timing of the incident
2. Material impact or reasonably likely material impact on the registrant

**Key nuances:**
- The 4-day clock starts at the **materiality determination**, not the incident itself
- Companies explicitly do NOT need to disclose technical details that would impede response/remediation
- The AG can delay disclosure up to 120 days for national security
- Companies must amend the 8-K when new material information becomes available

**The May 2024 shift:** After SEC Director Erik Gerding clarified that Item 1.05 is only for *material* incidents, companies pivoted from Item 1.05 to Items 8.01/7.01 for non-material disclosures:
- Pre-guidance: 72% used Item 1.05, 28% used 8.01/7.01
- Post-guidance: 34% used Item 1.05, 66% used 8.01/7.01

**Our extraction must capture all three item types.**

### Compliance Timeline

| Date | Milestone |
|------|-----------|
| Jul 26, 2023 | Rule adopted |
| Sep 5, 2023 | Rule effective |
| Dec 15, 2023 | Item 1C required in 10-Ks (FY ending on/after this date) |
| Dec 18, 2023 | Item 1.05 required in 8-Ks |
| Jun 15, 2024 | Item 1.05 required for smaller reporting companies |
| Dec 15, 2024 | iXBRL tagging of Item 106 (CYD taxonomy) required |
| Dec 18, 2024 | iXBRL tagging of 8-K Item 1.05 required |

### iXBRL CYD Taxonomy

The SEC published the **Cybersecurity Disclosure (CYD) Taxonomy** on Sep 16, 2024. Starting with filings after Dec 15, 2024, Item 1C disclosures are tagged in Inline XBRL using the `cyd` prefix. This means 2025 filings can be parsed programmatically via XBRL rather than HTML scraping.

Taxonomy schema: `http://xbrl.sec.gov/cyd/2024`
Taxonomy guide: <https://xbrl.sec.gov/cyd/2024/cyd-taxonomy-guide-2024-09-16.pdf>

### Corpus Size

| Filing Type | Estimated Count (as of early 2026) |
|-------------|-----------------------------------|
| 10-K with Item 1C (FY2023 cycle) | ~4,500 |
| 10-K with Item 1C (FY2024 cycle) | ~4,500 |
| 8-K cybersecurity incidents | ~80 filings (55 incidents + amendments) |
| **Total filings** | **~9,000-10,000** |
| **Estimated paragraphs** (from Item 1C) | **~50,000-80,000** |

---

## 2. Labeling Rubric

### Dimension 1: Content Category (single-label per paragraph)

Derived directly from the SEC rule structure. Each paragraph receives exactly one category:

| Category | SEC Basis | What It Covers | Example Markers |
|----------|-----------|----------------|-----------------|
| **Board Governance** | 106(c)(1) | Board/committee oversight, briefing frequency, board cyber expertise | "Audit Committee," "Board of Directors oversees," "quarterly briefings" |
| **Management Role** | 106(c)(2) | CISO/CTO identification, qualifications, reporting structure | "Chief Information Security Officer," "reports to," "years of experience" |
| **Risk Management Process** | 106(b) | Assessment/identification processes, ERM integration, framework references | "NIST CSF," "ISO 27001," "risk assessment," "vulnerability management" |
| **Third-Party Risk** | 106(b) | Vendor oversight, external assessors/consultants, supply chain risk | "third-party," "service providers," "penetration testing by," "external auditors" |
| **Incident Disclosure** | 8-K 1.05 | Nature/scope/timing of incidents, material impact, remediation | "unauthorized access," "detected," "incident," "remediation," "impacted" |
| **Strategy Integration** | 106(b)(2) | Material impact on business strategy, cyber insurance, resource allocation | "business strategy," "insurance," "investment," "material," "financial condition" |
| **None/Other** | — | Boilerplate intros, legal disclaimers, non-cybersecurity content | Forward-looking statement disclaimers, general risk language |

### Dimension 2: Specificity (4-point ordinal per paragraph)

Grounded in Berkman et al. (2018), Gibson Dunn surveys, and PwC quality tiers:

| Level | Label | Definition | Decision Test |
|-------|-------|------------|---------------|
| **1** | **Generic Boilerplate** | Could apply to any company. Conditional language ("may," "could"). No named entities. Passive voice. | "Could I paste this into a different company's filing unchanged?" → Yes |
| **2** | **Sector-Adapted** | References industry context or named frameworks (NIST, ISO) but no firm-specific detail. | "Does this name something specific but not unique to THIS company?" → Yes |
| **3** | **Firm-Specific** | Names roles (CISO by name), committees, reporting lines, specific programs, or processes unique to the firm. Active voice with accountability. | "Does this contain at least one fact unique to THIS company?" → Yes |
| **4** | **Quantified-Verifiable** | Includes metrics, dollar amounts, dates, frequencies, third-party audit references, or independently verifiable facts. Multiple firm-specific facts with operational detail. | "Could an outsider verify a specific claim in this paragraph?" → Yes |

**Boundary rules for annotators:**
- If torn between 1 and 2: "Does it name ANY framework, standard, or industry term?" → Yes = 2
- If torn between 2 and 3: "Does it mention anything unique to THIS company?" → Yes = 3
- If torn between 3 and 4: "Does it contain TWO OR MORE specific, verifiable facts?" → Yes = 4

**Important:** EvasionBench (Ma et al., 2026) found that a 5-level ordinal scale failed (kappa < 0.5) and had to be collapsed to 3 levels. **Pilot test this 4-level scale on 50 paragraphs early.** Be prepared to merge levels 1-2 or 3-4 if inter-annotator agreement is poor.

### Boilerplate vs. Substantive Markers (from the literature)

**Boilerplate indicators:**
- Conditional language: "may," "could," "might"
- Generic risk statements without company-specific context
- No named individuals, committees, or frameworks
- Identical language across same-industry filings (cosine similarity > 0.8)
- Passive voice: "cybersecurity risks are managed"

**Substantive indicators:**
- Named roles and reporting structures ("Our CISO, Jane Smith, reports quarterly to the Audit Committee")
- Specific frameworks by name (NIST CSF, ISO 27001, SOC 2, PCI-DSS)
- Concrete processes (penetration testing frequency, tabletop exercises)
- Quantification (dollar investment, headcount, incident counts, training completion rates)
- Third-party names or types of assessments
- Temporal specificity (dates, frequencies, durations)

### Mapping to NIST CSF 2.0

For academic grounding, our content categories map to NIST CSF 2.0 functions:

| Our Category | NIST CSF 2.0 |
|-------------|-------------|
| Board Governance | GOVERN (GV.OV, GV.RR) |
| Management Role | GOVERN (GV.RR, GV.RM) |
| Risk Management Process | IDENTIFY (ID.RA), GOVERN (GV.RM), PROTECT (all) |
| Third-Party Risk | GOVERN (GV.SC) |
| Incident Disclosure | DETECT, RESPOND, RECOVER |
| Strategy Integration | GOVERN (GV.OC, GV.RM) |

---

## 3. Data Acquisition

### 3.1 Extracting 10-K Item 1C

**Recommended pipeline:**

```
sec-edgar-downloader  →  edgar-crawler  →  paragraph segmentation  →  dataset
  (bulk download)       (parse Item 1C)    (split into units)
```

**Tools:**

| Tool | Purpose | Install | Notes |
|------|---------|---------|-------|
| `sec-edgar-downloader` | Bulk download 10-K filings by CIK | `pip install sec-edgar-downloader` | Pure downloader, no parsing |
| `edgar-crawler` | Extract specific item sections to JSON | `git clone github.com/lefterisloukas/edgar-crawler` | Best for bulk extraction; configure `['1C']` in items list |
| `edgartools` | Interactive exploration, XBRL parsing | `pip install edgartools` | `tenk['Item 1C']` accessor; great for prototyping |
| `sec-api` | Commercial API, zero parsing headaches | `pip install sec-api` | `extractorApi.get_section(url, "1C", "text")` — paid, free tier available |

**EDGAR API requirements:**
- Rate limit: 10 requests/second
- Required: Custom `User-Agent` header with name and email (e.g., `"TeamName team@email.com"`)
- SEC blocks requests without proper User-Agent (returns 403)

**For iXBRL-tagged filings (2025+):** Use `edgartools` XBRL parser to extract CYD taxonomy elements directly. This gives pre-structured data aligned with regulatory categories.

**Fallback corpus:** `PleIAs/SEC` on HuggingFace (373K 10-K full texts, CC0 license) — but sections are NOT pre-parsed; you must extract Item 1C yourself.

### 3.2 Extracting 8-K Incident Disclosures

| Tool | Purpose | URL |
|------|---------|-----|
| `sec-8k-item105` | Extract Item 1.05 from 8-Ks, iXBRL + HTML fallback | `github.com/JMousqueton/sec-8k-item105` |
| `SECurityTr8Ker` | Monitor SEC RSS for new cyber 8-Ks, Slack/Teams alerts | `github.com/pancak3lullz/SECurityTr8Ker` |
| Debevoise 8-K Tracker | Curated list with filing links, dates, amendments | `debevoisedatablog.com/2024/03/06/cybersecurity-form-8-k-tracker/` |
| Board Cybersecurity Tracker | Links filings to MITRE ATT&CK, impact assessments | `board-cybersecurity.com/incidents/tracker` |

**Critical:** Must capture Item 1.05 AND Items 8.01/7.01 (post-May 2024 shift).

### 3.3 Paragraph Segmentation

Once Item 1C text is extracted, segment into paragraphs:
- Split on double newlines or `<p>` tags (depending on extraction format)
- Minimum paragraph length: 20 words (filter out headers, whitespace)
- Maximum paragraph length: 500 words (split longer blocks at sentence boundaries)
- Preserve metadata: company name, CIK, ticker, filing date, fiscal year

Expected yield: ~5-8 paragraphs per Item 1C disclosure × ~9,000 filings = **~50,000-70,000 paragraphs**

### 3.4 Pre-Existing Datasets and Resources

| Resource | What It Is | URL |
|----------|-----------|-----|
| PleIAs/SEC | 373K full 10-K texts (CC0) | `huggingface.co/datasets/PleIAs/SEC` |
| EDGAR-CORPUS | 220K filings with sections pre-parsed (Apache 2.0) | `huggingface.co/datasets/eloukas/edgar-corpus` |
| Board Cybersecurity 23-Feature Analysis | Regex-based extraction of 23 governance/security features from 4,538 10-Ks | `board-cybersecurity.com/research/insights/` |
| Gibson Dunn S&P 100 Survey | Detailed feature analysis of disclosure content | `corpgov.law.harvard.edu/2025/01/09/cybersecurity-disclosure-overview-...` |
| Florackis et al. (2023) "Cybersecurity Risk" | Firm-level cyber risk measure from 10-K text, RFS publication | SSRN: 3725130, data companion: 4319606 |
| zeroshot/cybersecurity-corpus | General cybersecurity text (not SEC-specific, useful for DAPT) | `huggingface.co/datasets/zeroshot/cybersecurity-corpus` |

---

## 4. GenAI Labeling Pipeline

### 4.1 Multi-Model Consensus (EvasionBench Architecture)

We follow Ma et al. (2026, arXiv:2601.09142) — the EvasionBench pipeline designed for an almost identical task (ordinal classification of financial text). Their approach achieved Cohen's Kappa = 0.835 with human annotators.

**Stage 1 — Dual Independent Annotation (all ~50K paragraphs):**
- Annotator A: **Claude Sonnet 4.6** (batch API — $1.50/$7.50 per M input/output tokens)
- Annotator B: **Gemini 2.5 Flash** ($0.30/$2.50 per M tokens)
- Architectural diversity (Anthropic vs. Google) minimizes correlated errors
- ~83% of paragraphs will have immediate agreement

**Stage 2 — Judge Panel for Disagreements (~17% = ~8,500 cases):**
- Judge 1: **Claude Opus 4.6** (batch — $2.50/$12.50 per M tokens)
- Judge 2: **GPT-5** (batch — $0.63/$5.00 per M tokens)
- Judge 3: **Gemini 2.5 Pro** (~$2-4/$12-18 per M tokens)
- Majority vote (2/3) resolves disagreements
- Anti-bias: randomize label presentation order

**Stage 3 — Active Learning Pass:**
- Cluster remaining low-confidence cases
- Human-review ~5% (~2,500 cases) to identify systematic errors
- Iterate rubric if needed, re-run affected subsets

### 4.2 Prompt Template

```
SYSTEM PROMPT:
You are an expert annotator classifying paragraphs from SEC cybersecurity
disclosures (10-K Item 1C and 8-K Item 1.05 filings).

For each paragraph, assign:
(a) content_category: exactly one of ["Board Governance", "Management Role",
    "Risk Management Process", "Third-Party Risk", "Incident Disclosure",
    "Strategy Integration", "None/Other"]
(b) specificity_level: integer 1-4

CONTENT CATEGORIES:
- Board Governance: Board/committee oversight of cybersecurity risks, briefing
  frequency, board member cyber expertise
- Management Role: CISO/CTO/CIO identification, qualifications, reporting
  structure, management committees
- Risk Management Process: Risk assessment methodology, framework adoption
  (NIST, ISO, etc.), vulnerability management, monitoring, incident response
  planning, tabletop exercises
- Third-Party Risk: Vendor/supplier risk oversight, external assessor engagement,
  contractual security requirements, supply chain risk
- Incident Disclosure: Description of cybersecurity incidents, scope, timing,
  impact, remediation actions
- Strategy Integration: Material impact on business strategy or financials,
  cyber insurance, investment/resource allocation
- None/Other: Boilerplate introductions, legal disclaimers, forward-looking
  statement warnings, non-cybersecurity content

SPECIFICITY SCALE:
1 - Generic Boilerplate: Could apply to any company. Conditional language
    ("may," "could"). No named entities.
    Example: "We face cybersecurity risks that could materially affect our
    business operations."

2 - Sector-Adapted: References industry context or named frameworks but no
    firm-specific details.
    Example: "We employ a cybersecurity framework aligned with the NIST
    Cybersecurity Framework to manage cyber risk."

3 - Firm-Specific: Contains facts unique to this company — named roles,
    committees, specific programs, reporting lines.
    Example: "Our CISO reports quarterly to the Audit Committee on
    cybersecurity risk posture and incident trends."

4 - Quantified-Verifiable: Includes metrics, dollar amounts, dates,
    frequencies, third-party audit references, or independently verifiable facts.
    Example: "Following the March 2024 incident affecting our payment systems,
    we engaged CrowdStrike and implemented network segmentation at a cost of
    $4.2M, completing remediation in Q3 2024."

BOUNDARY RULES:
- If torn between 1 and 2: "Does it name ANY framework, standard, or industry
  term?" If yes → 2
- If torn between 2 and 3: "Does it mention anything unique to THIS company?"
  If yes → 3
- If torn between 3 and 4: "Does it contain TWO OR MORE specific, verifiable
  facts?" If yes → 4

Respond with valid JSON only. Include a brief reasoning field.

USER PROMPT:
Company: {company_name}
Filing Date: {filing_date}
Paragraph:
{paragraph_text}
```

**Expected output:**
```json
{
  "content_category": "Board Governance",
  "specificity_level": 3,
  "reasoning": "Identifies Audit Committee by name and describes quarterly briefing cadence, both firm-specific facts."
}
```

### 4.3 Practical Labeling Notes

- **Always use Batch API.** Both OpenAI and Anthropic offer 50% discount for async/batch processing (24-hour turnaround). No reason to use real-time.
- **Prompt caching:** The system prompt (~800 tokens) is identical for every request. With Anthropic's prompt caching, cached reads cost 10% of base price. Combined with batch discount = 5% of standard price.
- **Structured output mode:** Use JSON mode / structured outputs on all providers. Reduces parsing errors by ~90%.
- **Reasoning models (o3, extended thinking):** Use ONLY as judges for disagreement cases, not as primary annotators. They're overkill for clear-cut classification and expensive due to reasoning token consumption.

### 4.4 Gold Set Protocol

**Non-negotiable for publication quality.**

1. Sample 300-500 paragraphs, stratified by:
   - Expected content category (ensure all 7 represented)
   - Expected specificity level (ensure all 4 represented)
   - Industry (financial services, tech, healthcare, manufacturing)
   - Filing year (FY2023 vs FY2024)

2. Two team members independently label the full gold set

3. Compute:
   - Cohen's Kappa (binary/nominal categories)
   - Krippendorff's Alpha (ordinal specificity scale)
   - Per-class confusion matrices
   - Target: Kappa > 0.75 ("substantial agreement")

4. Adjudicate disagreements with a third team member

5. Run the full MMC pipeline on the gold set and compare

---

## 5. Model Strategy

### 5.1 Primary: SEC-ModernBERT-large

**This model does not exist publicly. Building it is a core contribution.**

**Base model:** `answerdotai/ModernBERT-large`
- 395M parameters
- 8,192-token native context (vs. 512 for DeBERTa-v3-large)
- RoPE + alternating local/global attention + FlashAttention
- 2-4x faster than DeBERTa-v3-large
- Apache 2.0 license
- GLUE: 90.4 (only 1 point behind DeBERTa-v3-large's 91.4)

**Step 1 — Domain-Adaptive Pre-Training (DAPT):**

Continue MLM pre-training on SEC filing text to create "SEC-ModernBERT-large":

- **Training corpus:** 200-500M tokens of SEC filings (from PleIAs/SEC or your own EDGAR download). Include 10-Ks, 10-Qs, 8-Ks, proxy statements.
- **MLM objective:** 30% masking rate (ModernBERT convention)
- **Learning rate:** ~5e-5 (much lower than from-scratch pre-training)
- **Hardware (RTX 3090):** bf16, gradient checkpointing, seq_len=1024-2048, batch_size=2-4 + gradient accumulation to effective batch 16-32
- **VRAM estimate:** ~12-15GB at batch=4, seq=2048 with gradient checkpointing — fits on 3090

**Evidence DAPT works:**
- Gururangan et al. (2020): consistent improvements across all tested domains
- Patent domain ModernBERT (arXiv:2509.14926): +0.9 to +2.8 F1 from continued pre-training on 31.6B tokens
- Scaling-law analysis on SEC filings (arXiv:2512.12384): consistent improvement with largest gains in first 200M tokens
- Databricks customer report: 70% → 95% accuracy with domain-specific pre-training

**Step 2 — Classification Fine-Tuning:**

Fine-tune SEC-ModernBERT-large on the 50K labeled paragraphs:

- **Sequence length:** 2048 tokens (captures full regulatory paragraphs that 512-token models truncate)
- **Two classification heads:** content_category (7-class softmax) + specificity_level (4-class ordinal or softmax)
- **Add supervised contrastive loss (SCL):** Combine standard cross-entropy with SCL that pulls same-class embeddings together. Gunel et al. (2020) showed +0.5-1.5% improvement, especially for rare/imbalanced classes.
- **VRAM:** ~11-13GB at batch=8, seq=2048 in bf16 — comfortable on 3090
- **3090 supports bf16** natively via Ampere Tensor Cores. Use `bf16=True` in HuggingFace Trainer. No loss scaling needed (unlike fp16).

### 5.2 Dark Horse: NeoBERT

`chandar-lab/NeoBERT`
- **250M parameters** (100M fewer than ModernBERT-large, 185M fewer than DeBERTa-v3-large)
- 4,096-token context
- SwiGLU, RoPE, Pre-RMSNorm, FlashAttention
- GLUE: 89.0 (close to DeBERTa-v3-large's 91.4)
- MTEB: 51.3 (crushes everything else — ModernBERT-large is 46.9)
- MIT license
- Requires `trust_remote_code=True`
- Almost nobody is using it for domain-specific tasks

Same DAPT + fine-tuning pipeline as ModernBERT-large, with even less VRAM.

### 5.3 Baseline: DeBERTa-v3-large

`microsoft/deberta-v3-large`
- 304M backbone + 131M embedding = ~435M total
- 512-token native context (can push to ~1024)
- Disentangled attention + ELECTRA-style RTD pre-training
- GLUE: **91.4** — still the highest among all encoders
- MIT license
- **Weakness:** no long context support, completely fails at retrieval tasks

Include as baseline to show improvement from (a) long context and (b) DAPT.

### 5.4 Ablation Design

| Experiment | Model | Context | DAPT | SCL | Purpose |
|-----------|-------|---------|------|-----|---------|
| Baseline | DeBERTa-v3-large | 512 | No | No | "Standard" approach per syllabus |
| + Long context | ModernBERT-large | 2048 | No | No | Shows context window benefit |
| + Domain adapt | SEC-ModernBERT-large | 2048 | Yes | No | Shows DAPT benefit |
| + Contrastive | SEC-ModernBERT-large | 2048 | Yes | Yes | Shows SCL benefit |
| Efficiency | NeoBERT (+ DAPT) | 2048 | Yes | Yes | 40% fewer params, comparable? |
| **Ensemble** | SEC-ModernBERT + DeBERTa | mixed | mixed | — | Maximum performance |

The ensemble averages logits from SEC-ModernBERT-large (long context, domain-adapted) and DeBERTa-v3-large (highest raw NLU). Their architecturally different attention mechanisms mean uncorrelated errors.

### 5.5 Training Framework

- **Encoder fine-tuning:** HuggingFace `transformers` + `Trainer` with `AutoModelForSequenceClassification`
- **DAPT continued pre-training:** HuggingFace `transformers` with `DataCollatorForLanguageModeling`
- **SCL implementation:** Custom training loop or modify Trainer with dual loss
- **Few-shot prototyping:** `SetFit` (sentence-transformers based) for rapid baseline in <30 seconds

**Key reference:** Phil Schmid's ModernBERT fine-tuning tutorial: <https://www.philschmid.de/fine-tune-modern-bert-in-2025>

### 5.6 Domain-Specific Encoder Models (for comparison only)

These exist but are all BERT-base (110M params, 512 context) — architecturally outdated:

| Model | HuggingFace ID | Domain | Params |
|-------|---------------|--------|--------|
| SEC-BERT | `nlpaueb/sec-bert-base` | 260K 10-K filings | 110M |
| SEC-BERT-SHAPE | `nlpaueb/sec-bert-shape` | Same, with number normalization | 110M |
| FinBERT | `ProsusAI/finbert` | Financial sentiment | 110M |
| Legal-BERT | `nlpaueb/legal-bert-base-uncased` | 12GB legal text | 110M |
| SecureBERT | arXiv:2204.02685 | Cybersecurity text | 110M |

Our DAPT approach on a modern architecture (ModernBERT-large or NeoBERT) will outperform all of these. Include SEC-BERT as an additional baseline if time permits.

---

## 6. Evaluation & Validation

### 6.1 Required Metrics (from syllabus)

| Metric | Target | Notes |
|--------|--------|-------|
| **Macro-F1** on human holdout | Report per-class and overall | Minimum 1.2K holdout examples |
| **Per-class F1** | Identify weak categories | Expect "None/Other" to be noisiest |
| **Krippendorff's Alpha** | > 0.67 (adequate), > 0.75 (good) | GenAI labels vs. human gold set |
| **Calibration plots** | Reliability diagrams | For probabilistic outputs (softmax) |
| **Robustness splits** | Report by time period, industry, filing size | FY2023 vs FY2024; GICS sector; word count quartiles |

### 6.2 Downstream Validity Tests

These demonstrate that the classifier's predictions correlate with real-world outcomes:

**Test 1 — Breach Prediction (strongest):**
- Do firms with lower specificity scores subsequently appear in breach databases?
- Cross-reference with:
  - **Privacy Rights Clearinghouse** (80K+ breaches; Mendeley dataset provides ticker/CIK matching: `doi.org/10.17632/w33nhh3282.1`)
  - **VCDB** (8K+ incidents, VERIS schema: `github.com/vz-risk/VCDB`)
  - **Board Cybersecurity Incident Tracker** (direct SEC filing links: `board-cybersecurity.com/incidents/tracker`)
  - **CISA KEV Catalog** (known exploited vulnerabilities: `cisa.gov/known-exploited-vulnerabilities-catalog`)

**Test 2 — Market Reaction (if time permits):**
- Event study: abnormal returns in [-1, +3] window around 8-K Item 1.05 filing
- Does prior Item 1C disclosure quality predict magnitude of reaction?
- Small sample (~55 incidents) but high signal
- Regression: CAR = f(specificity_score, incident_severity, firm_size, industry)

**Test 3 — Known-Groups Validity (easy, always include):**
- Do regulated industries (financial services under NYDFS, healthcare under HIPAA) produce systematically higher-specificity disclosures?
- Do larger firms (by market cap) have more specific disclosures?
- These are expected results — confirming them validates the measure

**Test 4 — Boilerplate Index (easy, always include):**
- Compute cosine similarity of each company's Item 1C to the industry-median disclosure
- Does our specificity score inversely correlate with this similarity measure?
- This is an independent, construct-free validation of the "uniqueness" dimension

### 6.3 External Benchmark

Per syllabus: "include an external benchmark approach (i.e., previous best practice)."

- **Board Cybersecurity's 23-feature regex extraction** is the natural benchmark. Their binary (present/absent) feature coding is the prior best practice. Our classifier should capture everything their regex captures plus the quality/specificity dimension they cannot measure.
- **Florackis et al. (2023) cybersecurity risk measure** from Item 1A text is another comparison — different section (1A vs 1C), different methodology (dictionary vs. classifier), different era (pre-rule vs. post-rule).

---

## 7. Release Artifacts

By project end, publish:

1. **HuggingFace Dataset:** Extracted Item 1C paragraphs with labels — first public dataset of its kind
2. **SEC-ModernBERT-large:** Domain-adapted model weights — first SEC-specific ModernBERT
3. **Fine-tuned classifiers:** Content category + specificity models, ready to deploy
4. **Labeling rubric + prompt templates:** Reusable for future SEC disclosure research
5. **Extraction pipeline code:** EDGAR → structured paragraphs → labeled dataset
6. **Evaluation notebook:** All metrics, ablations, validation tests

---

## 8. 3-Week Schedule (6 People)

### Team Roles

| Role | Person(s) | Primary Responsibility |
|------|-----------|----------------------|
| **Data Lead** | Person A | EDGAR extraction pipeline, paragraph segmentation, data cleaning |
| **Data Support** | Person B | 8-K extraction, breach database cross-referencing, dataset QA |
| **Labeling Lead** | Person C | Rubric refinement, GenAI prompt engineering, MMC pipeline orchestration |
| **Annotation** | Person D | Gold set human labeling, inter-rater reliability, active learning review |
| **Model Lead** | Person E | DAPT pre-training, classification fine-tuning, ablation experiments |
| **Eval & Writing** | Person F | Validation tests, metrics computation, final presentation, documentation |

### Week 1: Data + Rubric

| Day | Person A (Data Lead) | Person B (Data Support) | Person C (Labeling Lead) | Person D (Annotation) | Person E (Model Lead) | Person F (Eval & Writing) |
|-----|---------------------|------------------------|-------------------------|----------------------|----------------------|--------------------------|
| **Mon** | Set up EDGAR extraction pipeline (edgar-crawler + sec-edgar-downloader) | Set up 8-K extraction (sec-8k-item105) | Draft labeling rubric v1 from SEC rule | Read SEC rule + Gibson Dunn survey | Download ModernBERT-large, set up training env | Outline evaluation plan, identify breach databases |
| **Tue** | Begin bulk 10-K download (FY2023 cycle) | Extract all 8-K cyber filings (Items 1.05, 8.01, 7.01) | Pilot rubric on 30 paragraphs with Claude Opus | Pilot rubric on same 30 paragraphs independently | Download PleIAs/SEC corpus, prepare DAPT data | Download PRC Mendeley dataset, VCDB, set up cross-ref |
| **Wed** | Continue download (FY2024 cycle), begin Item 1C parsing | Build company metadata table (CIK → ticker → GICS sector → market cap) | Compare pilot labels with Person D, revise rubric boundary rules | Compute initial inter-rater agreement, flag problem areas | Begin DAPT pre-training (SEC-ModernBERT-large, ~2-3 days on 3090) | Map VCDB incidents to SEC filers by name matching |
| **Thu** | Paragraph segmentation pipeline, quality checks | Merge 8-K incidents with Board Cybersecurity Tracker data | Rubric v2 finalized; set up batch API calls for dual annotation | Begin gold set sampling (300-500 paragraphs, stratified) | DAPT continues (monitor loss, checkpoint) | Draft presentation outline |
| **Fri** | **Milestone: Full paragraph corpus ready (~50K+ paragraphs)** | **Milestone: 8-K incident dataset complete** | Launch Stage 1 dual annotation (Sonnet + Gemini Flash) on full corpus | Continue gold set labeling (target: finish 150/300) | DAPT continues | **Milestone: Evaluation framework + breach cross-ref ready** |

### Week 2: Labeling + Training

| Day | Person A | Person B | Person C | Person D | Person E | Person F |
|-----|----------|----------|----------|----------|----------|----------|
| **Mon** | Data cleaning — fix extraction errors, handle edge cases | Assist Person D with gold set labeling (second annotator) | Monitor dual annotation results (should be ~60% complete) | Continue gold set labeling, begin second pass | DAPT finishes; begin DeBERTa-v3-large baseline fine-tuning | Compute gold set inter-rater reliability (Kappa, Alpha) |
| **Tue** | Build train/holdout split logic (stratified by industry, year, specificity) | Continue gold set second-annotator pass | Dual annotation complete → extract disagreements (~17%) | Finish gold set, adjudicate disagreements with Person C | Baseline results in; begin ModernBERT-large (no DAPT) fine-tuning | Analyze gold set confusion patterns, recommend rubric tweaks |
| **Wed** | Final dataset assembly | Assist Person C with judge panel setup | Launch Stage 2 judge panel (Opus + GPT-5 + Gemini Pro) on disagreements | Run MMC pipeline on gold set, compare with human labels | ModernBERT-large done; begin SEC-ModernBERT-large fine-tuning | **Milestone: Gold set validated, Kappa computed** |
| **Thu** | Prepare HuggingFace dataset card | Begin active learning — cluster low-confidence cases | Judge panel results in; assemble final labeled dataset | Human-review ~500 low-confidence cases from active learning | SEC-ModernBERT-large done; begin NeoBERT experiment | Robustness split analysis (by industry, year, filing size) |
| **Fri** | **Milestone: Labeled dataset finalized (~50K paragraphs)** | **Milestone: Active learning pass complete** | QA final labels — spot-check 100 random samples | Assist Person E with evaluation | Begin ensemble experiment (SEC-ModernBERT + DeBERTa) | **Milestone: All baseline + ablation training complete** |

### Week 3: Evaluation + Presentation

| Day | Person A | Person B | Person C | Person D | Person E | Person F |
|-----|----------|----------|----------|----------|----------|----------|
| **Mon** | Publish dataset to HuggingFace | Run breach prediction validation (PRC + VCDB cross-ref) | Write labeling methodology section | Calibration plots for all models | Final ensemble tuning; publish model weights to HuggingFace | Compile all metrics into evaluation tables |
| **Tue** | Write data acquisition section | Run known-groups validity (industry, size effects) | Write GenAI labeling section | Boilerplate index validation (cosine similarity) | Write model strategy section | Draft full results section |
| **Wed** | Code cleanup, README for extraction pipeline | Market reaction analysis if feasible (optional) | Review/edit all written sections | Create figures: confusion matrices, calibration plots | Review/edit model section | Assemble presentation slides |
| **Thu** | **Full team: review presentation, rehearse, polish** | | | | | |
| **Fri** | **Presentation day** | | | | | |

### Critical Path & Dependencies

```
Week 1:
  Data extraction (A,B) ──────────────────┐
  Rubric design (C,D) ───→ Pilot test ───→ Rubric v2 ──→ GenAI labeling launch (Fri)
  DAPT pre-training (E) ──────────────────────────────────→ (continues into Week 2)
  Eval framework (F) ─────────────────────────────────────→ (ready for Week 2)

Week 2:
  GenAI labeling (C) ───→ Judge panel ───→ Active learning ───→ Final labels (Fri)
  Gold set (D + B) ──────────────────────→ Validated (Wed)
  Fine-tuning experiments (E) ───→ Baseline → ModernBERT → SEC-ModernBERT → NeoBERT → Ensemble
  Metrics (F) ───────────────────→ Robustness splits

Week 3:
  Validation tests (B,D,F) ───→ Breach prediction, known-groups, boilerplate index
  Writing (all) ──────────────→ Sections → Review → Presentation
  Release (A,E) ──────────────→ HuggingFace dataset + model weights
```

---

## 9. Budget

| Item | Cost |
|------|------|
| GenAI labeling — Stage 1 dual annotation (50K × 2 models, batch) | ~$115 |
| GenAI labeling — Stage 2 judge panel (~8.5K × 3 models, batch) | ~$55 |
| Prompt caching savings | -$30 to -$40 |
| SEC EDGAR data | $0 (public domain) |
| Breach databases (PRC open data, VCDB, CISA KEV) | $0 |
| Compute (RTX 3090, already owned) | $0 |
| **Total** | **~$130-170** |

For comparison, human annotation at $0.50/label would cost $25,000+ for single-annotated, $75,000+ for triple-annotated.

---

## 10. Reference Links

### SEC Rule & Guidance
- [SEC Final Rule 33-11216 (PDF)](https://www.sec.gov/files/rules/final/2023/33-11216.pdf)
- [SEC Fact Sheet](https://www.sec.gov/files/33-11216-fact-sheet.pdf)
- [SEC Small Business Compliance Guide](https://www.sec.gov/resources-small-businesses/small-business-compliance-guides/cybersecurity-risk-management-strategy-governance-incident-disclosure)
- [CYD iXBRL Taxonomy Guide (PDF)](https://xbrl.sec.gov/cyd/2024/cyd-taxonomy-guide-2024-09-16.pdf)

### Law Firm Surveys & Analysis
- [Gibson Dunn S&P 100 Survey (Harvard Law Forum)](https://corpgov.law.harvard.edu/2025/01/09/cybersecurity-disclosure-overview-a-survey-of-form-10-k-cybersecurity-disclosures-by-sp-100-companies/)
- [PwC First Wave of 10-K Cyber Disclosures](https://www.pwc.com/us/en/services/consulting/cybersecurity-risk-regulatory/sec-final-cybersecurity-disclosure-rules/sec-10-k-cyber-disclosures.html)
- [Debevoise 8-K Lessons Learned](https://www.debevoisedatablog.com/2024/03/06/cybersecurity-form-8-k-tracker/)
- [Greenberg Traurig 2025 Trends Update](https://www.gtlaw.com/en/insights/2025/2/sec-cybersecurity-disclosure-trends-2025-update-on-corporate-reporting-practices)
- [Known Trends: First Year of 8-K Filings](https://www.knowntrends.com/2025/02/snapshot-the-first-year-of-cybersecurity-incident-filings-on-form-8-k-since-adoption-of-new-rules/)
- [NYU: Lessons Learned from 8-K Reporting](https://wp.nyu.edu/compliance_enforcement/2025/03/25/lessons-learned-one-year-of-form-8-k-material-cybersecurity-incident-reporting/)

### Data Extraction Tools
- [edgar-crawler (GitHub)](https://github.com/lefterisloukas/edgar-crawler)
- [edgartools (GitHub)](https://github.com/dgunning/edgartools)
- [sec-edgar-downloader (PyPI)](https://pypi.org/project/sec-edgar-downloader/)
- [sec-8k-item105 (GitHub)](https://github.com/JMousqueton/sec-8k-item105)
- [SECurityTr8Ker (GitHub)](https://github.com/pancak3lullz/SECurityTr8Ker)
- [SEC EDGAR APIs](https://www.sec.gov/search-filings/edgar-application-programming-interfaces)
- [SEC EDGAR Full-Text Search](https://efts.sec.gov/LATEST/search-index)

### Datasets
- [PleIAs/SEC — 373K 10-K texts (HuggingFace, CC0)](https://huggingface.co/datasets/PleIAs/SEC)
- [EDGAR-CORPUS — 220K filings, sections parsed (HuggingFace, Apache 2.0)](https://huggingface.co/datasets/eloukas/edgar-corpus)
- [Board Cybersecurity 23-Feature Analysis](https://www.board-cybersecurity.com/research/insights/risk-frameworks-security-standards-in-10k-item-1c-cybersecurity-disclosures-through-2024-06-30/)
- [Board Cybersecurity Incident Tracker](https://www.board-cybersecurity.com/incidents/tracker)
- [PRC Mendeley Breach Dataset (with tickers)](http://dx.doi.org/10.17632/w33nhh3282.1)
- [VCDB (GitHub)](https://github.com/vz-risk/VCDB)
- [CISA KEV Catalog](https://www.cisa.gov/known-exploited-vulnerabilities-catalog)
- [zeroshot/cybersecurity-corpus (HuggingFace)](https://huggingface.co/datasets/zeroshot/cybersecurity-corpus)

### Models
- [ModernBERT-large (HuggingFace, Apache 2.0)](https://huggingface.co/answerdotai/ModernBERT-large)
- [ModernBERT-base (HuggingFace, Apache 2.0)](https://huggingface.co/answerdotai/ModernBERT-base)
- [NeoBERT (HuggingFace, MIT)](https://huggingface.co/chandar-lab/NeoBERT)
- [DeBERTa-v3-large (HuggingFace, MIT)](https://huggingface.co/microsoft/deberta-v3-large)
- [SEC-BERT (HuggingFace)](https://huggingface.co/nlpaueb/sec-bert-base)
- [ProsusAI FinBERT (HuggingFace)](https://huggingface.co/ProsusAI/finbert)
- [EvasionBench Eva-4B-V2 (HuggingFace)](https://huggingface.co/FutureMa/Eva-4B-V2)

### Key Papers
- Ringel (2023), "Creating Synthetic Experts with Generative AI" — [SSRN:4542949](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4542949)
- Ludwig et al. (2026), "Extracting Consumer Insight from Text" — [arXiv:2602.15312](https://arxiv.org/abs/2602.15312)
- Ma et al. (2026), "EvasionBench" — [arXiv:2601.09142](https://arxiv.org/abs/2601.09142)
- Florackis et al. (2023), "Cybersecurity Risk" — [SSRN:3725130](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3725130)
- Gururangan et al. (2020), "Don't Stop Pretraining" — [arXiv:2004.10964](https://arxiv.org/abs/2004.10964)
- ModernBERT paper — [arXiv:2412.13663](https://arxiv.org/abs/2412.13663)
- NeoBERT paper — [arXiv:2502.19587](https://arxiv.org/abs/2502.19587)
- ModernBERT vs DeBERTa-v3 comparison — [arXiv:2504.08716](https://arxiv.org/abs/2504.08716)
- Patent domain ModernBERT DAPT — [arXiv:2509.14926](https://arxiv.org/abs/2509.14926)
- SEC filing scaling laws for continued pre-training — [arXiv:2512.12384](https://arxiv.org/abs/2512.12384)
- Gunel et al. (2020), Supervised Contrastive Learning for fine-tuning — [OpenReview](https://openreview.net/forum?id=cu7IUiOhujH)
- Phil Schmid, "Fine-tune classifier with ModernBERT in 2025" — [philschmid.de](https://www.philschmid.de/fine-tune-modern-bert-in-2025)
- Berkman et al. (2018), Cybersecurity disclosure quality scoring
- Li, No, and Boritz (2023), BERT-based classification of cybersecurity disclosures
- Scalable 10-K Analysis with LLMs — [arXiv:2409.17581](https://arxiv.org/abs/2409.17581)
- SecureBERT — [arXiv:2204.02685](https://arxiv.org/abs/2204.02685)
- Gilardi et al. (2023), "ChatGPT Outperforms Crowd-Workers" (PNAS) — [arXiv:2303.15056](https://arxiv.org/abs/2303.15056)
- Pangakis et al. (2023), "Automated Annotation Requires Validation" — [arXiv:2306.00176](https://arxiv.org/abs/2306.00176)

### Methodological Playbook
- [Ringel 2026 Capstone Pipeline Example (ZIP)](http://ringel.ai/UNC/2026/helpers/Ringel_2026_VerticalAI_Capstone_Pipeline_Example.zip)
- [Class 21 Exemplary Presentation (PDF)](http://www.ringel.ai/UNC/2026/BUSI488/Class21/Ringel_488-2026_Class21.pdf)
