Dividend oracle

The only feed that knows a split from a payout.

Free for any protocol. One accountant per stock token, readable by any contract, no key. Wire isSynced() into your pause and you have a circuit breaker for every corporate action.

TokenIssuerStatusDividend indexSplit factorNext scheduledLast classified
SGOVRobinhoodSynced1.0232221.000000Oct 1 · monthly6 events
JEPIBackedSynced1.0262551.000000Oct 3 · monthly4 events
ODinariHeld · timelock1.0231281.000000Oct 15 · monthly5 events
SCHDRobinhoodSynced1.0060091.000000Dec 18 · quarterly2 events
SPYRobinhoodSynced1.0010001.000000Dec 18 · quarterly1 events
AAPLRobinhoodSynced1.0008341.000000Dec 18 · quarterly2 events
NVDABackedSynced1.0000331.000000Dec 24 · quarterly2 events
MSFTRobinhoodSynced1.0011671.000000Dec 11 · quarterly2 events
AMZNDinariSynced1.0000001.000000— · no dividend0 events
GOOGLRobinhoodSynced1.0005831.000000Dec 15 · quarterly2 events
METADinariSynced1.0004671.000000Dec 26 · quarterly2 events
TSLABackedSynced1.0000001.000000— · no dividend0 events

Read it from any contract

isSynced() → bool
dividendIndex() → 1e18 = 1.0
splitFactor() → 1e18 = 1.0
dividendIndexAt(ts) → uint
pending() → (exists, ts, old, new)

Rules, not opinions

Growth between 0 and 3% is a dividend. A clean small-integer ratio at least 20% from 1 is a split. The bands never overlap, and the contract rejects any tag outside them. A keeper can be late, never wrong.

Everything else waits

Special dividends, odd ratios, stacked actions: held for a guardian behind a two-day public timelock. The clock is on-chain, and merge stays open throughout.