sec-api.ioSEC API by D2V
FilingsPricingSandboxDocs
Log inGet Free API Key
  1. Home
  2. Tutorials

SEC EDGAR Filing Trends & Patterns from 1994 to 2022

Open In Colab   Download Notebook

On this page:

  • Dataset Overview
    • Dataset Structure
      • Data Sources
        • Important Considerations
          • Analysis Workflow
          • Getting Started
            • Plotting Functions Used in This Tutorial
              • Annual Filing Volume by Form Type
                • Amended Filings
                • Monthly Filing Volume Trends
                  • Filing Volume per EDGAR Filer
                    • Filing Volume per Sector
                      • Filing Volume per SEC Office
                        • Filing Volume per SIC Codes
                          • IPO & Registration Statement Volumes
                            • Late-Filing Notification Trends
                              • Delisting Notification Trends - 25-NSE Filings
                                • Insider Trading Filing Trends
                                  • 8-K Filing Trends

                                    In this tutorial, we'll analyze all EDGAR filings spanning from 1994 to 2022 to uncover patterns, trends, and insights across sectors, IPOs, form types, SEC offices and more.

                                    Key areas we'll delve into include:

                                    • Filing Volume Dynamics: Explore how filing volumes have shifted across sectors and years, painting a picture of the economic landscape.
                                    • IPO Trends: Using S-1 filings, we'll uncover insights into the initial public offering (IPO) patterns across sectors, revealing sectors that have seen surges in new public companies.
                                    • M&A Activity: Mergers and acquisitions are pivotal moments in a company's journey. We'll analyze the ebbs and flows in M&A activities over the years.
                                    • Delistings Analysis: Through 25-NSE filings, we'll examine the trends in company delistings, providing insights into sectors that might be experiencing turbulence or consolidations.
                                    • Material Events with 8-Ks: Dive deep into 8-K filings to understand significant corporate events across sectors, from mergers and leadership changes to financial disclosures.

                                    To bring these insights to life, we'll leverage visualization techniques such as bar charts, box plots, and heatmaps. Here's a snapshot of the key insights we're about to uncover.

                                    Key Insights:

                                    1. EDGAR Filing Volume: 2021 experienced the highest EDGAR filing volume ever recorded since the introduction of EDGAR in 1994, with over 800,000 filings. 2022 followed closely, registering the second-highest annual volume.

                                    2. Dominance of Specific Form Types: Just 2% of EDGAR form types, equivalent to 20 distinct forms, accounted for 80% of all 2022 filings. Thus, understanding these 20 form types effectively unlocks 80% of information for that year.

                                    3. Popular Form Types of 2022: The leading ten EDGAR form types in 2022 were: Form 4 (representing 29% of all filings), 8-K (11%), 424B2 (9%), followed by NPORT-P, D, 13F-HR, 6-K, FWP and 10-Q.

                                    4. Trends in Form Types:

                                      • A noticeable surge was observed in 424B2 filings from 2017 onward.
                                      • The number of amended filings has consistently risen since 1994, hitting a record of 60,000 amended filings in 2022.
                                      • Form D/A, constituting 34% of amended filings, has seen a steady increase since its 2009 introduction, peaking at over 20,000 in 2022. Together, Form D/A and Form SC 13G/A comprised 64% of the top 20 amended filings in 2022.
                                    5. Monthly Filing Patterns: February recorded the highest filing volume consistently between 2004 and 2022. In contrast, September had the lowest, followed by October and July.

                                    6. Filing Frequency: In 2022, 63% (100,474) of all EDGAR filers (158,517) submitted between one to two filings.

                                    7. Prominent Filers: The top five entities with the most EDGAR filings in 2022 were all banks, led by JPMORGAN CHASE, filing more than 18,000 filings that year.

                                    8. Sectoral Analysis: The Financial Services and Healthcare sectors generated 47% of 2022's filings. The former sector's filing volume doubled since 2009, whereas the tech sector's volume declined since its 2007 peak.

                                    9. SEC Oversight: Among the 12 SEC Offices, the Office of Finance supervised 31% of 2022 filings. The Office of Manufacturing, ranking second, managed only 10%.

                                    10. Asset-backed Securities: ABS filings peaked in 2006, plummeted by 2009, and have been on an upward trajectory since, surpassing their pre-financial crisis peak in 2022.

                                    11. SIC Classification Analysis: NATIONAL COMMERCIAL BANKS (SIC 6021) filings have consistently risen since 1994, with a rapid growth from 2016 and a peak in 2022, representing 20% of all filings that year. SECURITY BROKERS, DEALERS & FLOTATION COMPANIES (SIC 6211) was the second most voluminous filer in 2022, with 55,000 filings, accounting for 15% of all filings.

                                    12. M&A and IPO Trends: M&A activity, as indicated by S-4 and S-4/A filings, peaked between 2010-2013 and has been declining since. IPOs, represented by S-1 filings, reached an all-time high in 2021, with the Industrials and Healthcare sectors leading the charge.

                                    13. Delistings: 2021 marked the record year for delistings with 2,026 25-NSE filings, closely followed by 2022 with 1,970 cases and 2007 with 1,944.

                                    14. Late Filing Notices: NT 10-X filings seem to act as early indicators of financial crises, as evidenced by spikes before major market downturns.

                                    15. Sector-specific Form Trends: Only the Healthcare sector saw a consistent rise in Form 4 filings since 2012. Healthcare's annual 8-K filings have increased since 2012, while other sectors have seen a decline since their 2005 peak.

                                    Dataset Overview

                                    We generated two primary datasets to analyze filing volumes across dimensions like filings per form types annually from 1994 to 2022. To enhance this data, we integrated these primary datasets with two supplementary datasets, enabling us to associate a filer's CIK with additional dimensions, including sectors and SEC offices.

                                    Dataset Structure

                                    The two primary and two secondary datasets are structured as follows:

                                    • filing_count_stats: contains four columns cik, formType, count, year, month. It tracks the number of filings published on EDGAR per CIK per form type in a month and year. In other words, it indicates the type and quantity of filings an entity submitted each month/year. A single filing can be tallied more than once; for instance, if a filing includes five CIKs, it gets counted five times, once for every CIK (i.e., each individual filer).
                                    • volume_by_accNo: holds four columns formType, count, year, month. It tracks all form types, and the number of filings published per form type per month and year. It indicates the quantity of filings for each form type submitted in a given month/year. Filings are counted based on their accession numbers rather than CIKs. Thus, a filing with multiple CIKs is counted only once, rather than repeatedly for each CIK.
                                    • filers: contains seven columns year, fiscalYearEnd, stateOfIncorporation, cik, companyName, sic, irsNo, sector. It lists all EDGAR filers that submitted at least one filing in the specified year, alongside other associated details.
                                    • sic_codes includes three columns sic_code, office, industry_title and maps SIC codes to their respective industry titles and SEC Offices overseeing them.

                                    Data Sources

                                    The datasets, namely filing_count_stats and volume_by_accNo, were constructed using the Query API. We employed a combination of the Mapping API and Query API to create the filers dataset. The sic_codes dataset was derived from the SEC's mapping between SIC codes and their respective SEC Offices.

                                    Important Considerations

                                    • EDGAR filers are identified by their CIK, while EDGAR filings are recognized by their accession number.
                                    • All CIKs are normalized by removing leading zeros; for instance, "0000872243" is transformed to "872243".
                                    • The CIK aids in appending SIC code, SEC Office, and sector data to the filing_count_stats dataset.
                                    • The filedAt column signifies the Accepted timestamp of the filing as reported on the EDGAR system, and it assists in determining the associated year and month.

                                    Analysis Workflow

                                    The methodology for preparing data for our analysis generally adheres to the steps outlined below:

                                    1. Choose the dimension(s) of interest, such as "across sectors".
                                    2. Group the dataset temporally (by years or months) and by the chosen dimension (like sectors).
                                    3. Quantify a target variable, for instance, the annual number of filings per sector.
                                    4. Construct a pivot table, setting the year as the index and the selected dimension (e.g., sector) as columns.
                                    5. Refine the pivot table through cleaning, filtering, and sorting actions, possibly omitting certain years like 1994-1996 to eliminate outliers.
                                    6. Visualize the data using line charts, stacked bar charts, and box plots.

                                    The dimensions of interest include:

                                    • Specific form types such as 10-K, 10-Q, etc.
                                    • Form type categories, for instance, all registration statements like S-1, S-4, F-1, N-1, etc.
                                    • Sectors
                                    • SEC Offices
                                    • SIC Codes
                                    • Timeframes: years and months
                                    • Combinations of the aforementioned, like form types analyzed by year and sector.

                                    Getting Started

                                    Let's import the relevant packages and helper functions, and load the two primary datasets: filing_count_stats and volume_by_accNo.

                                    import numpy as np
                                    import pandas as pd
                                    import matplotlib.pyplot as plt
                                    import matplotlib.ticker as mtick
                                    import seaborn as sns
                                    import modules.helpers as helpers
                                    # force reloading of modules.helpers
                                    import importlib
                                    importlib.reload(helpers)

                                    plt.rcParams.update({'font.size': 8})
                                    filing_count_stats = helpers.get_volume_by_cik()
                                    filing_count_stats.head()
                                    Out:
                                    cikformTypecountyearmonth
                                    0100240424B21199401
                                    1100240424B31199401
                                    21002408-K1199401
                                    3100712SC 13G1199401
                                    4100826424B51199401
                                    volume_by_accNo = helpers.get_volume_by_accessionNo()
                                    volume_by_accNo.sort_values(by=['year', 'month']).head()
                                    Out:
                                    formTypeyearmonthcount
                                    161110-12B/A199411
                                    256610-C1994111
                                    301110-K1994129
                                    335910-K/A1994118
                                    419110-Q19941106

                                    Plotting Functions Used in This Tutorial

                                    Throughout this tutorial, we leverage two primary plotting functions to simplify our data visualization process.

                                    plot_2_figs(pivot_table): This function simultaneously generates a line graph and a stacked bar chart within a single figure. The line graph is displayed on the left, while the stacked bar chart appears on the right.

                                    • X-axis: Represents the time values, typically spanning from the years 1994 to 2022.
                                    • Y-axis: Denotes the count values.
                                    • Legend: A single, unified legend is utilized for both plots.

                                    plot_box_plot(pivot_table): This function produces a box plot based on the provided pivot table.

                                    Input Requirements for Both Functions: Both plotting functions expect a pivot table in the form of a dataframe. The requirements for the dataframe are:

                                    • Index: Represents the time scale, which can be years, months, or any other time measurement.
                                    • Columns: Correspond to any particular dimension, such as sectors.
                                    • Values: Should be numerical counts.
                                    def plot_2_figs(data, title, figsize=(10, 4)):
                                      fig, (ax1, ax2) = plt.subplots(1, 2, figsize=figsize)

                                      # create color map for factors
                                      factors = data.columns
                                      # viridis, plasma, magma, inferno, cividis, tab20
                                      colors = plt.cm.tab20(np.linspace(0, 1, len(factors)))
                                      colormap = dict(zip(factors, colors))

                                      sorted_data_1 = data.T.sort_values(2022, ascending=False).T
                                      sorted_data_2 = data.T.sort_values(2022, ascending=True).T

                                      sorted_data_1.plot(ax=ax1, color=[colormap[sector] for sector in sorted_data_1.columns])
                                      ax1.set_title(""), ax1.set_ylabel("Filing Volume"), ax1.set_xlabel("Year"),
                                      ax1.yaxis.set_major_formatter(mtick.FuncFormatter(lambda x, p: format(int(x), ',')))
                                      ax1.legend(bbox_to_anchor=(1.05, 1), loc='upper left')
                                      ax1.grid(), ax1.set_axisbelow(True)
                                      ax1.set_xticks(range(1994, 2023)), ax1.set_xticklabels(range(1994, 2023), rotation=90, ha='center')
                                      ax1.legend().set_visible(False)

                                      sorted_data_2.plot(kind='bar', stacked=True, ax=ax2, color=[colormap[sector] for sector in sorted_data_2.columns])
                                      ax2.set_title(""), ax2.set_ylabel(""), ax2.set_xlabel("Year"), ax2.set_xticklabels(ax2.get_xticklabels(), rotation=90, ha='center')
                                      ax2.yaxis.set_major_formatter(mtick.FuncFormatter(lambda x, p: format(int(x), ',')))
                                      handles, labels = ax2.get_legend_handles_labels()
                                      ax2.legend(reversed(handles), reversed(labels), bbox_to_anchor=(1.05, 1), loc='upper left')
                                      ax2.grid(), ax2.set_axisbelow(True)

                                      fig.suptitle(title, fontsize=12)
                                      plt.tight_layout()
                                      plt.show()
                                    def plot_box_plot(data: pd.DataFrame, title, x_label="", y_label="", figsize=(5, 4)):
                                      data.boxplot(figsize=figsize)
                                      plt.title(title), plt.ylabel(y_label), plt.xlabel(x_label), plt.tight_layout()
                                      ax = plt.gca()
                                      ax.yaxis.set_major_formatter(mtick.FuncFormatter(lambda x, p: format(int(x), ',')))
                                      max_xticklabels = max([len(label.get_text()) for label in ax.get_xticklabels()])
                                      rotation = 90 if max_xticklabels > 3 else 0
                                      ax.set_xticklabels(ax.get_xticklabels(), rotation=rotation, ha='center')
                                      plt.show()

                                    Let's demonstrate the functions with some sample data.

                                    np.random.seed(42)
                                    years = list(range(1994, 2023))
                                    sectors = ["Technology", "Finance", "Health", "Energy"]

                                    sample_1 = pd.DataFrame({
                                        "Year": np.tile(years, len(sectors)),
                                        "Sector": np.repeat(sectors, len(years)),
                                        "Filing Volume": np.random.randint(500, 5000, len(years) * len(sectors))
                                    })

                                    pivot_data_sample_1 = sample_1.pivot(index='Year', columns='Sector', values='Filing Volume')
                                    plot_2_figs(pivot_data_sample_1, "Sample Plot: Filing Volume by Sector (1994 - 2022)", figsize=(7,3))
                                    plot_box_plot(pivot_data_sample_1, "Sample Plot", figsize=(2,2))
                                    Sample Plot with Dummy Data: Filing Volume by Sector (1994 - 2022)
                                    Sample Box Plot with Dummy Data

                                    Annual Filing Volume by Form Type

                                    To understand the yearly distribution of filings, we'll consolidate our data to display the aggregate count of filings for each form type per year. We begin by grouping the volume_by_accNo dataframe based on two columns: formType and year. For each combination of formType and year, we sum up the values in the count column across all months of the specific year. This results in a DataFrame that shows the total number of filings for each form type in each year. The result is then stored in the type_year_stats DataFrame.

                                    type_year_stats = pd.DataFrame(volume_by_accNo.groupby(['formType', 'year'])['count'].sum())

                                    Next, the type_year_stats DataFrame is pivoted using the pivot_table method. The formType is set as the index, and the year values are set as the columns. This effectively reshapes the data such that each row corresponds to a specific formType and each column corresponds to a specific year. The values in the pivoted table represent the total number of filings for a given formType in a specific year.

                                    type_year_stats_piv = type_year_stats.pivot_table(index='formType', columns='year', values='count')

                                    Some combinations of formType and year might not have any filings, resulting in NaN (Not a Number) values in the pivoted table. This line fills those NaN values with zeros using the fillna method. Additionally, the astype(int) method is used to ensure all the numbers in the DataFrame are integers. Then, we re-arranges the columns of the type_year_stats_piv DataFrame in reverse order, starting with the year 2022 instead of 1994. The iloc method is used to select all rows and columns in reverse order (from the latest year to the earliest year). Finally, the rows of the type_year_stats_piv DataFrame are sorted based on the values in the 2022 column. This results in a DataFrame where the form types with the highest filing volumes in 2022 appear at the top, allowing for better visualization and reading the figure legend later on.

                                    type_year_stats_piv = type_year_stats_piv.fillna(0).astype(int)
                                    type_year_stats_piv = type_year_stats_piv.iloc[:, ::-1]
                                    type_year_stats_piv = type_year_stats_piv.sort_values(2022, ascending=False)
                                    print('Number of EDGAR Filings per Form Type per Year (1994 - 2022)')
                                    type_year_stats_piv
                                    Number of EDGAR Filings per Form Type per Year (1994 - 2022)
                                    Out:
                                    year2022202120202019201820172016201520142013...2003200220012000199919981997199619951994
                                    formType
                                    4182342194456180689175434180457180800182191191904193757193172...1600282929811304117561031094676595225300
                                    8-K68214728957055864664664346877270483743917489974153...654274312133543284402683627072235651538162453484
                                    424B259582603454496834295319872714418451154941382912713...1568155715171153105016551835163015181133
                                    NPORT-P4984348590475008998000000...0000000000
                                    D41672425062815327502272722458923097230302219419841...0000000000
                                    ..................................................................
                                    U-33-S/A0000000000...0010000000
                                    U-3A-20000000000...868276909910186757253
                                    U-3A-2/A0000000000...23231061111126721
                                    U-3A3-10000000000...2222332111
                                    U-570000000000...2361749692749242122

                                    893 rows × 29 columns

                                    We are now ready to plot the number of EDGAR filings by form type per year, from 1994 to 2022. We use pandas' builtin .plot function to visualize the filing volumes as stacked bar chart. Executing the plot snippet takes around 1 to 2 minutes.

                                    type_year_stats_piv.iloc[:, ::-1].T.plot(kind='bar', stacked=True, figsize=(6, 5))
                                    plt.title("Filing Volume by Form Type per Year (1994 - 2022)"), plt.ylabel("Filing Volume"), plt.xlabel("Year")
                                    ax = plt.gca()
                                    ax.yaxis.set_major_formatter(mtick.FuncFormatter(lambda x, p: format(int(x), ',')))
                                    ax.get_legend().remove(), ax.grid(), ax.set_axisbelow(True)
                                    plt.show()
                                    Number of EDGAR Filings per Form Type per Year (1994 - 2022)

                                    The next line sums up all EDGAR filings per year.

                                    pd.DataFrame(type_year_stats_piv.sum(axis=0), columns=['volume']).head(10).T
                                    Out:
                                    year2022202120202019201820172016201520142013
                                    volume786768817572733003660181652410655758645884666349671145657310

                                    Let's identify the top 20 EDGAR form types from 2022 and then explore their filing trends since 1994.

                                    top_20_types = list(type_year_stats_piv.sort_values(2022, ascending=False).head(20).index)
                                    top_20_types_piv = type_year_stats_piv.loc[top_20_types]

                                    print('Top 20 most commonly filed from types in 2022')
                                    print(top_20_types_piv[2022][:20].index.to_list())
                                    Top 20 most commonly filed from types in 2022
                                    ['4', '8-K', '424B2', 'NPORT-P', 'D', '13F-HR', '6-K', 'FWP', 'D/A', '10-Q', '497K', 'SC 13G/A', '3', '497', '10-D', 'CORRESP', '424B3', 'SC 13G', '10-K', 'LETTER']
                                    plot_2_figs(top_20_types_piv.iloc[:, ::-1].T, "Filing Volume of Top 20 Most Common Form Types per Year (1994 - 2022)")
                                    Filing Volume of Top 20 Most Common Form Types per Year (1994 - 2022)
                                    print('2022 Filing Volume of Top 20 Most Common Form Types')
                                    print("-"*60)
                                    size_top_20_volume = top_20_types_piv[2022].sum() / type_year_stats_piv[2022].sum()
                                    size_top_20_form_types = top_20_types_piv[2022].count() / type_year_stats_piv[2022].count()
                                    print("Total filing volume: {:,}".format(type_year_stats_piv[2022].sum()))
                                    print("Top 20 form types volume: {:,}".format(top_20_types_piv[2022].sum()))
                                    print("Volume of top 20 to total volume: {:.1%}".format(size_top_20_volume))
                                    print("-"*60)
                                    print("All form types in 2022: {}".format(type_year_stats_piv[2022].count()))
                                    print("Top 20 form types to all form types: {:.1%}".format(size_top_20_form_types))
                                    2022 Filing Volume of Top 20 Most Common Form Types
                                    ------------------------------------------------------------
                                    Total filing volume: 786,768
                                    Top 20 form types volume: 633,272
                                    Volume of top 20 to total volume: 80.5%
                                    ------------------------------------------------------------
                                    All form types in 2022: 893
                                    Top 20 form types to all form types: 2.2%
                                    plot_box_plot(top_20_types_piv[range(2003, 2023)].T,
                                                  title="Top 20 Most Common Filing Types (2003 - 2022)",
                                                  x_label="Form Type",
                                                  y_label="Annual Filing Volume")
                                    Top 20 Most Common Filing Types (2003 - 2022)
                                    top_20_types_piv.T.describe().astype(int)
                                    Out:
                                    formType48-K424B2NPORT-PD13F-HR6-KFWPD/A10-Q497KSC 13G/A349710-DCORRESP424B3SC 13G10-KLETTER
                                    count2929292929292929292929292929292929292929
                                    mean1380336130713305534211998114671617468797529217888783135681226213469306765046103748670336140
                                    std89920290241730415065138567423992970328278473010102371377322263345953431083231117545437
                                    min03484105000000064020249905782003321175718530
                                    25%1175633543155700811428050019252012466359812133005614645665140
                                    50%18219170483591403791167420923733361216360145641403414080116690166123746972597027
                                    75%193757769221549402303016561227761058915949252101944616130160261498367071082366039093817811273
                                    max234772112225603454984342506275002680524327206092817824252180922484616402903514251849811329949614912
                                    top_20_types_2022 = type_year_stats_piv[2022].sort_values(ascending=False).to_frame().head(20)
                                    top_20_types_2022['pct'] = (top_20_types_2022[2022] / top_20_types_2022[2022].sum()) * 100
                                    top_20_types_2022['pct'] = top_20_types_2022['pct'].round(1)
                                    top_20_types_2022
                                    Out:
                                    2022pct
                                    formType
                                    418234228.8
                                    8-K6821410.8
                                    424B2595829.4
                                    NPORT-P498437.9
                                    D416726.6
                                    13F-HR275004.3
                                    6-K268054.2
                                    FWP243273.8
                                    D/A206093.3
                                    10-Q202873.2
                                    497K194463.1
                                    SC 13G/A180922.9
                                    3140232.2
                                    497107311.7
                                    10-D90351.4
                                    CORRESP90191.4
                                    424B384981.3
                                    SC 13G84391.3
                                    10-K75401.2
                                    LETTER72681.1

                                    Observations:

                                    • 2021 experienced the highest EDGAR filing volume ever recorded, with over 800,000 filings. 2022 followed closely, registering the second-highest annual volume.
                                    • In 2022, the top 20 most common EDGAR form types accounted for 80% of all filings, even though they represented just 2% of the total 893 EDGAR form types available.
                                    • Conversely, the remaining 98% of form types, which translates to 873 distinct forms, contributed to only 20% of the total filings in 2022.
                                    • This stark contrast demonstrates a significant information asymmetry: a small fraction of form types dominate the vast majority of the filing volume.
                                    • The leading ten EDGAR form types in 2022 were: 4 (29%), 8-K (11%), 424B2 (9%), followed by 'NPORT-P', 'D', '13F-HR', '6-K', 'FWP', 'D/A', and '10-Q'.
                                    • A narrow candle in the box plot for filings like 6-K indicates a stable filing volume over the past 20 years, with minimal annual fluctuations.

                                    Amended Filings

                                    Occasionally companies need to make corrections or provide updated information to previously submitted filings. These corrected or updated submissions are known as amended filings.

                                    For instance, the Form S-1 is a document that companies must submit when they intend to go public through an Initial Public Offering (IPO). It serves as a preliminary prospectus, commonly referred to as a "red herring" due to the bold red disclaimer on its cover. This disclaimer indicates that the information within the prospectus is not final and may undergo changes. The S-1 offers potential investors a detailed view of the company's business operations, financial status, management, and both the risks and benefits of the offered securities. However, it often lacks finalized details such as the exact number of shares to be issued or the price range for the offering. During the IPO process, situations may arise where the company needs to update material information, rectify inaccuracies, or provide additional context based on feedback from investors and regulators. To address these changes, the company submits an amended registration statement, the Form S-1/A. Like its predecessor, the S-1/A might also be presented as a "red herring" with the characteristic disclaimer, signifying that the information is closer to being finalized but is still subject to change.

                                    Another example represents 10-K filings (annual reports) that publicly traded companies must submit to the SEC. It provides an in-depth look at a company's operational and financial performance for the past fiscal year. Sometimes, during the SEC's review of these filings, the staff might identify areas of concern, seek clarifications, or request additional disclosures. This process often results in a series of correspondence between the SEC staff and the company. The content of these correspondences can often serve as triggers for companies to amend their initial filings. If the SEC staff's review highlights material discrepancies, omissions, or misrepresentations in the original 10-K, the company may be prompted (or even required) to submit an amended 10-K, known as Form 10-K/A.

                                    Amended filings are identified by the suffix '/A' added to the original form type. So, an amended S-1 filing would appear as "S-1/A".

                                    amended_types_piv = type_year_stats_piv[type_year_stats_piv.index.str.contains('/A')]
                                    top_20_types_amended = list(amended_types_piv.sort_values(2022, ascending=False).head(20).index)
                                    top_20_types_amended_piv = amended_types_piv.loc[top_20_types_amended]
                                    top_20_types_amended_piv
                                    Out:
                                    year2022202120202019201820172016201520142013...2003200220012000199919981997199619951994
                                    formType
                                    D/A20609189311796418295174221734616686159491579414536...0000000000
                                    SC 13G/A18092162191565215625158071639617143164171558815192...12589130221200812400127571248310461648243182499
                                    SC 13D/A4017389041413806419341484271418640024249...511950484899513451465461541837831911807
                                    4/A3456367236953748367338914389502648354798...739213344893652472761237800
                                    S-1/A1848353817321198157416131626212427702539...6418208692873306121322490220412881
                                    8-K/A1802185517191712179223981850225225902771...35902985271328762831323328242136791308
                                    C/A161218341503785718494173000...0000000000
                                    13F-HR/A12651146974110210411026102212789491296...1056107595876847500000
                                    MA-I/A1169117311011429139720831366136720...0000000000
                                    10-K/A86610819059839899141129121014771726...19641944153215101757187620621484897562
                                    10-Q/A692621491571658730860108914121817...161917101668186023552066201922811657544
                                    ABS-15G/A673657555505455419385339292248...0000000000
                                    NPORT-P/A666704981119000000...0000000000
                                    F-1/A569537378286301227160233300201...568627108812628700
                                    3/A568788581487601649693734791712...9091891311718598821500
                                    S-4/A563825376300373426425453472604...101986710331019141418911562898453238
                                    DRS/A557920584475539398268346458332...0000000000
                                    SC TO-I/A528519588659647720699734664715...819782854280000000
                                    1-A/A46268460644438435334714010376...5410000000000
                                    6-K/A301253255292273228265263264275...20312053281163210

                                    20 rows × 29 columns

                                    print("Annual filing volume of top 20 amended filing types:")
                                    pd.DataFrame(top_20_types_amended_piv.sum(), columns=['volume']).T
                                    Annual filing volume of top 20 amended filing types:
                                    Out:
                                    year2022202120202019201820172016201520142013...2003200220012000199919981997199619951994
                                    volume60315598475478152821528375445953757541405276352087...3703030082272342939230220295482707219370101565039

                                    1 rows × 29 columns

                                    plot_2_figs(top_20_types_amended_piv.iloc[:, ::-1].T, "Filing Volume by Top 20 Most Amended Form Types per Year (1994 - 2022)")
                                    Filing Volume by Top 20 Most Amended Form Types per Year (1994 - 2022)
                                    plot_box_plot(top_20_types_amended_piv.replace(0, np.nan)[range(2000, 2023)].T,
                                                  "Top 20 Most Common Amended Filing Types (2000 - 2022)",
                                                  "Form Type",
                                                  "Filing Volume")
                                    Top 20 Most Common Amended Filing Types (2000 - 2022)
                                    top_20_types_per_sector_2022 = pd.DataFrame(top_20_types_amended_piv.T.loc[2022]).sort_values(by=2022, ascending=False)
                                    top_20_types_per_sector_2022['pct'] = top_20_types_per_sector_2022[2022] / top_20_types_per_sector_2022[2022].sum() * 100
                                    top_20_types_per_sector_2022 = top_20_types_per_sector_2022.round(1)
                                    top_20_types_per_sector_2022[:10]
                                    Out:
                                    2022pct
                                    formType
                                    D/A2060934.2
                                    SC 13G/A1809230.0
                                    SC 13D/A40176.7
                                    4/A34565.7
                                    S-1/A18483.1
                                    8-K/A18023.0
                                    C/A16122.7
                                    13F-HR/A12652.1
                                    MA-I/A11691.9
                                    10-K/A8661.4

                                    Observations:

                                    • The number of filing amendments has consistently increased since 1994, hitting an all-time high of over 60,000 filings in 2022.
                                    • In 2022, Form D/A accounted for 34% of these top 20 amended filings, while SC 13G/A contributed another 30%. Combined, they represented 64% of the total volume, both hitting record highs that year.
                                    • Since its debut in 2009, Form D's annual amendments have steadily climbed, reaching over 20,000 in 2022—up from 12,000 in 2010.
                                    • Form SC 13D/A is the third most prevalent amendment type. Its annual volume has been consistent, hovering between 4,500 and 5,000 filings yearly since 1997.
                                    • Amended Form 4 filings experienced a notable rise from 2002 to 2004 but have consistently decreased since, reaching a historical low in 2022.
                                    • 10-K/A filings show a consistent distribution without any outliers, suggesting steady amendment volumes over the years, even during economic downturns.
                                    • Most filings exhibit low skewness, indicating a regular update frequency over the years.

                                    Form D & SC 13G Excursion

                                    • Form D informs about a private sale of securities to raise capital privately, often from a limited group of investors. It involves a simplified reporting process compared to an IPO.
                                    • SC 13G filings are submitted by institutional investors, like mutual funds and pension funds, to disclose their ownership in a publicly traded company.

                                    Monthly Filing Volume Trends

                                    Next up, the visualization of monthly filing volume over the last three decades. It helps establish a baseline and observe how specific years deviate from this norm, allowing for the identification of patterns or anomalies.

                                    Seasonality vs. Anomalies: Certain months may consistently register higher or lower filing numbers due to elements like fiscal year-ends or regulatory deadlines. Distinguishing between regular seasonal variations and unique patterns is key to spotting anomalies and discovering trends.

                                    Variability and Predictability: The interquartile range and potential outliers offer insights into the consistency of filings for each month over the years. For instance, a month showcasing a vast range indicates its filing volume may be harder to predict.

                                    stats_year_month = volume_by_accNo.sort_values(by=['year', 'month'], ascending=True) \
                                                                      .drop(columns='formType') \
                                                                      .groupby(['year', 'month']) \
                                                                      .sum() \
                                                                      .reset_index()
                                    stats_year_month_piv = stats_year_month.pivot(index='year', columns='month', values='count')
                                    stats_year_month_piv.fillna(0, inplace=True)
                                    stats_year_month_piv = stats_year_month_piv.astype(int)
                                    plot_2_figs(stats_year_month_piv, "Filing Volume per Month per Year (1994 - 2022)")
                                    Filing Volume per Month per Year (1994 - 2022)
                                    plot_box_plot(stats_year_month_piv.loc[2004:],
                                                  "Monthly Filing Volume (2004 - 2022)",
                                                  "Month",
                                                  "Monthly Filing Volume", figsize=(3, 3))
                                    Monthly Filing Volume (2004 - 2022)

                                    Observations:

                                    • Between 2004 and 2022, February consistently registered the highest monthly filing volume.
                                    • A declining trend in volume is observed from February through the end of each year.
                                    • September sees the sparsest filing activity, with October and July being the next quietest months.
                                    • Notable upticks in filing volume are evident in February, May, August, and November, likely driven by the due dates for 10-Q and 10-K filings.
                                    • The monthly filing volume displays a predictable zigzag pattern: an initial surge from January to February, a subsequent dip from February to April, and this cycle continues throughout the year.

                                    Filing Volume per EDGAR Filer

                                    Next, we'll analyze the annual submission frequency for each EDGAR filer from 1994 to 2022 using the filing_count_stats dataset. We'll categorize the 2022 data to understand the distribution, such as the count of filers who submitted 1-2 filings, 3-4 filings, and so forth. Additionally, we'll identify the top contributors for 2022 and their respective submission counts.

                                    filing_counts_year = filing_count_stats.groupby(['year', 'cik', 'formType']).sum().reset_index()
                                    filing_counts_year.drop(columns=['month'], inplace=True)
                                    filing_counts_year['year'] = filing_counts_year['year'].astype(int)
                                    print("Number of filings per form type filed by CIK 1000045 in 2022:")
                                    filing_counts_year[(filing_counts_year['year'] == 2022) & (filing_counts_year['cik'] == '1000045')].sort_values(by='count', ascending=False)
                                    Number of filings per form type filed by CIK 1000045 in 2022:
                                    Out:
                                    yearcikformTypecount
                                    7213867202210000458-K18
                                    721386620221000045413
                                    72138642022100004510-Q3
                                    721387220221000045SC 13G2
                                    72138632022100004510-K1
                                    72138652022100004531
                                    7213868202210000458-K/A1
                                    721386920221000045DEF 14A1
                                    721387020221000045DEFR14A1
                                    721387120221000045SC 13D/A1
                                    721387320221000045SC 13G/A1
                                    filings_per_cik_year = filing_counts_year.groupby(['year', 'cik']).sum().reset_index()
                                    filings_per_cik_year.drop(columns=['formType'], inplace=True)
                                    print("Number of all filings filed by CIK 1000045 in 2022:")
                                    filings_per_cik_year[(filings_per_cik_year['year'] == 2022) & (filings_per_cik_year['cik'] == '1000045')]
                                    Number of all filings filed by CIK 1000045 in 2022:
                                    Out:
                                    yearcikcount
                                    28982212022100004543
                                    filings_per_cik_year_piv = filings_per_cik_year.pivot(index='cik', columns='year', values='count')
                                    filings_per_cik_year_piv.fillna(0, inplace=True)
                                    filings_per_cik_year_piv = filings_per_cik_year_piv.astype(int)
                                    filings_per_cik_year_piv['mean'] = filings_per_cik_year_piv.mean(axis=1)
                                    filings_per_cik_year_piv['median'] = filings_per_cik_year_piv.median(axis=1)
                                    filer_2022_view = filings_per_cik_year_piv[2022]>0
                                    filings_per_cik_2022 = filings_per_cik_year_piv[filer_2022_view][2022]
                                    filings_per_cik_2022.hist(bins=range(0, 100, 2), figsize=(5, 4))
                                    plt.title("Histogram of Number of Filings per CIK in 2022")
                                    plt.ylabel("Number of Filers"), plt.xlabel("Filings filed per Year (2022)"), plt.tight_layout()
                                    ax = plt.gca()
                                    ax.yaxis.set_major_formatter(mtick.FuncFormatter(lambda x, p: format(int(x), ',')))
                                    plt.show()
                                    Histogram of Number of Filings per CIK in 2022
                                    print("Number of filers per range of filings submitted in 2022:")
                                    pd.DataFrame(filings_per_cik_2022.value_counts(bins=range(0, 100, 2)).head(10))
                                    Number of filers per range of filings submitted in 2022:
                                    Out:
                                    count
                                    2022
                                    (-0.001, 2.0]100474
                                    (2.0, 4.0]26442
                                    (4.0, 6.0]10429
                                    (6.0, 8.0]4451
                                    (8.0, 10.0]2248
                                    (10.0, 12.0]1412
                                    (12.0, 14.0]1374
                                    (14.0, 16.0]990
                                    (24.0, 26.0]762
                                    (16.0, 18.0]752
                                    print("Number of filers in 2022: {:,}".format(len(filings_per_cik_2022.index)))
                                    Number of filers in 2022: 158,517
                                    print("Top 5 CIKs that submitted the most filings in 2022:")
                                    filings_per_cik_2022.sort_values(ascending=False).head(5).to_frame()
                                    Top 5 CIKs that submitted the most filings in 2022:
                                    Out:
                                    2022
                                    cik
                                    1961718288
                                    166565017865
                                    89542114605
                                    166626814081
                                    83100113831

                                    Observations:

                                    • Out of the 158,517 filers in 2022, 100,474 (or 63%) submitted between 1 to 2 filings.
                                    • JPMORGAN CHASE (CIK: 19617) led the pack in 2022 with over 18,000 filings.
                                    • The five most prolific filers of 2022 were all banking institutions: JPMORGAN CHASE (CIK: 19617), JPMorgan Chase Financial (CIK: 1665650), MORGAN STANLEY (CIK: 895421), Morgan Stanley Finance (CIK: 1666268), and CITIGROUP (CIK: 831001).

                                    Filing Volume per Sector

                                    In this section, we'll examine the distribution of filings by sector from 1994 to 2022. To achieve this, we'll extend the filing_count_stats dataset by incorporating sector details. This involves merging the filers dataset with the filing_count_stats dataframe using the cik and year columns. Once we've constructed a pivot table with years and sectors as dimensions and yearly sector filing volume as values, we'll use our plotting functions for visualization.

                                    filers = helpers.get_filers()
                                    filers.head()
                                    /Users/jan/PycharmProjects/research/edgar-patterns/modules/helpers.py:231: DtypeWarning: Columns (6) have mixed types. Specify dtype option on import or set low_memory=False.
                                      df = pd.read_csv(file_path, dtype={"cik": str, "fiscalYearEnd": str, "sic": str})
                                    Out:
                                    yearfiscalYearEndstateOfIncorporationcikcompanyNamesicirsNosectorindustry
                                    019941231LA96035SYSTEM FUELS INC (Filer)0000NaNNaNNaN
                                    119941130NaN89954TRUST FOR SHORT TERM U S GOVERNMENT SECURITIES...NaN251289316NaNNaN
                                    219940331MA901823PUTNAM MANAGED HIGH YIELD TRUST (Filer)0000046733967NaNNaN
                                    319941231NY872243EMPIRE STATE MUNICIPAL EXEMPT TRUST GUARANTEED...0000NaNNaNNaN
                                    419941231NY872246EMPIRE STATE MUNICIPAL EXEMPT TRUST GUARANTEED...0000NaNNaNNaN
                                    filing_count_stats = filing_count_stats.merge(filers[['cik', 'year', 'sector']], how='left', on=['cik', 'year'])
                                    filing_count_stats.head(100)
                                    Out:
                                    cikformTypecountyearmonthsector
                                    0100240424B21199401NaN
                                    1100240424B31199401NaN
                                    21002408-K1199401NaN
                                    3100712SC 13G1199401NaN
                                    4100826424B51199401NaN
                                    .....................
                                    95147078-K1199401Consumer Cyclical
                                    9614827DEF 14A1199401Industrials
                                    9714827S-31199401Industrials
                                    9814846DEF 14A1199401Real Estate
                                    991561510-K/A1199401Industrials

                                    100 rows × 6 columns

                                    # add SIC code, sector, industry columns
                                    filings_per_cik_year_meta = filings_per_cik_year.merge(filers[['year', 'cik', 'sic', 'sector', 'industry']], on=['year','cik'], how='left')
                                    # split sic column into two columns: sic_code, sic_desc by splitting on the first space
                                    filings_per_cik_year_meta[['sic_code', 'sic_desc']] = filings_per_cik_year_meta['sic'].str.split(' ', n=1, expand=True)
                                    filings_per_cik_year_meta['sic_code'] = filings_per_cik_year_meta['sic_code'].str.lstrip('0')
                                    filings_per_cik_year_meta.drop(columns=['sic'], inplace=True)
                                    filings_per_cik_year_meta.head()
                                    Out:
                                    yearcikcountsectorindustrysic_codesic_desc
                                    019941000303Consumer CyclicalAuto Parts3714Motor Vehicle Parts & Accessories
                                    119941000632TechnologyScientific & Technical Instruments3823Industrial Instruments For Measurement, Displa...
                                    219941001222NaNNaN4911Electric Services
                                    319941001669Consumer CyclicalTextile Manufacturing2253Knit Outerwear Mills
                                    4199410024026NaNNaN4833Television Broadcasting Stations
                                    print(len(filings_per_cik_year), len(filings_per_cik_year_meta))
                                    3056738 3056738
                                    filings_per_sector_year = filings_per_cik_year_meta[['year', 'sector', 'count']].groupby(['year', 'sector']).sum().reset_index()
                                    filings_per_sector_year
                                    Out:
                                    yearsectorcount
                                    01994Basic Materials1730
                                    11994Communication Services1126
                                    21994Consumer Cyclical2636
                                    31994Consumer Defensive1522
                                    41994Energy934
                                    ............
                                    3142022Healthcare84840
                                    3152022Industrials58828
                                    3162022Real Estate17435
                                    3172022Technology59326
                                    3182022Utilities9016

                                    319 rows × 3 columns

                                    filings_per_sector_year_piv = filings_per_sector_year.pivot(index='year', columns='sector', values='count')
                                    filings_per_sector_year_piv[-10:]
                                    Out:
                                    sectorBasic MaterialsCommunication ServicesConsumer CyclicalConsumer DefensiveEnergyFinancial ServicesHealthcareIndustrialsReal EstateTechnologyUtilities
                                    year
                                    20132444320280407401810827374963015619746422206276121210607
                                    201424141194554136018122292451008076322645093209815938410876
                                    20152282818488409391759326724984176620845183204965970311151
                                    20162173418409383941649225410936566400443274203755514011188
                                    20172254717892385471586225282101651654824307520497523509987
                                    201820605184463721515628237761038496776945750195605048510137
                                    20191984917170363151475521189107134716504313318561505399137
                                    20202081319056388891612319287125586831294514519054529128865
                                    20212094120358434541747018562144650914296479120526650579562
                                    20222041317756381841735117138148421848405882817435593269016
                                    plot_2_figs(filings_per_sector_year_piv, "Filing Volume per Sector per Year (1994 - 2022)")
                                    Filing Volume per Sector per Year (1994 - 2022)
                                    plot_box_plot(filings_per_sector_year_piv.loc[1996:],
                                                  "Annual Filing Volume per Sector (1996 - 2022)", "", "Annual Filing Volume", figsize=(4, 3))
                                    Annual Filing Volume per Sector (1996 - 2022)
                                    filings_per_sector_2022 = pd.DataFrame(filings_per_sector_year_piv.loc[2022]).sort_values(by=2022, ascending=False)
                                    filings_per_sector_2022['pct'] = filings_per_sector_2022[2022] / filings_per_sector_2022[2022].sum() * 100
                                    filings_per_sector_2022 = filings_per_sector_2022.round(1)
                                    filings_per_sector_2022
                                    Out:
                                    2022pct
                                    sector
                                    Financial Services14842130.4
                                    Healthcare8484017.4
                                    Technology5932612.1
                                    Industrials5882812.0
                                    Consumer Cyclical381847.8
                                    Basic Materials204134.2
                                    Communication Services177563.6
                                    Real Estate174353.6
                                    Consumer Defensive173513.6
                                    Energy171383.5
                                    Utilities90161.8
                                    filings_per_sector_year_piv.loc[2022].sort_values(ascending=True).plot(kind='pie', figsize=(5, 5), autopct='%1.0f%%', startangle=90, fontsize=8)
                                    plt.title("SEC Filings per Sector in 2022"), plt.ylabel(""), plt.tight_layout()
                                    plt.show()
                                    SEC Filings per Sector in 2022

                                    Observations:

                                    • The aggregated annual filing volume across all sectors reached its all-time high in 2021 with over 500,000 filings for the year, and exceeded the last record from 2006, just before the financial crisis.
                                    • The Financial Services sector has dominated in terms of filing volume since 2004. Prior to this, the Technology sector led the pack.
                                    • While the annual filing volume in the Financial Services sector has generally been on the rise, notable exceptions include the periods during the 2008/09 financial crisis and between 2014 to 2016.
                                    • In 2022, the Financial Services sector contributed to 30% of all sector-linked filings, totaling nearly 150,000. The Healthcare sector trailed, with 85,000 filings, accounting for 17% of the year's total volume. Together, the Financial Services and Healthcare sectors constituted 47% of the entire filing volume in 2022.
                                    • The Healthcare sector stands out as the only sector, apart from Financial Services, to display a consistent upward trajectory in filing volume. It began its ascent in 2012 and reached a record high in 2021.
                                    • Contrarily, the filing volume across most other sectors has been waning since 2007.
                                    • While the Technology, Industrials, and Consumer Cyclical sectors saw a modest uptick between 2020 to 2021, their volumes in 2022 were still significantly lower than their 2007 peaks.
                                    • Sectors such as Utilities, Real Estate, Energy, Basic Materials, and Communications Services exhibit minimal fluctuations in their annual filing volumes. This stability might suggest a lower likelihood of unexpected information or surprises, potentially leading to reduced stock price volatility within these sectors.

                                    Filing Volume per SEC Office

                                    The SEC uses SIC codes to help organize and delegate the oversight and review of company filings based on industry specialization within the Division of Corporation Finance.

                                    The SEC's Division of Corporation Finance is responsible for ensuring that investors are provided with material information to make informed investment decisions, primarily through the review of documents that publicly traded companies are required to file with the SEC.

                                    Assignment of Review Responsibility: Within the Division of Corporation Finance, there are multiple offices responsible for the review of filings. These offices are often organized based on industries. To determine which office reviews which company's filings, the SEC frequently uses the company's SIC code to categorize it into the appropriate industry.

                                    The SIC Codes system classifies industries with a three- or four-digit code. Every publicly traded company has an associated SIC code that represents its primary business activity.

                                    For example, a company primarily involved in the software industry has a different SIC code than a company in the pharmaceutical industry. When these companies file documents with the SEC, the filings of the software company are reviewed by an office specializing in technology companies, while the filings of the pharmaceutical company are reviewed by an office specializing in healthcare companies.

                                    Keep in mind that not every filer has an associated SIC code, so some may not be linked to a specific SEC Office in our analysis. Additionally, a single filing can reference multiple EDGAR entities, each having distinct SIC codes. In these instances, the filing contributes to the annual volume count for each entity, influencing multiple SIC codes simultaneously.

                                    Before diving into the analysis, we'll enhance the filings_per_cik_year_meta dataframe from the previous section by introducing a new office column. This will be achieved by merging it with the sic_codes dataframe.

                                    sic_codes = helpers.get_sic_codes()
                                    sic_codes.head()
                                    Out:
                                    sic_codeofficeindustry_title
                                    0100Industrial Applications and ServicesAGRICULTURAL PRODUCTION-CROPS
                                    1200Industrial Applications and ServicesAGRICULTURAL PROD-LIVESTOCK & ANIMAL SPECIALTIES
                                    2700Industrial Applications and ServicesAGRICULTURAL SERVICES
                                    3800Industrial Applications and ServicesFORESTRY
                                    4900Industrial Applications and ServicesFISHING, HUNTING AND TRAPPING
                                    filings_per_cik_year_meta = filings_per_cik_year_meta.merge(sic_codes[['sic_code', 'office']], how='left', on='sic_code')
                                    filings_per_cik_year_meta.head()
                                    Out:
                                    yearcikcountsectorindustrysic_codesic_descoffice
                                    019941000303Consumer CyclicalAuto Parts3714Motor Vehicle Parts & AccessoriesOffice of Manufacturing
                                    119941000632TechnologyScientific & Technical Instruments3823Industrial Instruments For Measurement, Displa...Industrial Applications and Services
                                    219941001222NaNNaN4911Electric ServicesOffice of Energy & Transportation
                                    319941001669Consumer CyclicalTextile Manufacturing2253Knit Outerwear MillsOffice of Manufacturing
                                    4199410024026NaNNaN4833Television Broadcasting StationsOffice of Technology
                                    filings_per_office_year = filings_per_cik_year_meta[['year', 'office', 'count']].groupby(['year', 'office']).sum().reset_index()
                                    filings_per_office_year
                                    Out:
                                    yearofficecount
                                    01994Industrial Applications and Services2281
                                    11994Office of Energy & Transportation6079
                                    21994Office of Finance9432
                                    31994Office of Finance or Office of Crypto Assets96
                                    41994Office of International Corp Fin3
                                    ............
                                    3402022Office of Manufacturing62537
                                    3412022Office of Real Estate & Construction51960
                                    3422022Office of Structured Finance36211
                                    3432022Office of Technology58047
                                    3442022Office of Trade & Services59321

                                    345 rows × 3 columns

                                    filings_per_office_year_piv = filings_per_office_year.pivot(index='year', columns='office', values='count')
                                    filings_per_office_year_piv.fillna(0, inplace=True)
                                    filings_per_office_year_piv = filings_per_office_year_piv.astype(int)
                                    filings_per_office_year_piv[-10:]
                                    Out:
                                    officeIndustrial Applications and ServicesOffice of Crypto AssetsOffice of Energy & TransportationOffice of FinanceOffice of Finance or Office of Crypto AssetsOffice of International Corp FinOffice of Life SciencesOffice of ManufacturingOffice of Real Estate & ConstructionOffice of Structured FinanceOffice of TechnologyOffice of Trade & Services
                                    year
                                    20134372825636723210443445041105301737347241826105775981071086
                                    20144492822696690210753044911214357666980541053115275856370697
                                    20154434127566211610448744581106379946841640788131835727867424
                                    20164300623895798410081944861076374226348540392134765445961462
                                    20174189217775517411309429491291390266072240786144525277661281
                                    20184013019475346211979033601132419825923840296165735499457885
                                    20193982714494999112466932561446455675644638339196905233155110
                                    20204221116484760415610935461277523255733347537296175242658704
                                    20214411611594759718615943001175558846102773389332525936761124
                                    2022427331294457931962035144892555816253751960362115804759321
                                    print("Total number of filings filed in 2022 with entities that are assigned a SIC Code:")
                                    filings_per_office_year_piv.loc[2022].sum()
                                    Total number of filings filed in 2022 with entities that are assigned a SIC Code:
                                    Out:
                                    615716
                                    plot_2_figs(filings_per_office_year_piv, "Filing Volume per SEC Office per Year (1994 - 2022)")
                                    Filing Volume per SEC Office per Year (1994 - 2022)
                                    plot_box_plot(filings_per_office_year_piv,
                                                  "Annual Filing Volume per SEC Office (1994 - 2022)", "", "Annual Filing Volume")
                                    Annual Filing Volume per SEC Office (1994 - 2022)
                                    filings_per_office_2022 = pd.DataFrame(filings_per_office_year_piv.loc[2022]).sort_values(by=2022, ascending=False)
                                    filings_per_office_2022['pct'] = filings_per_office_2022[2022] / filings_per_office_2022[2022].sum() * 100
                                    filings_per_office_2022 = filings_per_office_2022.round(1)
                                    print("Annual Filing Volume and Percentage Distribution per SEC Offices in 2022:")
                                    filings_per_office_2022
                                    Annual Filing Volume and Percentage Distribution per SEC Offices in 2022:
                                    Out:
                                    2022pct
                                    office
                                    Office of Finance19620331.9
                                    Office of Manufacturing6253710.2
                                    Office of Trade & Services593219.6
                                    Office of Technology580479.4
                                    Office of Life Sciences555819.0
                                    Office of Real Estate & Construction519608.4
                                    Office of Energy & Transportation457937.4
                                    Industrial Applications and Services427336.9
                                    Office of Structured Finance362115.9
                                    Office of Finance or Office of Crypto Assets51440.8
                                    Office of Crypto Assets12940.2
                                    Office of International Corp Fin8920.1

                                    Observations:

                                    1. The majority of SEC Offices have seen a decline in their annual filing volume since the period of 2005-2007.
                                    2. A notable exception is the Office of Finance, which has experienced robust growth in annual filing volume since 1994. Its volume dipped only during 2007-2009 and 2014-2016. In 2022, it was responsible for nearly 200,000 filings, accounting for 32% of the total volume across all SEC Offices.
                                    3. The Office of Structured Finance also deviates from the general trend. After peaking in 2006 with 30,000 filings, it saw a precipitous drop to under 5,000 by 2009. However, it has been on an upward trajectory since then, reaching a new record in 2022.
                                    4. The Office of Life Sciences presents a unique trend as well. After a slight decline from 2006 to 2012, it has consistently grown year-over-year, achieving its highest filing volume in 2022.
                                    5. The Office of Real Estate & Construction exhibited an anomaly in its filing trend. It witnessed a rapid growth from 2019 to 2021, only to experience a decline in 2022.

                                    Office of Structured Finance

                                    The Office of Structured Finance focuses on the oversight of structured finance products. In particular, the office focuses on securitized products, primarily asset-backed securities (ABS). ABS are securities that are collateralized by a pool of assets, such as mortgages (Mortgage-Backed Securities or MBS), auto loans, credit card receivables, student loans, and other types of financial assets. Given the complexity and diversity of structured finance products, and the role they played in the 2007-2008 financial crisis, the office's responsibilities are critical for the stability and integrity of the financial markets.


                                    Filing Volume per SIC Codes

                                    filings_per_sic_year = filings_per_cik_year_meta[['year', 'sic_code', 'count']].groupby(['year', 'sic_code']).sum().reset_index()
                                    filings_per_sic_year
                                    Out:
                                    yearsic_codecount
                                    0199425011
                                    1199410041
                                    21994100059
                                    319941040105
                                    41994104418
                                    ............
                                    1259120228888611
                                    125922022890093
                                    125932022900134
                                    125942022972130
                                    125952022999519

                                    12596 rows × 3 columns

                                    filings_per_sic_year_piv = filings_per_sic_year.pivot(index='year', columns='sic_code', values='count')
                                    filings_per_sic_year_piv.fillna(0, inplace=True)
                                    filings_per_sic_year_piv = filings_per_sic_year_piv.astype(int)
                                    top_20_sics_2022 = filings_per_sic_year_piv.T.sort_values(by=2022, ascending=False)[2022].head(20).index.to_list()
                                    plot_2_figs(filings_per_sic_year_piv[top_20_sics_2022], "Filing Volume per SIC Code per Year (1994 - 2022)")
                                    Filing Volume per SIC Code per Year (1994 - 2022)
                                    plot_box_plot(filings_per_sic_year_piv.T[range(2000, 2023)].T[top_20_sics_2022],
                                                  "Annual Filing Volume per SIC Code (2000 - 2022)", "", "Annual Filing Volume")
                                    Annual Filing Volume per SIC Code (2000 - 2022)
                                    top_20_sic_stats_2022 = pd.DataFrame(filings_per_sic_year_piv[top_20_sics_2022].T[2022])
                                    top_20_sic_stats_2022 = top_20_sic_stats_2022.merge(sic_codes[['sic_code', 'industry_title']], how='left', on='sic_code')
                                    top_20_sic_stats_2022['pct'] = top_20_sic_stats_2022[2022] / top_20_sic_stats_2022[2022].sum() * 100
                                    top_20_sic_stats_2022 = top_20_sic_stats_2022.round(1)
                                    top_20_sic_stats_2022.head(10)
                                    Out:
                                    sic_code2022industry_titlepct
                                    0602175614NATIONAL COMMERCIAL BANKS19.9
                                    1621155134SECURITY BROKERS, DEALERS & FLOTATION COMPANIES14.5
                                    2283439586PHARMACEUTICAL PREPARATIONS10.4
                                    3618936211ASSET-BACKED SECURITIES9.5
                                    4677021693BLANK CHECKS5.7
                                    5737220221SERVICES-PREPACKAGED SOFTWARE5.3
                                    6602218699STATE COMMERCIAL BANKS4.9
                                    7602917810COMMERCIAL BANKS, NEC4.7
                                    8679816965REAL ESTATE INVESTMENT TRUSTS4.5
                                    9283612580BIOLOGICAL PRODUCTS, (NO DISGNOSTIC SUBSTANCES)3.3

                                    Observations:

                                    • In 2022, the NATIONAL COMMERCIAL BANKS (SIC 6021) sector submitted the most filings. Their annual volume has been on a consistent rise since 1994, with a pronounced surge from 2016 onwards. This sector reached a peak in 2022 with over 75,000 filings, a substantial jump from 27,000 in 2016. This means that the filings from this sector alone constituted 20% of all 2022 filings.
                                    • The second-highest filing volume in 2022 was attributed to SECURITY BROKERS, DEALERS & FLOTATION COMPANIES (SIC 6211), accounting for around 55,000 filings or 15% of the year's total.
                                    • The PHARMACEUTICAL PREPARATIONS (SIC 2834) sector has seen a consistent growth since 2012, moving from just over 20,000 annual filings to 40,000 in 2021.
                                    • The rise of Blank Check companies (often referred to as SPACs or shell companies) was evident in 2021, marking their highest annual filing volume for this SIC code. Starting with fewer than 8,000 filings in 2019, they soared to nearly 40,000 in 2021, before halving to around 20,000 in 2022.
                                    • Asset-backed securities (ABS - SIC 6189) filings stood out in 2006 with 35,000 annual filings, potentially acting as an early warning sign preceding the financial crisis. This category saw the fastest growth rate from 1997 to 2006. However, post the 2006 peak, ABS filings plummeted to 5,000 in 2009 but have been on an upward trajectory since, surpassing their pre-crisis peak in 2022.

                                    IPO & Registration Statement Volumes

                                    Registration statements filed on the EDGAR system, such as Forms S-1, S-4 and others, are used by companies and other entities to register new securities before they can be offered to the public. These forms provide detailed information about the issuer and the securities being offered. The main purpose of these registration statements is to provide potential investors with the necessary information to make informed investment decisions.

                                    The following list represents on overview of registration statements and their purposes.

                                    Form TypeDescription
                                    S-1This is the primary registration form for new securities and used for initial public offerings (IPOs). It provides a comprehensive overview of the company's business, financial statements, management, risks, and other relevant data.
                                    S-1MEFRegistration adding securities to prior Form S-1 registration
                                    S-3Used by companies that meet specific reporting requirements, offering a "short form" registration.
                                    S-4Used for registration of securities in merger and acquisition situations. When one company acquires another, and as part of the deal, issues its own shares to the shareholders of the acquired company, those shares need to be registered, and the S-4 provides details about the transaction and the combined entity.
                                    S-8Used to register securities to be offered to employees through employee benefit plans.
                                    S-11Used to register securities of real estate investment trusts (REITs).
                                    F-1Used by foreign companies to register securities they intend to list on American exchanges.
                                    F-3Similar to the S-3 but for foreign issuers that meet the reporting requirements.
                                    F-4Equivalent to the S-4 but for foreign issuers.
                                    F-6Used to register American Depositary Receipts (ADRs) issued by a depositary against the deposit of the securities of a foreign issuer.
                                    SB-1Used by small business issuers to register securities for an aggregate offering price of up to $10 million.
                                    SB-2Used by small business issuers, allowing them to register securities without a limit on the aggregate offering price.
                                    N-1AUsed by open-end mutual funds and ETFs to register under both the Securities Act of 1933 and the Investment Company Act of 1940. It provides details about the fund's objectives, strategies, risks, performance, expenses, and other information.
                                    N-2Similar to the N-1A but used by closed-end funds.
                                    N-3Used by separate accounts organized as management investment companies to register under the Investment Company Act of 1940 and to offer variable annuities.
                                    N-4Used by separate accounts organized as unit investment trusts to register under the Investment Company Act of 1940 and to offer variable annuities.
                                    N-5Used by small business investment companies and business development companies to register under both the Securities Act of 1933 and the Investment Company Act of 1940.
                                    N-6Used by separate accounts organized as unit investment trusts to register under the Investment Company Act of 1940 and to offer variable life insurance policies.
                                    view_s = filing_count_stats['formType'].str.startswith('S-')
                                    view_f = filing_count_stats['formType'].str.startswith('F-')
                                    filing_count_stats_reg = filing_count_stats[(view_s) | (view_f)]
                                    print("List of all registration statements used since 2000:")
                                    filing_count_stats_reg[filing_count_stats_reg['year'] >= 2000]['formType'].sort_values().unique()
                                    List of all registration statements used since 2000:
                                    Out:
                                    array(['F-1', 'F-1/A', 'F-10', 'F-10/A', 'F-10EF', 'F-10POS', 'F-1MEF',
                                           'F-2', 'F-2/A', 'F-3', 'F-3/A', 'F-3ASR', 'F-3D', 'F-3DPOS',
                                           'F-3MEF', 'F-4', 'F-4 POS', 'F-4/A', 'F-4EF', 'F-4MEF', 'F-6',
                                           'F-6 POS', 'F-6/A', 'F-6EF', 'F-7', 'F-7 POS', 'F-7/A', 'F-8',
                                           'F-8 POS', 'F-8/A', 'F-80', 'F-80/A', 'F-80POS', 'F-9', 'F-9 POS',
                                           'F-9/A', 'F-9EF', 'F-N', 'F-N/A', 'F-X', 'F-X/A', 'S-1', 'S-1.1',
                                           'S-1/A', 'S-11', 'S-11/A', 'S-11MEF', 'S-1MEF', 'S-2', 'S-2/A',
                                           'S-20', 'S-20/A', 'S-2MEF', 'S-3', 'S-3/A', 'S-3/A.1', 'S-3ASR',
                                           'S-3D', 'S-3DPOS', 'S-3MEF', 'S-4', 'S-4 POS', 'S-4/A', 'S-4/A.3',
                                           'S-4/A.4', 'S-4/A.5', 'S-4/A.6', 'S-4EF', 'S-4EF/A', 'S-4MEF',
                                           'S-6', 'S-6/A', 'S-8', 'S-8 POS', 'S-B', 'S-B/A', 'S-BMEF'],
                                          dtype=object)
                                    filing_count_stats_reg_year = filing_count_stats_reg[['year', 'formType', 'count']].groupby(['year', 'formType']).sum().reset_index()
                                    filing_count_stats_reg_year
                                    Out:
                                    yearformTypecount
                                    01994F-41
                                    11994S-141
                                    21994S-1/A96
                                    31994S-117
                                    41994S-11/A9
                                    ............
                                    13272022S-82526
                                    13282022S-8 POS1583
                                    13292022S-B13
                                    13302022S-B/A13
                                    13312022S-BMEF1

                                    1332 rows × 3 columns

                                    filing_count_stats_reg_year_piv = filing_count_stats_reg_year.pivot(index='year', columns='formType', values='count')
                                    filing_count_stats_reg_year_piv.fillna(0, inplace=True)
                                    filing_count_stats_reg_year_piv = filing_count_stats_reg_year_piv.astype(int)
                                    filing_count_stats_reg_year_piv_t = filing_count_stats_reg_year_piv.transpose()
                                    filing_count_stats_reg_year_piv_t['avg'] = filing_count_stats_reg_year_piv_t.mean(axis=1)
                                    filing_count_stats_reg_year_piv_t = filing_count_stats_reg_year_piv_t[filing_count_stats_reg_year_piv_t['avg'] > 50]
                                    filing_count_stats_reg_year_piv_t.drop(columns=['avg'], inplace=True)
                                    filing_count_stats_reg_year_subset = filing_count_stats_reg_year_piv_t.transpose()
                                    filing_count_stats_reg_year_subset.index = filing_count_stats_reg_year_subset.index.astype(int)
                                    filing_count_stats_reg_year_subset[-10:]
                                    Out:
                                    formTypeF-1F-1/AF-3F-3/AF-3ASRF-4F-4/AF-6F-6 POSF-6EF...S-3S-3/AS-3ASRS-3MEFS-4S-4/AS-6S-6/AS-8S-8 POS
                                    year
                                    201365201998042575134186178982...1259151520394367457535120766120971595
                                    20141133032142725236673501761368...121997928492949643001134074821841666
                                    2015792335361460974465164222844...125471137872044052970135875521442084
                                    20164516062120384096114296880...105351823381729431483127380019942362
                                    201779227225455433771481772712...117867323241830171570122177620452071
                                    201811330125240765168172288336...8383862306211629619111344120411771
                                    2019137288273306144291581981114...8003122127161380533101022920061747
                                    202016638816078653155140324334...103742122425612111110101921322531866
                                    20212545411607210889213198178535...114335719835411971101103320228071826
                                    2022205572163200656418484228348...9963451504780781596419825261583

                                    10 rows × 26 columns

                                    plot_2_figs(filing_count_stats_reg_year_subset, "Registration Statements per Year (1994 - 2022)", figsize=(10, 5))
                                    Registration Statements per Year (1994 - 2022)
                                    plot_box_plot(filing_count_stats_reg_year_subset.loc[1996:],
                                                  "Registration Statements per Year (1996 - 2022)", "", "Annual Filing Volume")
                                    Registration Statements Box Plot per Year (1996 - 2022)
                                    view_s_subset = filing_count_stats_reg_year_subset.columns.str.startswith('S-')
                                    view_f_subset = filing_count_stats_reg_year_subset.columns.str.startswith('F-')
                                    sns.heatmap(filing_count_stats_reg_year_subset.loc[:, view_s_subset], cmap='Blues')
                                    plt.gcf().set_size_inches(4, 4)
                                    plt.title("Local Registration Statements per Year (1994 - 2022)"), plt.ylabel("Year"), plt.xlabel(""), plt.tight_layout()
                                    plt.gca().yaxis.grid(color='lightgrey', linestyle='dashed', linewidth=0.5)
                                    ax = plt.gca()
                                    ax.tick_params(axis='x', rotation=50), ax.set_xticklabels(ax.get_xticklabels(), ha='right')
                                    plt.show()
                                    Local Registration Statements Heat Map per Year (1994 - 2022)
                                    sns.heatmap(filing_count_stats_reg_year_subset.loc[:, view_f_subset], cmap='Blues')
                                    plt.gcf().set_size_inches(4, 4)
                                    plt.title("Foreign Registration Statements per Year (1994 - 2022)")
                                    plt.ylabel("Year"), plt.xlabel(""), plt.tight_layout()
                                    plt.gca().yaxis.grid(color='lightgrey', linestyle='dashed', linewidth=0.5)
                                    ax = plt.gca()
                                    ax.tick_params(axis='x', rotation=50), ax.set_xticklabels(ax.get_xticklabels(), ha='right')
                                    plt.show()
                                    Foreign Registration Statements Heat Map per Year (1994 - 2022)
                                    filing_count_stats_year = filing_count_stats[['year', 'sector', 'formType', 'count']].groupby(['year', 'sector', 'formType']).sum().reset_index()
                                    view_s1 = filing_count_stats_year['formType'] == 'S-1'
                                    filing_count_stats_year_piv_s1 = filing_count_stats_year[view_s1].pivot(index='year', columns='sector', values='count')
                                    filing_count_stats_year_piv_s1.fillna(0, inplace=True)
                                    s1_sums = pd.DataFrame(filing_count_stats_year_piv_s1.sum(axis=1), columns=['sum'])
                                    s1_sums['pct_change'] = s1_sums.pct_change(axis=0) * 100
                                    s1_sums.fillna(0, inplace=True)
                                    s1_sums = s1_sums.astype(int)
                                    s1_sums[-10:]
                                    Out:
                                    sumpct_change
                                    year
                                    201353356
                                    20145869
                                    2015445-24
                                    2016354-20
                                    201747734
                                    2018448-6
                                    20194551
                                    202087792
                                    2021145265
                                    2022544-62
                                    plot_2_figs(filing_count_stats_year_piv_s1, "Annual S-1 Filing Volume per Sector (1994 - 2022)")
                                    Annual S-1 Filing Volume per Sector (1994 - 2022)
                                    plot_box_plot(filing_count_stats_year_piv_s1.loc[1996:],
                                                  "Annual S-1 Filing Volume per Sector (1996 - 2022)", "", "Annual Filing Volume", figsize=(4,3))
                                    Annual S-1 Filing Volume per Sector (1996 - 2022)
                                    view_s1a = filing_count_stats_year['formType'] == 'S-1/A'
                                    filing_count_stats_year_piv_s1a = filing_count_stats_year[view_s1a].pivot(index='year', columns='sector', values='count')
                                    filing_count_stats_year_piv_s1a.fillna(0, inplace=True)
                                    plot_2_figs(filing_count_stats_year_piv_s1a, "Annual S-1/A Filing Volume per Sector (1994 - 2022)")
                                    Annual S-1/A Filing Volume per Sector (1994 - 2022)
                                    plot_box_plot(filing_count_stats_year_piv_s1a.loc[1996:],
                                                  "Annual S-1/A Filing Volume per Sector (1996 - 2022)", "", "Annual Filing Volume", figsize=(4,3))
                                    Annual S-1/A Filing Volume per Sector (1996 - 2022)

                                    Observations:

                                    1. IPOs: In 2021, the number of IPOs, as gauged by S-1 filings, reached an unprecedented all-time high with over 1,400 submissions. Remarkably, the combined IPO activity in the Industrials and Healthcare sectors accounted for more than half of all IPOs. This volume even surpassed the flurry seen during the pre-dot-com bubble era, marking the highest since the 2000 bubble.
                                    2. Healthcare Sector:
                                      • The Healthcare sector recorded its most significant growth in S-1 filings between 2008 and 2014, briefly dipped from 2014 to 2016, and then hit a record in 2020 with nearly 350 S-1 filings.
                                      • The momentum in S-1 filings has been upward since 2008, climaxing in 2020 with over 300 filings.
                                    3. Tech-Boom:
                                      • The late '90s tech boom is evident with a surge in S-1 filings from 1996 to 1999, which saw a more than 100% growth. However, post the 1999 peak of 350 filings, there was a sharp decline to less than 50 by 2001. A significant resurgence occurred between 2019 to 2021, with filings spiking to over 300 in 2021 from a stable base of 70 in 2019. This uptrend was followed by a dip in 2022, dropping below 100.
                                    4. M&A Activity:
                                      • S-4 and S-4/A filing volumes suggest heightened M&A activity during 2003-2004 and 2010-2013, possibly reflecting post-crisis consolidations.
                                      • Overall, M&A activity, as suggested by these filings, has been on the decline post-2013.
                                    5. Additional Filings:
                                      • 2021 saw a peak in S-1/A filings.
                                      • F-3/A filings experienced a spike in 2015.
                                      • F-4/A filings had notable increases in 2004 and 2012.
                                      • F-6 POS peaked in 2017, while F-6EF had distinct spikes in 2008, 2014, and 2019.
                                    6. SPAC Trend: The rise of Special Purpose Acquisition Companies (SPACs) from 2019 to 2021 can be attributed to the Industrials sector.
                                    7. Post Dot-Com Bubble: After the dot-com bubble burst, S-1 filings plummeted by 61% from 583 in 2000 to 206 in 2001. While the volume remained flat between 2001 and 2003, there was a significant 92% increase from 2003 to 2004.
                                    8. Amendments: The volume of S-1/A filings consistently surpassing S-1 filings underscores the continuous flow of new information post the initial S-1 submission. This highlights the importance of monitoring not just the original S-1 but all subsequent amendments for a comprehensive understanding.

                                    From S-4 Excursion

                                    Form S-4 is used for the registration of securities involved in business combinations, such as mergers, consolidations, or transfers of assets. An increase in the number of S-4 filings in a given year can indicate several things:

                                    • M&A Activity: A rise in the number of S-4 filings typically points to an increase in merger and acquisition (M&A) activity. More companies might be merging, acquiring others, or undergoing asset transfers.
                                    • Favorable Market Conditions: Companies often engage in M&A activities when market conditions are favorable, interest rates are low, and access to capital is easier. An uptick in S-4 filings could signal optimistic market conditions or might reflect optimism about future conditions. Companies might be merging or acquiring in anticipation of future growth.
                                    • Industry Consolidation: It could indicate consolidation within specific industries. For example, if a particular sector is undergoing significant changes, companies within that sector might merge to better compete or achieve economies of scale.
                                    • Tax or Regulatory Changes: Changes in tax laws or regulations can sometimes motivate companies to engage in M&A activities to optimize their structures or operations in light of the new rules.

                                    From F-6 POS Excursion

                                    Form F-6 is used to register American Depositary Receipts (ADRs) issued by a depositary against the deposit of the securities of a foreign issuer. ADRs are a way for U.S. investors to purchase shares of foreign companies without buying the actual shares directly. Instead, they buy the ADRs, which represent shares held in a bank.

                                    The "POS" in "F-6 POS" stands for "Post-Effective Amendment". A Post-Effective Amendment is filed to update, amend, or provide additional information to a previously filed registration statement after it has become effective.

                                    In the context of "F-6 POS," it means that the depositary is amending a previously effective registration statement related to the ADRs. This could be due to various reasons, such as changes in the terms of the ADRs, changes in the underlying agreement, or to provide updated information about the foreign issuer.


                                    Late-Filing Notification Trends

                                    The "NT" in EDGAR filings stands for "Non-Timely." These filings are used when a registrant knows it will not be able to file a required report on time. The "NT" filings allow the registrant to notify the SEC and investors that there will be a delay and provide reasons for the delay. Here are the specific "NT" forms:

                                    • Form NT 10-K: This form is filed when a company cannot timely file its annual report, Form 10-K. The company is required to file the Form NT 10-K within one business day after the due date of the 10-K.
                                    • Form NT 10-Q: This form is used when a company cannot timely file its quarterly report, Form 10-Q. Similar to the NT 10-K, the company must file the Form NT 10-Q within one business day after the due date of the 10-Q.
                                    • Form NT 20-F: This is for foreign private issuers who can't file their annual report on Form 20-F on time.
                                    • Form NT 11-K: This is used when the required annual report of employee stock purchase, savings, and similar plans (Form 11-K) cannot be filed on time.
                                    • Other forms: 10-D, N-CEN, N-CSR

                                    When filing an "NT" form, the company typically has to state the reasons for the delay and, in some cases, when it expects to file the report. If the report is not filed within the grace period (typically 15 calendar days for Forms 10-K and 20-F, and 5 calendar days for Form 10-Q), the company can face penalties or other regulatory actions from the SEC.

                                    Potential reasons for a company's filing delay, which could influence its stock price, include:

                                    • Pending Financial Restatements: If a company identifies errors in its previously issued financial statements and decides to restate them, it might need additional time to finalize the corrected statements.
                                    • Litigation or Regulatory Issues: Pending litigation or regulatory investigations can introduce uncertainties that affect the financial statements. The company might delay its filing until there's more clarity on these matters.
                                    • Internal Controls Issues: A company might identify deficiencies or material weaknesses in its internal control over financial reporting. Addressing and documenting these issues can delay the preparation of financial statements.

                                    Possible reasons that are less likely to impact a company's stock price include:

                                    • Acquisitions or Mergers: If a company recently underwent a significant merger or acquisition, the complexities of integrating and accounting for the acquired entity could result in delays.
                                    • Management Turnover: If key members of the financial or executive team have recently left the company or if there's been significant turnover, the company might face challenges in preparing its financial reports on time.
                                    • Complex Transactions: The company might have engaged in complex transactions during the period, such as debt restructuring, which requires additional time to account for and disclose appropriately.
                                    • External Factors: Natural disasters, pandemics, or other significant external events might disrupt a company's ability to prepare and finalize its reports.
                                    • System or Technology Failures: Technical issues, such as system outages or failures in financial reporting software, can hinder the preparation of financial statements.
                                    view_nt = filing_count_stats['formType'].str.startswith('NT ')
                                    filing_count_stats_nt = filing_count_stats[view_nt]
                                    print("Late Filing Types:")
                                    filing_count_stats_nt[filing_count_stats_nt['year'] >= 2000]['formType'].unique()
                                    Late Filing Types:
                                    Out:
                                    array(['NT 10-Q', 'NT 10-K', 'NT 11-K', 'NT 10-Q/A', 'NT 10-K/A',
                                           'NT 20-F', 'NT 11-K/A', 'NT 15D2/A', 'NT 20-F/A', 'NT 15D2',
                                           'NT 10-D', 'NT 10-D/A'], dtype=object)
                                    filing_count_stats_nt_year = filing_count_stats_nt[['year', 'formType', 'count']].groupby(['year', 'formType']).sum().reset_index()
                                    filing_count_stats_nt_year_piv = filing_count_stats_nt_year.pivot(index='year', columns='formType', values='count')
                                    filing_count_stats_nt_year_piv.fillna(0, inplace=True)
                                    filing_count_stats_nt_year_piv = filing_count_stats_nt_year_piv.astype(int)
                                    filing_count_stats_nt_year_piv_t = filing_count_stats_nt_year_piv.transpose()
                                    filing_count_stats_nt_year_piv_t['avg'] = filing_count_stats_nt_year_piv_t.mean(axis=1)
                                    filing_count_stats_nt_year_piv_t = filing_count_stats_nt_year_piv_t[filing_count_stats_nt_year_piv_t['avg'] > 5]
                                    filing_count_stats_nt_year_piv_t.drop(columns=['avg'], inplace=True)
                                    filing_count_stats_nt_year_piv = filing_count_stats_nt_year_piv_t.transpose()
                                    filing_count_stats_nt_year_piv.index = filing_count_stats_nt_year_piv.index.astype(int)
                                    filing_count_stats_nt_year_piv[-10:]
                                    Out:
                                    formTypeNT 10-KNT 10-K/ANT 10-QNT 10-Q/ANT 11-KNT 20-F
                                    year
                                    20131577192767122262
                                    2014146782553101164
                                    201513897230182764
                                    2016125518218393060
                                    20171074171874101862
                                    201896412167171477
                                    2019874915556383
                                    202071425106817772
                                    20217071018802211104
                                    20229921216321415150
                                    plot_2_figs(filing_count_stats_nt_year_piv, "Late Filing Notices per Year (1994 - 2022)")
                                    Late Filing Notifications per Year (1994 - 2022)
                                    view_nt_10q = filing_count_stats_year['formType'] == 'NT 10-Q'
                                    filing_count_stats_year_piv_nt = filing_count_stats_year[view_nt_10q].pivot(index='year', columns='sector', values='count')
                                    filing_count_stats_year_piv_nt[-5:]
                                    Out:
                                    sectorBasic MaterialsCommunication ServicesConsumer CyclicalConsumer DefensiveEnergyFinancial ServicesHealthcareIndustrialsReal EstateTechnologyUtilities
                                    year
                                    201820.039.044.025.024.027.093.078.013.089.03.0
                                    201925.029.045.026.033.022.0108.092.015.071.04.0
                                    202013.020.045.018.032.025.074.060.010.047.03.0
                                    202124.041.059.024.015.032.0131.0537.012.0106.09.0
                                    202216.025.039.021.016.040.0104.0320.07.091.04.0
                                    plot_2_figs(filing_count_stats_year_piv_nt,  "Annual NT 10-Q Volume per Sector (1994 - 2022)")
                                    Annual NT 10-Q Volume per Sector (1994 - 2022)
                                    plot_box_plot(filing_count_stats_year_piv_nt.loc[1996:],
                                                  "Annual NT 10-Q Volume per Sector (1996 - 2022)", "", "Annual Filing Volume", figsize=(4, 3))
                                    Annual NT 10-Q Volume per Sector - Box Plot (1996 - 2022)

                                    Observations:

                                    • NT Filing Trends:
                                      • The peak annual volume for NT filings occurred in 2006 with 7,500 filings, closely followed by 2002 which registered just over 7,000 filings.
                                      • A consistent decline in NT filings was observed post-2006, reaching a record low of under 2,000 filings in 2020. However, this trend saw a reversal in 2021 and 2022.
                                    • Composition of NT Filings: NT 10-Q and NT 10-K submissions constitute approximately 95% of all NT filings from 1994 to 2022.
                                    • Sectoral Indicators:
                                      • In the lead-up to the dot-com bubble and the subsequent financial crisis, the Technology sector dominated NT 10-Q filings, serving as a potential early indicator of market turbulence.
                                      • A similar pattern was evident in the Industrials sector (notably driven by SPACs), which saw a jump from 70 filings in 2020 to over 500 in 2021. Notably, other sectors remained stable during this period.
                                    • Historical Highs: The Industrials sector's NT filings reached an all-time high in 2021, surpassing even the volumes seen during the dot-com and financial crises and outpacing the Technology sector's 2006 figures.
                                    • Sectoral Medians: Over the period from 1994 to 2022, the Healthcare and Tech sectors recorded the highest median annual NT volumes.
                                    • Sectoral Variability: Utilities and Real Estate sectors displayed the least variability in their NT filings, indicating more consistent filing behavior.

                                    Delisting Notification Trends - 25-NSE Filings

                                    When a publicly traded company doesn't meet the $1 share price minimum or other listing requirements of a stock exchange, the exchange itself will file a Form 25 on EDGAR. Form 25 is the "Notification of Removal from Listing and/or Registration" and is used by the national securities exchanges to delist and deregister a security.

                                    The process usually goes as follows:

                                    1. The exchange notifies the company that it is out of compliance with listing standards.
                                    2. The company is given a grace period to regain compliance.
                                    3. If the company fails to regain compliance within that period, the exchange may decide to delist the security.
                                    4. The exchange will then file a Form 25 to initiate the delisting and deregistration process.

                                    It's worth noting that while Form 25 is the primary notification of delisting, it's the final step in a longer compliance process. Previous filings, such as Form 8-Ks, might have indicated potential compliance issues. In a Form 8-K filing, Item 3.01, titled "Notice of Delisting or Failure to Satisfy a Continued Listing Rule or Standard; Transfer of Listing," requires public companies to disclose any notifications received from an exchange indicating the company's non-compliance with listing standards.

                                    view_25_nse = filing_count_stats['formType'].str.startswith('25-NSE')
                                    filing_count_stats_25_nse = filing_count_stats[view_25_nse]
                                    print("25-NSE Form Types:")
                                    filing_count_stats_25_nse[filing_count_stats_25_nse['year'] >= 2000]['formType'].unique()
                                    25-NSE Form Types:
                                    Out:
                                    array(['25-NSE', '25-NSE/A'], dtype=object)
                                    filing_count_stats_25_nse_year = filing_count_stats_25_nse[['year', 'formType', 'count']].groupby(['year', 'formType']).sum().reset_index()
                                    filing_count_stats_25_nse_year_piv = filing_count_stats_25_nse_year.pivot(index='year', columns='formType', values='count')
                                    filing_count_stats_25_nse_year_piv.fillna(0, inplace=True)
                                    filing_count_stats_25_nse_year_piv = filing_count_stats_25_nse_year_piv.astype(int)
                                    filing_count_stats_25_nse_year_piv[-5:]
                                    Out:
                                    formType25-NSE25-NSE/A
                                    year
                                    201816508
                                    2019161244
                                    2020179414
                                    2021202626
                                    2022197018
                                    filing_count_stats_25_nse_year_piv.plot(kind='bar', stacked=True, figsize=(5, 4))
                                    plt.title("25-NSE Annual Filing Volume (2006 - 2022)")
                                    plt.ylabel("Annual Filing Volume"), plt.xlabel("Year"), plt.tight_layout()
                                    ax = plt.gca()
                                    ax.yaxis.set_major_formatter(mtick.FuncFormatter(lambda x, p: format(int(x), ',')))
                                    handles, labels = ax.get_legend_handles_labels()
                                    ax.legend(reversed(handles), reversed(labels), loc='center left', bbox_to_anchor=(1, 0.5), fontsize=8)
                                    ax.grid(), ax.set_axisbelow(True)
                                    plt.show()
                                    25-NSE Annual Filing Volume (2006 - 2022)
                                    view_25_nse = filing_count_stats_year['formType'] == '25-NSE'
                                    filing_count_stats_year_piv_nse = filing_count_stats_year[view_25_nse].pivot(index='year', columns='sector', values='count')
                                    filing_count_stats_year_piv_nse[-5:]
                                    Out:
                                    sectorBasic MaterialsCommunication ServicesConsumer CyclicalConsumer DefensiveEnergyFinancial ServicesHealthcareIndustrialsReal EstateTechnologyUtilities
                                    year
                                    201827272921601266347395512
                                    2019282246235990706038709
                                    202016415332521457759233615
                                    202123396329421819770718417
                                    202228222530299692269277516
                                    plot_2_figs(filing_count_stats_year_piv_nse, "25-NSE Annual Filing Volume per Sector (2006 - 2022)")
                                    25-NSE Annual Filing Volume per Sector (2006 - 2022)
                                    plot_box_plot(filing_count_stats_year_piv_nse,
                                                  "Annual 25-NSE Volume per Sector (2006 - 2022)", "", "Annual Filing Volume", figsize=(4, 4))
                                    Annual 25-NSE Volume per Sector - Box Plot (2006 - 2022)

                                    Observations:

                                    • Trends in 25-NSE Filings:
                                      • The annual volume of 25-NSE filings has consistently risen from 2011 through 2022.
                                      • 2021 marked the record year for delistings with 2,026 instances, closely followed by 2022 with 1,970 cases and 2007 with 1,944.
                                      • Interestingly, there was a continuous decrease from 2007 to 2010 in the wake of the financial crisis. This post-crisis period, especially 2007, saw accelerated market corrections, as indicated by the high delisting volumes.
                                    • Sectoral Highlights:
                                      • The Industrials sector, potentially reflective of SPAC activities, registered the highest number of delistings in 2022, with over 250 25-NSE filings.
                                      • The Financial Services sector has historically been a major recipient of 25-NSE filings, witnessing a peak in 2007/2008 with over 200 filings. After reaching a low in 2014, the sector experienced its second-highest volume in 2021 with 170 filings.
                                      • The Technology sector ranks second in terms of delisting numbers, maintaining a median annual figure of around 70 delistings.
                                    • Sectoral Lows:
                                      • From 2006 to 2022, sectors such as Utilities, Communications Services, Consumer Defensive, and Basic Materials consistently recorded the fewest annual delistings.

                                    Insider Trading Filing Trends

                                    SEC Forms 3, 4, and 5 are designed to provide transparency regarding the transactions of company insiders in their own company's stock. "Insiders" are defined as officers, directors, and beneficial owners holding more than 10% of a class of the company's equity securities. In essence, these forms aim to provide transparency and prevent illegal insider trading by ensuring that the public has timely access to information about transactions by company insiders.

                                    • Form 3 - Initial Statement of Beneficial Ownership: This form is used by insiders to report their initial ownership of the company's securities when they first become an insider. Insiders must file Form 3 within ten days of becoming an officer, director, or beneficial owner.

                                    • Form 4 - Statement of Changes in Beneficial Ownership: This form is used by insiders to report changes in their ownership, such as purchases, sales, gifts, or other acquisitions or dispositions of the company's securities. Form 4 must be filed within two business days following the day on which the transaction occurred.

                                    • Form 5 - Annual Statement of Beneficial Ownership: This form is used by insiders to report any transactions that should have been reported earlier on a Form 4 or were eligible for deferred reporting. It's also used to report transactions that are exempt from immediate reporting requirements, such as those under employee benefit plans. Form 5 must be filed within 45 days after the company's fiscal year-end. If there are no unreported transactions, the insider does not need to file a Form 5.

                                    view_3_insider = (filing_count_stats['formType']=='3') | (filing_count_stats['formType']=='3/A')
                                    view_4_insider = (filing_count_stats['formType']=='4') | (filing_count_stats['formType']=='4/A')
                                    view_5_insider = (filing_count_stats['formType']=='5') | (filing_count_stats['formType']=='5/A')
                                    insider_stats = filing_count_stats[view_3_insider | view_4_insider | view_5_insider]
                                    insider_4_stats = filing_count_stats[view_4_insider]
                                    insider_4_stats_year = insider_4_stats[['year', 'sector', 'count']].groupby(['year', 'sector'], dropna=False).sum().reset_index()
                                    insider_4_stats_year_piv = insider_4_stats_year.pivot(index='year', columns='sector', values='count')
                                    insider_4_stats_year_piv.fillna(0, inplace=True)
                                    insider_4_stats_year_piv = insider_4_stats_year_piv.astype(int)
                                    insider_4_stats_year_piv[-10:]
                                    Out:
                                    sectorNaNBasic MaterialsCommunication ServicesConsumer CyclicalConsumer DefensiveEnergyFinancial ServicesHealthcareIndustrialsReal EstateTechnologyUtilities
                                    year
                                    2013223494102889180215709264110063273423886233217560321055796
                                    2014222278101398469213459362117903278526436227948499307525837
                                    201522146295358790214279132106703339127468217978796303585798
                                    20162108069033858420590807299773330226133211798853276105284
                                    20172076909629814520263794694163295426188211088835278734679
                                    20182061749042864219557776892553170127719237328983261744311
                                    20191996088433780218799738183503047929031226448764271274229
                                    20202062798434832718465787072203261233103211778978279153870
                                    20212257128649874221371821975273239237087228189057314573844
                                    20222088928407790219156808174312990735239215608057296394008
                                    plot_2_figs(insider_4_stats_year_piv.drop(columns=[np.nan]), "Annual Form 4 Volume per Sector (1996 - 2022)")
                                    Annual Form 4 Volume per Sector (1996 - 2022)
                                    plot_box_plot(insider_4_stats_year_piv.loc[2003:].drop(columns=[np.nan]),
                                                  "Annual Form 4 Volume per Sector (2003 - 2022)", "", "Filing Volume", figsize=(4, 4))
                                    Annual Form 4 Volume per Sector - Box Plot (2003 - 2022)
                                    form_4_2022 = pd.DataFrame(insider_4_stats_year_piv.loc[2022]).sort_values(by=2022, ascending=False)
                                    form_4_2022['pct'] = form_4_2022[2022] / form_4_2022[2022].sum() * 100
                                    form_4_2022 = form_4_2022.round(1)
                                    form_4_2022
                                    Out:
                                    2022pct
                                    sector
                                    NaN20889253.8
                                    Healthcare352399.1
                                    Financial Services299077.7
                                    Technology296397.6
                                    Industrials215605.6
                                    Consumer Cyclical191564.9
                                    Basic Materials84072.2
                                    Consumer Defensive80812.1
                                    Real Estate80572.1
                                    Communication Services79022.0
                                    Energy74311.9
                                    Utilities40081.0

                                    Observations:

                                    • Peak in Insider Trading Filings: A majority of sectors (10 out of 11) experienced their highest volume of insider trading filings (Form 4) in 2004, with a subsequent decline observed in the ensuing years.
                                    • Healthcare Sector Trend: Contrary to the general trend, the Healthcare sector has witnessed a continuous rise in Form 4 filing volume since 2012. Remarkably, in 2021, its filing volume almost matched the peak observed in the Technology sector in 2004.
                                    • Leading Sectors in 2022: The sectors with the highest number of Form 4 filings in 2022 were, in descending order: Healthcare, Finance, Technology, Industrials, and Consumer Cyclical.
                                    • Unassigned Entities: Notably, over half (53%) of the entities mentioned in Form 4 filings in 2022 did not have a designated sector. While not all entities have a specific sector assigned to them, the companies in which the securities transactions are taking place usually have an associated sector.

                                    The lack of sector assignment can be attributed to various factors:

                                    Nature of the Entity: The entities can be diverse, including trusts, limited partnerships, investment vehicles, or other types of organizational structures. These entities might not operate in a specific sector but rather serve a specific purpose, such as estate planning or investment.

                                    Lack of Public Information: Many of the entities might not be public entities. Without public filings, there might be limited information available about the primary sector of the entity.

                                    Diverse Investments: Some entities, especially investment vehicles, might have a diverse portfolio of investments spanning multiple sectors. Assigning them to a specific sector would be inaccurate or overly simplistic.

                                    8-K Filing Trends

                                    Form 8-K is known as a "Current Report" and is filed with the SEC by publicly traded companies. The primary purpose of Form 8-K is to inform the public and the SEC of significant corporate events. This form is distinct from the periodic reports that companies are obligated to file (e.g. quarterly 10-Qs and annual 10-Ks) and is triggered by specific events.

                                    Here are some of the key events that might trigger an 8-K filing:

                                    1. Entry into or Termination of a Material Agreement: Major contract or the termination of such an agreement.
                                    2. Completion of Acquisition or Disposition of Assets: Significant acquisitions or sales of assets.
                                    3. Changes in Management: Appointments, resignations, or departures of directors or certain officers.
                                    4. Changes in Financial Condition: Bankruptcy, receivership, or any financial difficulties.
                                    5. Other Events: Stock splits, amendments to the company's articles of incorporation or bylaws, or changes to the company's fiscal year.
                                    6. Notices of Delisting or Failure to Satisfy Listing Standards: If a company receives a warning from a stock exchange about potential delisting due to non-compliance with listing standards, it would file an 8-K.
                                    7. Material Modifications to Rights of Security Holders: Changes that might affect the rights of shareholders or other security holders.
                                    8. Results of Shareholder Votes: The outcome of significant shareholder votes during meetings.
                                    view_8k = filing_count_stats['formType'] == '8-K'
                                    view_8ka = filing_count_stats['formType'] == '8-K/A'
                                    stats_8k = filing_count_stats[view_8k | view_8ka]
                                    count_8k = stats_8k[['year', 'formType', 'count']].groupby(['year', 'formType']).sum().reset_index()
                                    count_8k_piv = count_8k.pivot(index='year', columns='formType', values='count')
                                    plot_2_figs(count_8k_piv, "Annual 8-K Volume (1994 - 2022)")
                                    Annual 8-K Volume (1994 - 2022)
                                    count_8k_sector = stats_8k[['year', 'sector', 'count']].groupby(['year', 'sector']).sum().reset_index()
                                    count_8k_sector_piv = count_8k_sector.pivot(index='year', columns='sector', values='count')
                                    plot_2_figs(count_8k_sector_piv, "Annual 8-K Volume per Sector (1994 - 2022)")
                                    Annual 8-K Volume per Sector (1994 - 2022)
                                    plot_box_plot(count_8k_sector_piv.loc[1996:],
                                                  "Annual 8-K Volume per Sector (1996 - 2022)", "", "Annual Filing Volume", figsize=(4,4))
                                    Annual 8-K Volume per Sector - Box Plot (1996 - 2022)

                                    Observations:

                                    • Trend in 8-K Filings:
                                      • The highest volume of 8-K filings was observed in 2005 with over 120,000 filings. Subsequently, there was a decline, with a slight uptick between 2019 and 2021, reaching just under 80,000 filings in 2021.
                                      • This downward trend could suggest companies are becoming more selective in their disclosures or that fewer events are deemed significant enough for disclosure. However, considering the increased interconnectivity in the digital age, it seems counterintuitive that there would be fewer events of note since 2005.
                                    • Sectoral Insights:
                                      • The Healthcare sector has seen a consistent rise in 8-K filings since 2012, reaching an all-time high of 15,000 filings in 2022.
                                      • In 2005, the Tech and Financial Services sectors led in 8-K filings, with Financial Services maintaining its position as the second-largest contributor in 2022, while Tech dropped to fourth place.
                                      • The COVID pandemic appeared to have a minimal effect on 8-K filing volumes, with only slight increases noted in the Financial Services, Tech, and Consumer Cyclical sectors.
                                      • The Industrials sector witnessed a notable increase in filings from 6,000 to over 9,000 between 2019 and 2021.
                                    • Potential Indicator of Volatility: The volume of 8-K filings per sector may serve as an indicator of annual volatility within those sectors. A higher frequency of 8-K filings might suggest greater sector volatility, as significant events that warrant disclosure could influence stock prices. Conversely, sectors with fewer 8-K filings might be associated with lower volatility.
                                    • Sectors with Stable 8-K Filing Volumes: Utilities, Consumer Defensive, Communications Services, Basic Materials, Real Estate, and Energy sectors have exhibited stable annual 8-K filing volumes.

                                    Footer

                                    Products

                                    • EDGAR Filing Search API
                                    • Full-Text Search API
                                    • Real-Time Filing Stream API
                                    • Filing Download & PDF Generator API
                                    • XBRL-to-JSON Converter
                                    • 10-K/10-Q/8-K Item Extractor
                                    • Investment Adviser & Form ADV API
                                    • Insider Trading Data - Form 3, 4, 5
                                    • Restricted Sales Notifications - Form 144
                                    • Institutional Holdings - Form 13F
                                    • Form N-PORT API - Investment Company Holdings
                                    • Form N-PX API - Proxy Voting Records
                                    • Form 13D/13G API
                                    • Form S-1/424B4 - IPOs, Debt & Rights Offerings
                                    • Form C - Crowdfunding Offerings
                                    • Form D - Private Placements & Exempt Offerings
                                    • Regulation A Offering Statements API
                                    • Changes in Auditors & Accountants
                                    • Non-Reliance on Prior Financial Statements
                                    • Executive Compensation Data API
                                    • Directors & Board Members Data
                                    • Company Subsidiaries Database
                                    • Outstanding Shares & Public Float
                                    • SEC Enforcement Actions
                                    • Accounting & Auditing Enforcement Releases (AAERs)
                                    • SRO Filings
                                    • CIK, CUSIP, Ticker Mapping

                                    General

                                    • Pricing
                                    • Features
                                    • Supported Filings
                                    • EDGAR Filing Statistics

                                    Account

                                    • Sign Up - Start Free Trial
                                    • Log In
                                    • Forgot Password

                                    Developers

                                    • API Sandbox
                                    • Documentation
                                    • Resources & Tutorials
                                    • Python API SDK
                                    • Node.js API SDK

                                    Legal

                                    • Terms of Service
                                    • Privacy Policy

                                    Legal

                                    • Terms of Service
                                    • Privacy Policy

                                    SEC API

                                    © 2025 sec-api.io by Data2Value GmbH. All rights reserved.

                                    SEC® and EDGAR® are registered trademarks of the U.S. Securities and Exchange Commission (SEC).

                                    EDGAR is the Electronic Data Gathering, Analysis, and Retrieval system operated by the SEC.

                                    sec-api.io and Data2Value GmbH are independent of, and not affiliated with, sponsored by, or endorsed by the U.S. Securities and Exchange Commission.

                                    sec-api.io is classified under SIC code 7375 (Information Retrieval Services), providing on-demand access to structured data and online information services.