Event Study Analysis
Overview
Financial event study analysis. Implements the classical event study methodology of MacKinlay (1997) https://www.jstor.org/stable/2729691 with multiple return models: market model, market adjusted, comparison period mean adjusted, Fama and French three-factor (1993) doi:10.1016/0304-405X(93)90023-5 and five-factor (2015) doi:10.1016/j.jfineco.2014.10.010, Carhart (1997) four-factor doi:10.1111/j.1540-6261.1997.tb03808.x, generalized autoregressive conditional heteroskedasticity (GARCH; Bollerslev, 1986) doi:10.1016/0304-4076(86)90063-1, rolling window, and dynamic conditional correlation GARCH (DCC-GARCH; Engle, 2002) doi:10.1198/073500102288618487. Provides parametric and non-parametric test statistics, including the standardized cross-sectional test of Boehmer, Musumeci and Poulsen (1991) doi:10.1016/0304-405X(91)90032-F and its cross-correlation adjustment by Kolari and Pynnonen (2010) doi:10.1093/rfs/hhq072; buy-and-hold abnormal returns (Barber and Lyon, 1997) doi:10.1016/S0304-405X(96)00890-2; volume and volatility event studies; cross-sectional regression; intraday event studies; panel difference-in-differences event studies with the estimators of Callaway and Sant'Anna (2021) doi:10.1016/j.jeconom.2020.12.001, de Chaisemartin and D'Haultfoeuille (2020) doi:10.1257/aer.20181169, and Borusyak, Jaravel and Spiess (2024) doi:10.1093/restud/rdae007; synthetic control methods (Abadie, Diamond and Hainmueller, 2010) doi:10.1198/jasa.2009.ap08746; wild bootstrap inference; multiple testing corrections; power analysis via simulation; data download helpers; automated reporting; and visualization tools. Results can be exported to comma-separated values (CSV), 'Excel', or 'LaTeX'.
CRAN resubmission
- DESCRIPTION text revised per CRAN review: single quotes only around software names, all acronyms spelled out, and method references given as author (year) with DOI/URL links.
Statistical correctness fixes (2026-09-24 re-evaluation)
The 2026-09-24 package re-evaluation found twelve silent-wrong-statistic
defects across return models, multi-event test statistics, bootstrap
inference, and cross-sectional regression. Every fix ships with a
failing-first regression test in tests/testthat/test_reeval_statistical_fixes.R
and, where the fix redefines a valid-input result, a re-pinned golden value in
tests/testthat/test_golden_values.R. See vignettes/statistical-conventions.Rmd
for the full audit log and citations.
Show all changes in 0.66.0Hide the rest of the changes in 0.66.0
- **A1 -- RollingWindowModel now restricts each rolling window to COMPLETE PAIRS** (both firm and index finite) before computing
x_bar/ss_xx/ residuals/sigma. Previously, rows where the firm return was NA but the index was not still contributed tox_bar/ss_xx, biasing beta whenever NA-firm rows co-occur with index outliers.fit()andcalculate_statistics()now share the same complete-pair count for df/FEC. - **A2 -- A fully-degenerate event (zero finite event-window abnormal returns) is now EXCLUDED from every CAR-based multi-event statistic** (
CSectTTest,PatellZTest,SignTest,GeneralizedSignTest,BMPTest,KolariPynnonenTest), applied once per group (at most one warning per group, not one per configured statistic). Previously it was coalesced to 0 and silently understated cross-event dispersion. The pre-existing STATS-03 convention (a partial gap contributes 0 to that event's own CAR) is unchanged. - **A3 -- KolariPynnonenTest never falls back to an adjustment factor of 1.** A degenerate (constant or too-short) estimation-window SAR series is now excluded from the
r_barcross-sectional correlation estimate (reported once); if fewer than 2 usable events remain,kp_t/ckp_tareNAinstead of silently reporting the unadjusted BMP value. The per-day KP adjustment now uses THAT DAY'sn_valid_eventsinstead of the first day's count applied uniformly to every day. - **A4 -- RankTest and GeneralizedSignTest now group by
event_id, notfirm_symbol,** for ranking/centering andp_hatestimation. Previously a firm recurring across multiple events had its data silently pooled across those events. - **A5 --
cross_sectional_regression()sample-integrity hardening.** Duplicatedevent_ids in thedataargument now error; acar_windowextending outside any event's available event window now errors; task events with no matchingdatarow are dropped with one warning; an event whose CAR isNAbecause an abnormal return insidecar_windowis missing is excluded with one warning (.extract_cars()no longer sums withna.rm = TRUE, so ANY missing AR in the window makes the whole CARNA;car_by_group()/car_quantiles()/plot_car_distribution()inherit this NA-CAR semantics without an additional warning). - **A6 -- OLS insufficient-observations guard is now
n_params-based, not a flat threshold,** forMarketModeland everyLinearFactorModelsubclass (FF3, FF5, Carhart4); a model that fits with fewer than 30 valid estimation observations (the same recommended minimum asvalidate_task()'s default) now emits one advisory warning in both modes.PatellZTest'skis now read explicitly from each model'sstatistics$n_params(MarketModel 2, FF3 4, Carhart4 5, FF5 6, CPMA 1, MarketAdjusted 0) instead of being derived aslength(resid) - df(which was silently wrong wheneverdfreflected an unrelated correction);mnow counts finite estimation-window abnormal returns instead of the raw row count.MarketModel's forecast-error correction now uses complete pairs only formean(Rm_est)/SS_market, matching exactly the rowslm()used. - **A7 --
CalendarTimePortfolioTestdenominator redefined to the Brown-Warner (1980, 1985) estimation-window AAR standard deviation.** Previouslyts_sdwas computed from the event-window portfolio series itself (self-referential with the numerator, so a larger event-day shock inflated both).caltime_t/ccaltime_tnow use degrees of freedomn_estimation_days - 1, exposed asattr(result, "caltime_df")and read by bothadjust_p_values()andtidy(). **This is a valid-input redefinition:**caltime_t/ccaltime_tvalues differ from the initial 0.66.0 submission; golden values are re-pinned. - **A8 --
MarketAdjustedModel's forecast-error correction is nowforecast_error_corrected_sigma == sigmaexactly** (correction factor 1), because the model estimates nothing from the estimation window. Previously it wrongly reused the constant-MEAN correction formula (sigma * sqrt(1 + 1/m)), which is only valid for a model that DOES estimate one parameter (a mean), likeComparisonPeriodMeanAdjustedModel(unchanged). **This is a valid-input redefinition;** golden values are re-pinned. - **A9 -- Sign convention unified to strict
n_pos = sum(AR > 0)/n_neg = sum(AR <= 0)** inCSectTTest,PatellZTest, andCalendarTimePortfolioTest(previously>= 0/< 0), matching the pre-existingSignTestconvention. An abnormal return of exactly 0 now counts as non-positive everywhere. - **A10 --
TestStatisticBase$confidence_typeis now validated** withmatch.arg(c("two-sided", "less", "greater"))(an invalid value errors) and emits one warning at construction when a non-default value is supplied, stating that every p-value in EventStudy is currently two-sided and the value has no effect. No p-value formula changed; one-sided p-values are not implemented. - **A11 --
BMPTestroxygen documentation corrected (docs-only, no formula change).** The docstring incorrectly claimed standardization by the forecast-error-corrected sigma; bothBMPTestandKolariPynnonenTeststandardize by the MODEL sigma (model$statistics$sigma), which is what the code always computed. - **A12 --
bootstrap_test()observed/draw construction aligned; NA draws excluded from the p-value denominator.**observed_caarnow uses the SAME per-eventcoalesce-to-0 CAR construction as the bootstrap draws (matchescumsum(observed_aar)exactly on NA-free input, but differs from it under a partial-window gap, where the per-event construction is correct). A bootstrap draw whose statistic isNA(e.g. a sign-flip combination that zeroes the cross-sectional SD) is now excluded from BOTH the exceedance count and the denominator, instead of being counted as "did not exceed" while still inflatingn_boot + 1. The bootstrap weight clustering unit (firm_symbol) is confirmed correct and unchanged.
API and documentation consistency (2026-09-24 re-evaluation)
- **B1 --
ModelBase,TestStatisticBase, andReturnCalculationare now exported** with roxygen documenting the subclass contract expected byrun_event_study()(fit()/abnormal_returns(),compute(),calculate_return(), and thestatisticsfields consumed downstream, including the optionaln_paramsfield added by A6). Previously these base classes existed but were unexported, so vignettes and skills advertising "subclassModelBase" referenced a symbol users could not actually reach withEventStudy::ModelBase. - **B5 --
generics::tidy(task)now dispatches totidy.EventStudyTask().**genericsadded to Suggests;tidy.EventStudyTask()remains directly callable and exported as before. - **B2 -- Vignette code examples fixed to the real function signatures.**
modern-did-estimators.Rmdandautomated-reports.Rmdpreviously calledPanelEventStudyTask$new()with non-existent arguments (data/unit_col/time_col/treatment_col/outcome_col); fixed to the real(panel_data, unit_id, time_id, outcome, treatment, treatment_time).cross_sectional_regression(characteristics = ...)fixed todata = ....automated-reports.Rmd's "Available sections" table and everysections = c(...)example previously listed section keys (summary,data,single_event,multi_event,cross_sectional,panel) that do not exist in the report template; corrected to the real keys (exec_summary,data_methods,results,diagnostics,robustness,references,appendix). - **B4 -- pkgdown reference reorganized.**
statistical-conventionsadded as an article;dieselgate/earnings_surprisesnow listed explicitly in "Data & Datasets";degenerate-input-contract,eventstudy-shape-contracts, andeventstudy-deprecationgrouped under a new "Contracts & Lifecycle" reference section;report_tableadded to "Export & Reporting" and its\keyword{internal}tag removed (it is exported and advertised). - **B6 -- Unused
DTandpatchworkremoved from Suggests.**download_stock_data()'s quantmod fallback branch now guardszoo::index()with its ownrequireNamespace("zoo")check before any download. - **B7 --
.claude/skills/es-capabilities/SKILL.mdsignatures corrected** forrun_event_study()andvalidate_task()to matchformals(); a scripted scan of every vignette/README/skill code chunk confirms zero remaining argument-name drift against the installed package. - **B3 --
.claude/skills/es-advisor/reference/interpreting-diagnostics.mdrewritten to the reales_diagnostics()structure** (meta,estimation_window,event_window,cross_sectional,contract_state,aggregate_summary), verified field-by-field against a live run, with the 8 offline knowledge-base rule thresholds restated in terms of the real field paths they key off. The previous version documented a fabricated structure (n_events,per_event,mean_r_squared, etc.) that did not exist on the returned object.
Testing (2026-09-24 re-evaluation)
Test-suite quality hardening so vacuous or always-skip tests no longer mask
regressions, and so the full NOT_CRAN=true suite runs with WARN 0
(every warning a test triggers is now explicitly expected by class/regexp,
or muffled at its source when the fixture is intentionally short).
- **C1 --
adjust_p_values()** gains explicit-formula tests for its KolariPynnonenTest, GeneralizedSignTest, RankTest and CalendarTimePortfolioTest branches, comparing against2*pt(-abs(t), df)/2*pnorm(-abs(z))directly. - **C2 -- Vacuous regression tests made real:** the bootstrap firm-clustering test now hand-replicates the wild-bootstrap algorithm (one weight per unique
firm_symbol) and shows it differs from an event-level clustering alternative on the same seed; the two PatellQ_itests now assert the exactaar_zfrom an independent hand computation (k=2andk=4); theLinearFactorModelFEC test now asserts the exact hat-matrix valuesigma*sqrt(1+h_t); the HAC-SE test now asserts equality withsandwich::NeweyWest()on the samelm()fit. - **C3 -- Panel TWFE tests tightened to golden checks** against a direct
lm()two-way-fixed-effects fit on the same deterministic seeded fixture (static_twfeestimate + cluster-robust SE;dynamic_twfeevery non-base event-time coefficient), replacing the previous loose numeric bounds. - **C4 --
.rank_events_for_cap()real test:** an event genuinely unfitted via a degenerate estimation window (with its one contract warning asserted explicitly) is shown to always rank first (anomaly scoreInf) and always survive amax_eventscap, replacing the previous unconditionalskip(). - **C5 -- DCC-GARCH / MarketModel FEC tests de-guarded:** the DCC-GARCH test no longer swallows errors in a
tryCatch()-to-TRUEhandler; it now assertsis_fittedunconditionally and skips ONLY on a narrowly-matched non-convergence warning. TheMarketModelFEC "effective obs count" test no longer hides its assertions behindif (is_fitted). - **C6 --
.try_download()narrowed** to convert only network/HTTP-style failures intoskip()(by condition class when available, otherwise a narrow message pattern); any other error (a parse/logic bug) now fails the test. Covered by two new direct tests of the helper itself. - **C7 -- Every
test_that()block that draws random numbers without its own seed now has one**, acrosstest_edge_cases.R,test_models.R,test_multi_event_statistics.R,test_cross_sectional.R,test_synthetic_control.Randtest_intraday.R;test_intraday.R'sSys.time()-based fixtures were replaced with fixed UTCPOSIXctliterals. - **C8 -- High-value numeric assertions added** to
test_execute.R(each exercised model'sAR/alpha/betachecked against a directlm()or arithmetic computation) andtest_export.R(exported CSVAR/CAR/AARvalues checked to equal the task's own values, round-tripped through the file). - **C9 -- Test-file organization:** the full-pipeline
CalendarTimePortfolioTestcase moved fromtest_bhar_test_statistics.Rtotest_multi_event_statistics.R(it is not a BHAR test); thebrowser()-source-grep check intest_aar_test_statistics.Rreplaced with a behaviouralPatellZTest$compute()test against a hand computation; the single weak test intest_caar_test_statistics.Rfolded into a real numericCSectTTestcheck. - **C10 -- No leaked warnings.** Every warning a test triggers is now either asserted explicitly (
expect_warning(..., regexp =/ nested for multiple independent warnings) or muffled by class via the newmuffle_short_window()helper (tests/testthat/helper-warnings.R) for fixtures whose short estimation window is intentional (golden/invariant/ numerical-stability fixtures, never a blanketsuppressWarnings()). A newtest_execute.Rtest locks thatfit_model()collapses N short-window events into exactly ONEeventstudy_short_estimation_windowwarning listing the event ids.
API Stabilization & Deprecation Lifecycle (Phase 28)
This release completes a signature-consistency audit of the full public API and
wires a formal deprecation lifecycle (base .Deprecated() + optional
lifecycle shim). All deprecated argument names continue to work and emit
exactly one deprecation warning pointing to the replacement.
Renamed Arguments (deprecated old names still work)
plot_stocks():do_sampleis deprecated in favour ofsample_symbols(#APIS-01). The new name is noun-first, consistent with the sibling parametermax_symbols. Pass the old name and you receive one deprecation warning; the result is identical. (#APIS-04)
Deprecation Infrastructure
- New internal helper
.deprecate_arg()inR/deprecation.R. Always calls base.Deprecated()unconditionally; additionally callslifecycle::deprecate_warn()whenlifecycleis installed (Suggests-only, never a hard dependency). (#APIS-04)
Return-Shape Contracts (opt-in, default-off)
- New
R/shape_contracts.Rprovides an opt-in return-shape contract for the pipeline's result tibbles. Enable withoptions(EventStudy.shape_contracts = TRUE). When enabled, the pipeline checks that the column names and types of the single-event statistics tibbles (ART,CART) and the multi-event AAR/CAAR tibble (CSectT) match the canonical expected shapes. On any mismatch exactly onewarning()is emitted naming the context and the specific drift; the contract never callsstop(). Correctly-shapedis_fitted = FALSEdegenerate outputs (same column names,NA-propagated values) are treated as valid shapes and produce no warning. The option defaults toFALSEso valid-input behaviour and the existing test suite are completely unaffected. (#APIS-02)
Install-Tested Multi-OS CI (Phase 29)
- The GitHub Actions workflow now runs
rcmdcheckagainst the *installed* package (notload_all) across multiple operating systems, catching install-vs-load_alldivergence in NAMESPACE/imports before it reaches CRAN. - A dedicated CI leg runs with
_R_CHECK_FORCE_SUGGESTS_forced on, exercising every optional-Suggests code path so therequireNamespace()guards are verified end-to-end. report_table()is now an exported function; the public API snaps
The NEWS section is longer than shown here.
From NEWS.md in the release
Install
Health
ERRORtestsr-devel-linux-x86_64-debian-clang, r-devel-linux-x86_64-debian-gcc, r-release-linux-x86_64
r-devel-linux-x86_64-debian-clang
Running ‘testthat.R’ [206s/272s]
Running the tests in ‘tests/testthat.R’ failed.
Complete output:
> library(testthat)
> library(EventStudy)
>
> test_check("EventStudy")
Attaching package: 'dplyr'
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing
...[truncated]...
eBytes = TRUE)
12. └─base::file(con, "w")
── Error ('test_report_narrative.R:146:3'): invalid narrative (not a list) -> exactly one warning, degrades to NULL ──
Error in `file(con, "w")`: cannot open the connection
Backtrace:
▆
1. ├─testthat::expect_warning(...) at test_report_narrative.R:146:3
2. │ └─testthat:::expect_condition_matching_(...)
3. │ └─testthat:::quasi_capture(...)
4. │ ├─testthat (local) .capture(...)
5. │ │ └─base::withCallingHandlers(...)
6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo))
7. └─EventStudy::generate_report(...)
8. └─rmarkdown::render(...)
9. └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
10. └─xfun::write_utf8(res, output)
11. └─base::writeLines(enc2utf8(text), con, ..., useBytes = TRUE)
12. └─base::file(con, "w")
[ FAIL 3 | WARN 15 | SKIP 73 | PASS 2694 ]
Error:
! Test failures.
Execution haltedr-devel-linux-x86_64-debian-gcc
Running ‘testthat.R’ [134s/153s]
Running the tests in ‘tests/testthat.R’ failed.
Complete output:
> library(testthat)
> library(EventStudy)
>
> test_check("EventStudy")
Attaching package: 'dplyr'
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing
...[truncated]...
eBytes = TRUE)
12. └─base::file(con, "w")
── Error ('test_report_narrative.R:146:3'): invalid narrative (not a list) -> exactly one warning, degrades to NULL ──
Error in `file(con, "w")`: cannot open the connection
Backtrace:
▆
1. ├─testthat::expect_warning(...) at test_report_narrative.R:146:3
2. │ └─testthat:::expect_condition_matching_(...)
3. │ └─testthat:::quasi_capture(...)
4. │ ├─testthat (local) .capture(...)
5. │ │ └─base::withCallingHandlers(...)
6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo))
7. └─EventStudy::generate_report(...)
8. └─rmarkdown::render(...)
9. └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
10. └─xfun::write_utf8(res, output)
11. └─base::writeLines(enc2utf8(text), con, ..., useBytes = TRUE)
12. └─base::file(con, "w")
[ FAIL 3 | WARN 15 | SKIP 73 | PASS 2694 ]
Error:
! Test failures.
Execution haltedr-release-linux-x86_64
Running ‘testthat.R’ [202s/265s]
Running the tests in ‘tests/testthat.R’ failed.
Complete output:
> library(testthat)
> library(EventStudy)
>
> test_check("EventStudy")
Attaching package: 'dplyr'
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing grouping variables: `group`
Adding missing
...[truncated]...
eBytes = TRUE)
12. └─base::file(con, "w")
── Error ('test_report_narrative.R:146:3'): invalid narrative (not a list) -> exactly one warning, degrades to NULL ──
Error in `file(con, "w")`: cannot open the connection
Backtrace:
▆
1. ├─testthat::expect_warning(...) at test_report_narrative.R:146:3
2. │ └─testthat:::expect_condition_matching_(...)
3. │ └─testthat:::quasi_capture(...)
4. │ ├─testthat (local) .capture(...)
5. │ │ └─base::withCallingHandlers(...)
6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo))
7. └─EventStudy::generate_report(...)
8. └─rmarkdown::render(...)
9. └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
10. └─xfun::write_utf8(res, output)
11. └─base::writeLines(enc2utf8(text), con, ..., useBytes = TRUE)
12. └─base::file(con, "w")
[ FAIL 3 | WARN 15 | SKIP 73 | PASS 2694 ]
Error:
! Test failures.
Execution halted- ERROR8 OK, 3 ERRORNow
- ERROR6 OK, 1 ERROR2026-10-23
- OK5 OK2026-10-21
Documentation
The repository also keeps web-only articles.
- Help pages
- 100 (3 internal)includes a package overview page
- Examples that run
- 21%3 run in a plain check · 9 only when donttest examples are enabled (R CMD check --as-cran) · 2 never run
- Exported functions with examples
- 15%
- Documented parameters
- 97%
- Return-value docs
- 48%
- Help pages citing references
- 4%
- Automated Reports HTML
- Creating Custom Models HTML
- Creating Custom Test Statistics HTML
- Cross-Sectional Analysis HTML
- Diagnostics and Validation HTML
- Downloading Stock and Factor Data HTML
- Factor Models, GARCH, and BHAR HTML
- Gallery HTML
- Inference and Robustness HTML
- Intraday Event Studies HTML
Show 10 moreHide 10 vignettes
- Introduction to EventStudy HTML
- Modern DiD Estimators HTML
- Panel Event Studies HTML
- Result Extraction and Export HTML
- Simulation and Power Analysis HTML
- Statistical Conventions and Formula Audit HTML
- Synthetic Control Methods HTML
- The Grounded AI Advisor: A Dieselgate Multi-Automaker Walkthrough HTML
- Time-Varying Beta Models HTML
- Volume and Volatility Event Studies HTML
Downloads
Repository
- PRs merged (all time)
- 100%
- Median days to close, 50 most recently updated closed issues
- 0
- Median days to close, 50 most recently updated closed PRs
- 0
9 development-tooling and community-health practices detected across 6 families in the upstream repository
Checks run against github.com/sipemu/eventstudy on 2026-10-22.
The R CMD check workflow runs on Linux, macOS and Windows, and on R-devel
GitHub Pages site last deployed 2026-10-09 · The repository has a site deploy workflow
pkgdown site last built 2026-10-09, before release 0.66.0 (2026-10-21)
Show all practicesHide 2 practices
This repository shows signs of AI coding tools.
- Claude Codefirst seen 2026-02-20Seen in the repository: .claude, .claude-plugin, .claude/skillsNamed in .Rbuildignore: .claude-pluginPull request it wrote: opened by a project memberCommits: at least 229 crediting it in the message
- Claude Opus 4.845 commits · Jun to Sep 2026
- Claude Opus 4.640 commits · Feb to Mar 2026
- Claude Sonnet 4.615 commits · Sep 2026
Some of these counts are a minimum, because the search stopped before the oldest commits.
Dependencies
Installing EventStudy adds 66 packages (35 with compiled code, 63 MB of source tarballs). Heaviest: stringi 11 MB, ggplot2 6.0 MB, data.table 5.7 MB.
Code & Tests
Datasets
People & History
Maintainer since 0.30 (2017)
Pick two releases to compare their code metrics.
- unarchivedReturned to CRAN2026-10-21
- 0.66.0Latestfirst seen 2026-10-21 · current release · diff ↗ ·
removed 15 exports
%>%, AARResults, ARCApplicationInput, ARResults, AVCApplicationInput, AVyCApplicationInput, CAAResults, CAResults, EventStudyAPI, EventStudyAddin, ResultParser, checkFile, checkFiles, estAPIKey, getSP500ExampleFiles·added 81 exports
ARTTest, AnthropicProvider, BHARModel, BHARTTest, BMPTest, CARTTest, CSectTTest, CalendarTimePortfolioTest, Carhart4FactorModel, ComparisonPeriodMeanAdjustedModel, CustomProvider, DCCGARCHModel, EventStudyTask, FamaFrench3FactorModel, FamaFrench5FactorModel, GARCHModel, GeneralizedSignTest, IntradayEventStudyTask, KolariPynnonenTest, LinearFactorModel, LogReturn, MarketAdjustedModel, MarketModel, ModelBase, MultiEventStatisticsSet, OpenAICompatProvider, PanelEventStudyTask, ParameterSet, PatellZTest, ProviderBase and 51 more12 days in CRAN's queue
Listed in CRAN's incoming queue from 2026-10-09 14:50 to 2026-10-21 05:36 UTC, in 63 readings. - RR 4.6.0 released · 2026-04-24
- RR 4.5.0 released · 2025-04-11
- RR 4.4.0 released · 2024-04-24
- archivedRemoved from CRAN2024-04-20issues were not corrected despite reminders
- RR 4.3.0 released · 2023-04-21
- unarchivedReturned to CRAN2023-03-28
- 0.39.22023-03-28 · diff ↗
- archivedRemoved from CRAN2023-03-27requires archived package 'tidyquant'
- 0.39.12023-03-23 · diff ↗
- 0.392022-09-20 · diff ↗ ·
removed 2 exports
aarPlot, arPlotadded 4 exports
AARResults, ARResults, CAAResults, CAResults - RR 4.2.0 released · 2022-04-22
- 0.372021-12-20 · diff ↗
- RR 4.1.0 released · 2021-05-18
- RR 4.0.0 released · 2020-04-24
Show 10 earlier eventsHide 10 earlier events
Package metadata
- First published
- 2017-05-20
- Total releases
- 12 / 9 yrs
- License
- AGPL-3 OSI · relicensed from MIT + file LICENSE in 0.66.0
- Minimum R
- ≥ 4.1.0
- Bundled data
- 15 KB / 2 files
- Download size
- 2.0 MB
Cite
Cite this package
Run in R for the authors' entry:
citation("EventStudy")The package provides a citation file, so citation() returns the authors' own entry.
Cite the R Observatory
For a number measured here: a download total, a coverage figure, an archival date.
From data release v2026-10-25, which the citation names so these numbers can be found later. More on citing and the projects behind them.