Skip to content

Corporate actions

Corporate actions are the surgery that distorts naive price-and-volume series. A 4-for-1 stock split overnight quarters every historical close. A special dividend creates an artificial drop. A reverse-split inflates the price by an order of magnitude. Without normalization, technical indicators lie and total returns are wrong.

This page documents how oneapi.finance handles each event type.

Splits

Returned by GET /v1/splits as a list of:

{
"date": "2020-08-31",
"ratio_from": 1.0,
"ratio_to": 4.0
}

Convention: ratio_from : ratio_to. The Apple August 2020 entry above is a forward 4-for-1 split — every 1 share became 4 shares, and every $1 of historical price became $0.25.

Reverse splits use the inverse: ratio_from = 10.0, ratio_to = 1.0 for a 1-for-10 reverse split.

How splits affect the time-series endpoint

GET /v1/time_series returns split-adjusted OHLCV. Volumes are adjusted inversely. Concretely, a value of close = 25.0, volume = 4_000_000 for AAPL on 2020-08-30 (one day before the 4-for-1 split) is what we return today, even though the actual closing price on that day was $100.0.

If you need raw, unadjusted prices (rare; usually for replication of a paper that uses unadjusted data), pass adjust=false on the time-series request. Splits in /v1/splits are returned regardless.

Dividends

Returned by GET /v1/dividends per symbol:

{
"ex_date": "2026-02-09",
"amount": 0.24,
"currency": "USD",
"declaration_date": "2026-02-01",
"payment_date": "2026-02-16",
"record_date": "2026-02-10"
}
  • ex_date is the trade date on which a buyer does not receive the dividend. This is the most-used field; it is the date the price drops.
  • record_date is when the issuer’s books are pulled to identify holders.
  • payment_date is when cash actually moves.
  • declaration_date is when the board announced. Often missing for non-US issuers.
  • amount is in currency and is gross of withholding tax. It is the amount declared by the issuer; what you actually receive depends on your domicile.

Special dividends and one-time distributions are interspersed with regular dividends in the same array. We do not currently flag them; the magnitude relative to recent regulars is the practical signal.

How dividends affect time-series

By default, GET /v1/time_series returns split-adjusted but not dividend-adjusted prices. This matches the convention of most charting libraries and brokerages.

To get total-return adjusted series (i.e. dividends reinvested), pass adjust=total_return. The close field then reflects what a buy-and-hold investor with reinvested dividends would have, normalized to the most recent close.

Spinoffs, mergers, and tender offers

These are recorded internally in the corporate_actions table but are not yet surfaced in a public endpoint. Spinoff-aware total-return calculations require holding period assumptions and we have not designed the surface yet. If you need this, file a feature request with your use case.

Currency redenominations

Rare but real (Israel re-denominated 1985, Turkey 2005). When an issuer’s trading currency changes, our currency field changes for the same (symbol, exchange) pair from the redenomination date forward. Historical prices are not retroactively converted; they remain in the original currency. Your application is responsible for tracking the change.

What’s next