SEC Filings Notifications

Monitor

Monitors the SEC's RSS feed and EFTS. RSS is faster, but misses some submissions. EFTS is slower, but complete.

Monitor records hits and detected time to two dynamodb tables. Submissions records when a filing was first detected by a source such as RSS. It's state is saved to S3 nightly, in monitor-dumps/. This is can be downloaded if you have the Metadata Subscription.

Seen is used for deduplication. Whenever a filing has not been seen before, it is transmitted to SNS.

To optimize cost, I rewrote datamule-python in rust: secinfra. This allows both monitors to fit on ~ 32 MB. Other cost optimizations come from warm caching.

Datamule's Cost

With Lambda's generous free tier, I believe this comes out to $0/year.

Anticipation

There are faster ways to get SEC Filings. Some trading firms have this in house. Anticipate emits filings with source anticipate instead of rss or efts.

Datamule's Cost

Email

If you have subscribed to SEC Filings Email Notifications, you can choose to set notifications for what filings you would like to recieve in Datamule's dashboard. You can choose to recieve an email for every filing that comes out. If you choose this option, you will recieve ~5,000 emails per day.

alt text

Datamule's Cost

Webhooks

If you have subscribed to SEC Filings Webhooks, you can set up to 25 endpoints to recieve notifications of new filings.

Usage

from datamulehub import sec_filings_notifications

# add an endpoint, filter by submission types, cik codes, or source of filing detection
print(sec_filings_notifications.add_endpoint(endpoint="https://example.com/sec-filings", submission_types=None, ciks=None, sources=["Rss","Efts"]))

# list endpoints
endpoints = sec_filings_notifications.list_endpoints()
print(endpoints)

# remove an endpoint by endpoint url or id
for endpoint in endpoints["data"]:
    print(sec_filings_notifications.remove_endpoint(id=endpoint["id"]))

Important

User's endpoint must confirm SNS subscription.

Datamule's Cost

Websocket

If you have subscribed to SEC Filings Websocket, you can set up to 5 persistent websocket connections. For SEC Filings Websocket Plus, you can set up to 100 persistent connections.

Usage

from datamulehub import sec_filings_notifications

for filing in sec_filings_notifications.stream_filings():
    if filing["submission_type"] == "10-K":
        print("10-K:", filing)

Datamule's Cost

SEC Filings Feed

This is free. Have fun. SEC Filings Feed

Datamule's Cost