update cache timings for dividends/splits
This commit is contained in:
parent
497b1d3c2d
commit
f87021b57e
2 changed files with 13 additions and 12 deletions
|
|
@ -37,8 +37,8 @@ zfin aggregates data from multiple free-tier APIs. Each provider is used for the
|
||||||
|-----------------------|---------------|------------------------|----------------------------|--------------|
|
|-----------------------|---------------|------------------------|----------------------------|--------------|
|
||||||
| Daily candles (OHLCV) | TwelveData | `TWELVEDATA_API_KEY` | 8 req/min, 800/day | 24 hours |
|
| Daily candles (OHLCV) | TwelveData | `TWELVEDATA_API_KEY` | 8 req/min, 800/day | 24 hours |
|
||||||
| Real-time quotes | TwelveData | `TWELVEDATA_API_KEY` | 8 req/min, 800/day | Never cached |
|
| Real-time quotes | TwelveData | `TWELVEDATA_API_KEY` | 8 req/min, 800/day | Never cached |
|
||||||
| Dividends | Polygon | `POLYGON_API_KEY` | 5 req/min | 7 days |
|
| Dividends | Polygon | `POLYGON_API_KEY` | 5 req/min | 14 days |
|
||||||
| Splits | Polygon | `POLYGON_API_KEY` | 5 req/min | 7 days |
|
| Splits | Polygon | `POLYGON_API_KEY` | 5 req/min | 14 days |
|
||||||
| Options chains | CBOE | None required | ~30 req/min (self-imposed) | 1 hour |
|
| Options chains | CBOE | None required | ~30 req/min (self-imposed) | 1 hour |
|
||||||
| Earnings | Finnhub | `FINNHUB_API_KEY` | 60 req/min | 30 days* |
|
| Earnings | Finnhub | `FINNHUB_API_KEY` | 60 req/min | 30 days* |
|
||||||
| ETF profiles | Alpha Vantage | `ALPHAVANTAGE_API_KEY` | 25 req/day | 30 days |
|
| ETF profiles | Alpha Vantage | `ALPHAVANTAGE_API_KEY` | 25 req/day | 30 days |
|
||||||
|
|
@ -124,8 +124,8 @@ Cache files use [SRF](https://github.com/lobo/srf) (Simple Record Format), a lin
|
||||||
| Data type | TTL | Rationale |
|
| Data type | TTL | Rationale |
|
||||||
|---------------|--------------|--------------------------------------------------|
|
|---------------|--------------|--------------------------------------------------|
|
||||||
| Daily candles | 24 hours | Only changes once per trading day |
|
| Daily candles | 24 hours | Only changes once per trading day |
|
||||||
| Dividends | 7 days | Declared well in advance |
|
| Dividends | 14 days | Declared well in advance |
|
||||||
| Splits | 7 days | Rare corporate events |
|
| Splits | 14 days | Rare corporate events |
|
||||||
| Options | 1 hour | Prices change continuously during market hours |
|
| Options | 1 hour | Prices change continuously during market hours |
|
||||||
| Earnings | 30 days* | Quarterly events; smart refresh after announcements |
|
| Earnings | 30 days* | Quarterly events; smart refresh after announcements |
|
||||||
| ETF profiles | 30 days | Holdings/weights change slowly |
|
| ETF profiles | 30 days | Holdings/weights change slowly |
|
||||||
|
|
|
||||||
17
src/cache/store.zig
vendored
17
src/cache/store.zig
vendored
|
|
@ -18,20 +18,21 @@ const ContractType = @import("../models/option.zig").ContractType;
|
||||||
|
|
||||||
/// TTL durations in seconds for cache expiry.
|
/// TTL durations in seconds for cache expiry.
|
||||||
pub const Ttl = struct {
|
pub const Ttl = struct {
|
||||||
|
const s_per_day = std.time.s_per_day;
|
||||||
/// Historical candles older than 1 day never expire
|
/// Historical candles older than 1 day never expire
|
||||||
pub const candles_historical: i64 = -1; // infinite
|
pub const candles_historical: i64 = -1; // infinite
|
||||||
/// Latest day's candle refreshes every 24h
|
/// Latest day's candle refreshes every 24h
|
||||||
pub const candles_latest: i64 = 24 * 3600;
|
pub const candles_latest: i64 = s_per_day;
|
||||||
/// Dividend data refreshes weekly
|
/// Dividend data refreshes biweekly
|
||||||
pub const dividends: i64 = 7 * 24 * 3600;
|
pub const dividends: i64 = 14 * s_per_day;
|
||||||
/// Split data refreshes weekly
|
/// Split data refreshes biweekly
|
||||||
pub const splits: i64 = 7 * 24 * 3600;
|
pub const splits: i64 = 14 * s_per_day;
|
||||||
/// Options chains refresh hourly
|
/// Options chains refresh hourly
|
||||||
pub const options: i64 = 3600;
|
pub const options: i64 = std.time.s_per_hour;
|
||||||
/// Earnings refresh monthly, with smart refresh after announcements
|
/// Earnings refresh monthly, with smart refresh after announcements
|
||||||
pub const earnings: i64 = 30 * 24 * 3600;
|
pub const earnings: i64 = 30 * s_per_day;
|
||||||
/// ETF profiles refresh monthly
|
/// ETF profiles refresh monthly
|
||||||
pub const etf_profile: i64 = 30 * 24 * 3600;
|
pub const etf_profile: i64 = 30 * s_per_day;
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const DataType = enum {
|
pub const DataType = enum {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue