From 31ae11cec0c16fcc60c5847b256c4b750aa8dd16 Mon Sep 17 00:00:00 2001 From: Emil Lerch Date: Wed, 11 Mar 2026 11:45:34 -0700 Subject: [PATCH] exclude mutual funds from any server fetch - they do not have earnings --- src/service.zig | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/service.zig b/src/service.zig index 160da3b..3356e18 100644 --- a/src/service.zig +++ b/src/service.zig @@ -325,6 +325,11 @@ pub const DataService = struct { /// Smart refresh: even if cache is fresh, re-fetches when a past earnings /// date has no actual results yet (i.e. results just came out). pub fn getEarnings(self: *DataService, symbol: []const u8) DataError!FetchResult(EarningsEvent) { + // Mutual funds (5-letter tickers ending in X) don't have quarterly earnings. + if (isMutualFund(symbol)) { + return .{ .data = &.{}, .source = .cached, .timestamp = std.time.timestamp() }; + } + var s = self.store(); const today = fmt.todayDate(); @@ -715,4 +720,10 @@ pub const DataService = struct { std.Thread.sleep(10 * std.time.ns_per_s); } } + + /// Mutual funds use 5-letter tickers ending in X (e.g. FDSCX, VSTCX, FAGIX). + /// These don't have quarterly earnings on Finnhub. + fn isMutualFund(symbol: []const u8) bool { + return symbol.len == 5 and symbol[4] == 'X'; + } };