WRDS Audit + Compliance | Frequently asked questions
Who is this article for?
Users wanting to learn more about WRDS Audit + Compliance.
No special access or permissions are required.
This article answers the most commonly asked questions for WRDS Audit + Compliance.
General
What datasets are available with an Audit + Compliance subscription?
The following datasets are available with an Audit + Compliance subscription:
| Feed # | Feed name | Search page |
|---|---|---|
02 |
AUDITOR_CHANGES |
|
03 |
AUDIT_FEES |
|
04 |
AUDIT_FEES_RESTATED |
|
06 |
BENEFIT_PLAN_OPINIONS |
|
07 |
CURRENT_AUDITOR |
|
08 |
AUDITOR_DURING |
N/A |
10 |
SOX_302_DISCLOSURE_CONTROLS |
|
11 |
SOX_404_INTERNAL_CONTROLS |
|
17 |
DIRECTOR_AND_OFFICER_CHANGES |
|
20 |
NT |
|
34 |
REVISED_AUDIT_OPINIONS |
|
39 |
FINANCIAL_RESTATEMENTS |
Note
Out of-Period Adjustments are in the Accounting + Oversight module on the Ideagen Audit Analytics Platform.
Audit Fees
What is the difference between Feed 03 (AUDIT_FEES) and Feed 04 (AUDIT_FEES_RESTATED)? Which one should I use?
Feed 03 (AUDIT_FEES) contains the original fee amounts as disclosed in a company's initial filing. Feed 04 (AUDIT_FEES_RESTATED) contains the most current fee amounts, incorporating any updates disclosed in later filings.
When no restatement has occurred, the two feeds will match. Feed 04 is recommended unless the analysis specifically requires original, non-restated values.
How do I interpret the restatement flag in audit fee datasets?
The restatement flag is applied consistently across audit fee datasets:
- restatement = 0 → the fee reflects the original disclosure
- restatement = 1 → the fee was updated in a later filing
If an audit fee is restated, does that mean the restated amount is the fee that was actually incurred?
There is an implication that the restated amount reflects what was ultimately incurred, though this cannot be stated conclusively. It is most accurately described as the most recently reported version of the fee.
Why are there duplicate or multiple fee rows for the same company and fiscal year?
This is expected. A company may engage multiple auditors in a single fiscal year - such as a primary auditor, a predecessor auditor, or carveout auditors - and each auditor relationship is represented as a separate row. In U.S. fee datasets, each row represents a unique combination of company, auditor, and fiscal year end. Total audit fees for the company-year are repeated across auditor rows. To obtain a single total per company-year, sum fees across all auditor rows or retain one row if all MATCHFY totals match.
How do I extract one final audit fee per-company year?
To produce a single, authoritative company-year total:
- Pull Feed 04 (AUDIT_FEES_RESTATED).
- Group by COMPANY_FKEY and FISCAL_YEAR.
- Sum across auditors if needed, or retain one row if MATCHFY values match.
- Use the indicator fields to select restated or original fee values as appropriate.
How do I extract audit firm-year totals?
To produce an audit firm-year total, group by AUDITOR_FKEY and FISCAL_YEAR, then sum fee amounts across all companies the auditor served in that year.
Audit Opinions
Legacy Feed 5 (AUDIT_OPINIONS) was deprecated in early 2024. Feed 34 (REVISED_AUDIT_OPINIONS) is now the official source, containing all audit opinions, including multiple opinions per company per fiscal year.
Feed 5 only kept the first opinion per company per year. Feed 34 also includes Form AP data. To replicate Feed 5 using Feed 34, select the earliest FILE_DATE for each COMPANY_FKEY and FISCAL_YEAR_ENDED_OF_OPINION.
What is the inclusion criteria for audit opinions?
Feed 34 includes audit opinions that meet all of the following criteri
- Filed by SEC registrants
- Issued on the registrant's own financial statements
- Collected across 80+ SEC form types
- Excludes subsidiaries, predecessor entities, and pre-merger entities
- Since 2016, all duplicates are retained
What are the different types of audit opinions?
There are four types of audit opinions:
- Unqualified Opinion – A "clean" opinion and the most common type. Issued when the auditor determines that financial records are fairly presented and maintained in accordance with applicable regulations, with no material misstatements identified.
- Qualified Opinion – A modified opinion issued when a material misstatement exists in the financial statements but is not pervasive. Typically involves a single isolated issue.
- Disclaimer of Opinion – Issued when the auditor was unable to obtain sufficient appropriate evidence to express an opinion. Common causes include management's inability to produce supporting documentation, intentional withholding of financial records, or a breakdown in communication between management and the auditor.
- Adverse Opinion – A modified opinion issued when the auditor concludes that the financial statements are materially misstated and the misstatements are pervasive. Considered the opposite of a clean opinion; financial statements carrying an adverse opinion are regarded as unreliable.
Why are audit opinion types (unqualified, qualified, adverse, etc.) not available for U.S. companies?
SEC-registered companies rarely publish financial statements carrying a disclaimed or qualified audit opinion. Rather than filing under such conditions, companies typically submit a Form NT (Notification of Late Filing, also known as Form 12b-25) to delay submission until an unqualified opinion can be obtained. When opinion type data is absent or non-standard in SEC filings, it generally reflects a filing delay rather than a disclosed deficiency. Opinion type is captured for European companies, where modified opinions occur more frequently.
Where can I find the name of the signing/engagement partner?
Partner data is stored in supporting tables and does not appear in the WRDS web query form. It must be accessed via WRDS SAS Studio. For U.S. companies, partner name and ENGAGEMENT_PARTNER_ID are available in form_ap_filing.txt, located at:
wrds → audit → sasdata → audit_comp → f34_form_ap_filing.sas7bdat
How do I identify the audit office associated with a signing partner?
Use AUDITOR_CITY and AUDITOR_STATE_NAME from Feed 34 (REVISED_AUDIT_OPINIONS). If additional partner-level detail is needed, merge with form_ap_filing.txt.
How do I merge Auditor Change data with Audit Opinions or Audit Fees?
There is no direct link between the Auditor Change and Audit Opinions or Audit Fees datasets. Because auditor changes are not necessarily tied to a specific annual filing or fiscal year end, the records do not align straightforwardly. One approach is to construct an approximate match by creating a unique key from multiple columns. Using the Dismissed or Engaged Effective Date fields is recommended for this purpose.
How can I merge the Audit Opinions with the Critical Audit Matters dataset?
AUDIT_OP_KEY in Feed 34 is the primary key for the audit opinion table, with a unique value per opinion record. To link to the Critical Audit Matters dataset, join AUDIT_OP_KEY in Feed 34 to AUDIT_OPINION_FKEY in Feed 78 (PIT_CRITICAL_AUDIT_MATTERS). Feed 34 may contain multiple opinions per CIK per fiscal year; the CAMs dataset includes opinions from all records in Feed 34.
What format should I use to avoid truncated audit opinion text?
Use TXT, SAS, or another long-text format to ensure full opinion text is preserved. We do not recommend exporting opinion text into XLSX or CSV formats.
Why don’t WRDS counts match the totals in Ideagen Audit Analytics Going Concern reports?
Ideagen Audit Analytics Going Concern reports use a clean, filtered subset of opinions, while WRDS contains the full population. The report applies the following filters:
- One opinion per company per year
- Annual report form types only (10-K, 20-F, etc.)
- No subsidiaries, predecessor entities, or pre-merger entities
- Duplicates removed
- Fiscal year end grouping
WRDS contains all opinions across 80+ form types, including duplicates. Counts will differ unless the same filters are applied.
Why don't all auditor change records match to an audit opinion?
The two datasets have different inclusion criteria. The Auditor Changes dataset includes 8-K Item 4.01 disclosures, 6-K and N-CSR/N-CSRS filings, selected registrations, and changes disclosed even when no audit opinion exists. The Audit Opinions dataset includes only opinions issued on a registrant's own financial statements. Additional mismatches may result from timing differences, interim auditors, going-dark issuers, or benefit plan filings, which are excluded from the Audit Opinions dataset.
What is the difference between BUS_STATE and AUDITOR_STATE in the Audit Opinions dataset?
BUS_STATE / BUS_STATE_NAME refers to the company's business location. AUDITOR_STATE / AUDITOR_STATE_NAME refers to the audit firm's office location as disclosed in the audit opinion. These fields are not interchangeable.
Does Ideagen Audit Analytics include component auditor information?
Yes. Component auditor information is available in the supporting tables form_ap_divided.txt and form_ap_undivided.txt. Join using FORM_AP_FILING_FKEY → AUDIT_OPINION_FKEY.
Auditor Engagements (Current Auditor)
How can I find auditor office or city-level information in WRDS? Does Ideagen Audit Analytics identify the specific audit office for each engagement?
Office-level detail is limited because U.S. SEC filings generally do not disclose which specific audit office performed the engagement. Only what is available in the filing is captured. Location information can be accessed through the following:
- Revised Audit Opinions (WRDS web query): AUDITOR_CITY and AUDITOR_STATE_NAME, which reflect the signing location shown in the audit opinion.
- auditor_location.txt supporting table (SAS Studio only): Contains audit firm office addresses but is not linked to specific client engagements.
There is no universal audit office ID, and U.S. filings do not provide sufficient detail to identify the exact office for every client engagement.
What is the best way to determine auditor tenure of the current auditor?
Use the Company Block (Feed 12) and review the following fields:
- LAST_REPORTED_AUDITOR_FKEY / LAST_REPORTED_AUDITOR_NAME – The auditor of record for the company, determined using a proprietary algorithm based on the most recent data across the following sources:
- ENGAGE_DATE (Feed 2 Auditor Changes)
- SIGNATURE_DATE_OF_OPINION (Feed 34 Revised Audit Opinions)
- FISCAL_YEAR_ENDED (Feed 3 Audit Fees)
- LAST_REPORTED_AUDITOR_SINCE_EVENT_DATE – The year the current auditor was first engaged or the earliest known engagement date. This date is sourced from historical auditor databases (e.g., Auditor Changes) or directly from public registrants. Note that this field is accurate to the year only, not to a specific date.
- LAST_REPORTED_AUDITOR_SINCE_EVENT_TYPE – The event type associated with the earliest known engagement date, indicating the source of the auditor information. Event type codes are defined as follows:
- D - End of engagement; auditor dismissed on the event date
- E - Start of engagement; auditor engaged on the event date
- F - Engagement active at some point during the fiscal year ending on the event date
- L - Historical engagement active since at least the event date
- O - Engagement active; opinion signed on the event date
- S - Historical engagement since the event date
Auditor During
How can I obtain historical auditor tenure for previous auditors?
For U.S. SEC filers, use the Auditor During dataset in WRDS. The key fields are DEDUCED_BEGIN_DATE and DEDUCED_END_DATE, which provide inferred start and end dates for each auditor's tenure. Historical tenure is not available for European or Canadian companies. A custom tenure file can also be requested by contacting support@auditanalytics.com.
What do the event type codes in Auditor During mean?
Event type codes are defined as follows:
- D – Dismissal
- E – New Engagement
- F – Active Engagement (for the fiscal year)
- L – Historical engagement (active since at least this date)
- O – Opinion signed on this date
- S – Historical (since)
Auditor Changes
What are the inclusion criteria for Auditor Changes?
The Auditor Changes dataset includes disclosures from any SEC registrant across all relevant filings and amendments, including Form 8-K, Form 6-K, N-CSR, N-CSRS, and selected registration statements. Auditor changes are captured even when no corresponding audit opinion exists.
Does Ideagen Audit Analytics provide the reason for an auditor's resignation or dismissal?
No. Filings rarely disclose explicit reasons, and there is no dedicated "reason for departure" field. The ISS_* variables (e.g., ISS_INTERNAL_CONTROL) reflect issues flagged in company filings - some correspond to Item 304 reportable events, which may provide context but do not indicate definitive causes.
How are engagement and dismissal dates assigned when a filing does not disclose them?
Estimated dates are used as placeholders based on expected filing timelines. These are replaced once the company files an amendment or provides the exact dates.
Disclosure Controls (SOX 302)
How do I identify fiscal year in the SOX 302 dataset?
Use PERIOD_ENDED_DATE_NUM, which contains the fiscal period end date. Fiscal year can be derived directly from this field by extracting the year component.
How are Disclosure Controls taxonomy groups organized, and what do prefixes like ACC and DC represent?
All Disclosure Controls taxonomies are classified into four high-level groups, represented by the following fields:
- NOTEFFECTIVEACCOUNTINGRULE
- NOTEFFECTIVEFINANCIALFRAUD
- NOTEFFECTIVEERRORS
- NOTEFFECTIVEOTHER
Each uses numeric flags (1–4) to indicate whether that category applies. Taxonomy prefixes map to these groups as follows:
- ACC - Accounting
- DC - Disclosure Controls
Director and Officer Changes
How is the flag IS_FINANCIAL_PERSON assigned?
IS_FINANCIAL_PERSON is set to 1 when TITLE_AS_REPORTED contains any of the following keywords: CFO, FINANC, CONTROL, TREASU, or ACCOUNT.
How is the flag IS_CEO assigned?
IS_CEO is set to 1 only when the reported title states specifically CEO or CHIEF EXECUTIVE OFFICER for the reporting registrant. The following cases are not flagged:
- A person named as CEO of a company other than the reporting registrant
- Co-CEO
- CEO (Interim)
Internal Controls (SOX 404)
How is IC_TEXT displayed in Feed 11 (SOX_404_INTERNAL_CONTROLS)?
Because IC_TEXT is a long-text field and SAS cannot store values exceeding 32,767 characters, the variable is split into two fields: IC_TEXT1 and IC_TEXT2. Together they contain the complete opinion text. Both variables are available in the SAS dataset audit.auditsox404, located at /wrds/audit/sasdata/audit_comp/, and can be accessed via WRDS Cloud, SAS Studio, PC-SAS, and other methods.
What does the AUDITOR_AGREES variable mean in Feed 11 (SOX_404_INTERNAL_CONTROLS)?
The values 1 (Yes) and 2 (Not Disclosed) indicate that the auditor did not explicitly state disagreement with management's assessment. PCAOB standard AS 5, which became effective in November 2007 and was later superseded by AS 2201, eliminated the disclosure requirement. Auditors have not been required to make this disclosure for several years.
How is COUNT_WEAK calculated, and why might it not match the number of taxonomies counted manually?
COUNT_WEAK represents the number of unique material weaknesses identified in an internal control assessment - it is not a count of taxonomy tags. A single weakness may require multiple taxonomy assignments (e.g., a segregation of duties issue may involve several IC taxonomies). Weaknesses are counted using standardized lists when provided, or by identifying unique issues within the report and assessment text.
How are Internal Controls taxonomy groups organized, and what do prefixes like ACC, IC, and EX represent?
All Internal Controls taxonomies are classified into five high-level groups, represented by the following fields:
- NOTEFFECTIVEACCOUNTINGRULE
- NOTEFFECTIVEFINANCIALFRAUD
- NOTEFFECTIVEERRORS
- NOTEFFECTIVEOTHER
- EXEMPTION.
Each uses numeric flags (1–5) to indicate whether that category applies. Taxonomy prefixes map to these groups as follows:
- ACC - Accounting
- IC - Internal Controls
- EX - Exemptions
These groupings align with the categories in the data dictionary's Taxonomy of Issues tab. When COUNT_WEAK ≥ 1, at least one taxonomy from these groups will be present.
Where can I find numeric reason codes for Internal Controls weaknesses (e.g., code 22 for IT issues or code 42 for segregation of duties)?
Numeric taxonomy keys are available in Feed 11 (SOX 404) on WRDS. Fields ending in _REASON_KEYS - such as NOTEFFECTIVEACCOUNTINGRULE_REASON_KEYS - contain the codes used in academic research. On the Ideagen Audit Analytics platform, these can be mapped using the taxonomy list in the Data Dictionary → Taxonomy of Issues.
Where can I find management reports, and how do I access opinion text?
Filter IC_OPINION_TYPE_A_OR_M to M for management reports or A for auditor reports. Full opinion text is available in IC_TEXT1 and IC_TEXT2, which together provide the complete text.
How do I merge the Feed 11 (SOX_404_INTERNAL_CONTROLS) dataset with the Feed 39 (FINANCIAL_RESTATEMENTS) dataset?
The two datasets do not share a single matching date field, so a date range join is required. Match FISCAL_YEAR_ENDED_IC_OPINION from the Internal Controls dataset to restatement records where that date falls between RES_BEGIN_DATE and RES_END_DATE.
Restatements
Legacy feeds 9 (NONRELIANCE_RESTATEMENTS) and 24 (ADVANCED_RESTATEMENTS) were deprecated in early 2024. Feed 39 (FINANCIAL_RESTATEMENTS) is now the authoritative source. Feed 39 contains all fields from Feeds 9 and 24, plus additional columns related to financial impact data.
What does Feed 39 contain, and how do I access supporting tables?
Feed 39 includes Restatements and Out of-Period Adjustments, along with financial impact data, issue taxonomy, and auditor details.
Supporting tables, such as restatement_filings.txt and restatement_periods.txt, must be accessed via WRDS SAS Studio or R Studio and are linked through RESTATEMENT_NOTIFICATION_KEY. The WRDS web query form displays only the main feed, not supporting tables.
Why do some restatement records appear on WRDS but not on the Ideagen Audit Analytics website?
WRDS includes all four record types in Feed 39:
- Restatements (RESTATEMENT_TYPE_FKEY = 1)
- Out-of-Period Adjustments (RESTATEMENT_TYPE_FKEY = 2)
- SAB 108 (RESTATEMENT_TYPE_FKEY = 3)
- FIN 48 (RESTATEMENT_TYPE_FKEY = 4)
Use RESTATEMENT_TYPE_FKEY to filter by type. For research purposes, Types 3 and 4 are typically excluded because they represent data collected for a one-off research project.. The Ideagen Audit Analytics website Restatements search contains Type 1 only.
Does Ideagen Audit Analytics track restatements disclosed in S-1 or IPO registration filings?
No. Restatements are tracked only from 8-K filings and periodic reports (10-K, 10-Q, 20-F, etc.).
Does Feed 39 include financial impact fields?
Yes. Financial impact fields in the main feed show the cumulative impact and include CHANGE_CUM_NET_INCOME (aggregate net income impact) and CHANGE_CUM_TOTAL_STOCKHOLDER_EQUITY, among others. More granular financial impact data, such as by filing or period, is available in various supporting tables.
How do I find period-by-period misstatement effects?
Use the restatement_periods.txt supporting table, which breaks out impacts by quarter or year. The main feed shows only cumulative financial impact.
In the Audit + Compliance module and the Audit Fees Restated database, does "Restatements" refer to adjustments to audit fees or restatements of audited financial statements?
This refers to adjustments to audit fees, not restatements of financial statements.
How do I distinguish Big R vs. little r restatements?
- Big R (non-reliance): Disclosed in 8-K Item 4.02
- Little r (revision): Disclosed only in periodic filings (10-K, 10-Q, etc.)
Fields with values in 8K_402 field are Big R restatements, those with null values in 8K_402 fields are little r restatements.
How do I identify annual versus quarterly restatements?
- QUARTERLY_RESTATED_ONLY = 0 → affects at least one annual period
- QUARTERLY_RESTATED_ONLY = 1 → affects quarterly periods only
FORM_FKEY also indicates whether the source filing was a 10-K or 10-Q.
Which date should I use to match restatements to financial data?
Use RES_END_DATE, which aligns best with period-end financial statements. Note that some restatements affect quarterly periods rather than annual fiscal year ends.
How is fraud (RES_FRAUD) determined?
A restatement is classified as fraudulent when the disclosure text includes terms such as "fraud," "misrepresentation," or "deceit," or indicates intentional deception by management or employees. Cases where a company was deceived by an unrelated third party are typically classified as accounting errors.
What does RES_SEC_INVEST indicate?
This field identifies restatements involving SEC activity, such as comment letters or formal or informal inquiries, that influenced or triggered the restatement.
How do I find RESTATEMENT_CATEGORY_KEY?
This field is available in the restatement_to_category.txt supporting table, accessible via WRDS SAS Studio.
How do I identify unique restatements and avoid duplicates?
Use RESTATEMENT_NOTIFICATION_KEY as the unique identifier. Multiple filings may reference the same restatement event; these are not duplicates.
How do I access all filings associated with a restatement event?
Additional filings are available in restatement_filings.txt, linked via RESTATEMENT_NOTIFICATION_KEY in the main feed and RESTATEMENT_NOTIFICATION_FKEY in the supporting table.
How can I verify a restatement against the original SEC filing?
Use FTP_FILE_NAME_FKEY and append it to https://www.sec.gov/Archives/edgar/. All restatement data is sourced exclusively from SEC filings.
Is there anything to know about older restatement records?
Older records may reflect earlier collection methods. Processes have improved over time, and corrections to specific records can be requested from Support.