Repository navigation
feat(offerings): expose the EFFECT notice's effective time - #1500
Merged
Merged
Conversation
…1499) Effect.from_xml() read finalEffectivenessDispDate and dropped finalEffectivenessDispTime. Effect.effective_time now returns it (None when the notice has none, as on Fitness Fanatics' POS AM notice), to_context() shows it, and effective_date documents that SEC accepts and publishes the notice at about 00:15 ET on the next business day (60/60 IPO notices checked: 52 the next day, 8 Friday->Monday), so filing_date is not the date the notice became public. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dgunning
approved these changes
Oct 8, 2026
dgunning
left a comment
Owner
There was a problem hiding this comment.
Thanks, this looks good to merge.
- The new
final_effective_timekeyword has a default, andEffect.from_xml()is the only place in the library that buildsEffectiveData, so existing callers can't break. - When a notice has no time, the property returns
Noneandto_context()leaves the line out, which is the right behaviour for an optional element. - The regression tests pass locally against the real Lyntris and Fitness Fanatics notices.
- The note in the guide and docstring that an EFFECT notice isn't public until about 00:15 ET on the next business day will be useful to anyone doing point-in-time work, and pointing them to
filing.header.acceptance_datetimeis the right steer.
This is additive, so it can go into 5.62.0, the last 5.x release, if it merges by 10-11.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes
Before:
Effect.from_xml()readfinalEffectivenessDispDateand droppedfinalEffectivenessDispTime.filing_date.After:
Effect.effective_timereturns the time as"HH:MM:SS", orNonewhen the notice has none.to_context()shows the time.effective_datedocstring and the Effect guide say that SEC accepts and publishes the notice at about 00:15 ET on the next business day, and point point-in-time users tofiling.header.acceptance_datetime.EffectiveDatatakes the time as a new keyword argument with a default, so existing constructor calls still work.Fixes #1499
Verification
9999999995-26-002694:effective_time == "15:30:00",effective_date == "2026-08-18".9999999995-25-003344:effective_time is None.ACCEPTANCE-DATETIME 20260819001513, and Fitness Fanatics' gives20251124001520(Monday) for a 2025-11-21 filing date.tests/issues/regression/test_issue_1499.py, offline, links the issue. It fails on main and passes with the fix.None, andto_context()leaves the line out, rather than showing an empty time.docs/guides/effect-data-object-guide.mdgains the property row and the publication-time note.changelog.d/1499.added.md.assemble_changelog.py --checkpasses.Also run:
tests/core/test_effect.py: the offline tests pass. The twoget_source_filingtests need the network and were not run.ruff check: clean on both files.check_regression_provenance.pyandcheck_regression_skips.py: OK.6.0
Not a 6.0 change.
Working context (optional)
We use EFFECT notices to date IPOs. Sample used for the publication lag: 60 EFFECT notices for IPO registrations filed Aug 2025 – Aug 2026. For each, the header
ACCEPTANCE-DATETIMEwas compared withfiling_date:I also considered changing
RegistrationS1.effective_dateto take the latest EFFECT, not the first. I left it alone. On Fitness Fanatics' F-1 file (333-289484), the second EFFECT is for a POS AM, so the first EFFECT is the right answer for "when was the F-1 declared effective".🤖 Generated with Claude Code