mcp-financex 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12,6 +12,9 @@ export declare const CacheTTL: {
12
12
  readonly SEARCH: number;
13
13
  readonly INDICATOR: number;
14
14
  readonly MARKET_SUMMARY: 60;
15
+ readonly INSIDER_TRADES: 3600;
16
+ readonly CIK_MAPPING: 604800;
17
+ readonly COMPANY_TICKERS: 86400;
15
18
  readonly DEFAULT: number;
16
19
  };
17
20
  /**
@@ -25,6 +28,9 @@ export declare const CachePrefix: {
25
28
  readonly INDICATOR: "indicator";
26
29
  readonly MARKET: "market";
27
30
  readonly WATCHLIST: "watchlist";
31
+ readonly INSIDER_TRADES: "insider_trades";
32
+ readonly CIK_MAP: "cik_map";
33
+ readonly COMPANY_TICKERS: "sec_company_tickers";
28
34
  };
29
35
  export declare class CacheService {
30
36
  private cache;
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/services/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;CAQX,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;CAQd,CAAC;AAEX,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAe;IAEtC,OAAO;IAuBP;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,YAAY;IAOlC;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAUjD;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAShE;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrC;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhD;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIxC;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,QAAQ;IAIR;;OAEG;IACG,QAAQ,CAAC,CAAC,EACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,CAAC,CAAC;IAWb;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI/C;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAClC,QAAQ,EAAE,MAAM,GACf,MAAM;IAUT;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAM/C;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI/C;;OAEG;IACH,MAAM,CAAC,oBAAoB,CACzB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,MAAM;IAIT;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM;IAI9D;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM;IAI7D;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAsB/C;AAGD,eAAO,MAAM,YAAY,cAA6B,CAAC"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/services/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;CAWX,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;CAWd,CAAC;AAEX,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAe;IAEtC,OAAO;IAuBP;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,YAAY;IAOlC;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAUjD;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAShE;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrC;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhD;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIxC;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,QAAQ;IAIR;;OAEG;IACG,QAAQ,CAAC,CAAC,EACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,CAAC,CAAC;IAWb;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI/C;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAClC,QAAQ,EAAE,MAAM,GACf,MAAM;IAUT;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAM/C;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI/C;;OAEG;IACH,MAAM,CAAC,oBAAoB,CACzB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,MAAM;IAIT;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM;IAI9D;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM;IAI7D;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAsB/C;AAGD,eAAO,MAAM,YAAY,cAA6B,CAAC"}
@@ -12,6 +12,9 @@ export const CacheTTL = {
12
12
  SEARCH: parseInt(process.env.CACHE_SEARCH_TTL || '3600', 10),
13
13
  INDICATOR: parseInt(process.env.CACHE_INDICATOR_TTL || '300', 10),
14
14
  MARKET_SUMMARY: 60, // 1 minute
15
+ INSIDER_TRADES: 3600, // 1 hour (insider data changes infrequently)
16
+ CIK_MAPPING: 604800, // 7 days (CIKs don't change)
17
+ COMPANY_TICKERS: 86400, // 24 hours (updated daily)
15
18
  DEFAULT: parseInt(process.env.CACHE_DEFAULT_TTL || '300', 10)
16
19
  };
17
20
  /**
@@ -24,7 +27,10 @@ export const CachePrefix = {
24
27
  SEARCH: 'search',
25
28
  INDICATOR: 'indicator',
26
29
  MARKET: 'market',
27
- WATCHLIST: 'watchlist'
30
+ WATCHLIST: 'watchlist',
31
+ INSIDER_TRADES: 'insider_trades',
32
+ CIK_MAP: 'cik_map',
33
+ COMPANY_TICKERS: 'sec_company_tickers'
28
34
  };
29
35
  export class CacheService {
30
36
  cache;
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/services/cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/services/cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * SEC EDGAR service for fetching Form 4 insider trading data
3
+ */
4
+ import type { InsiderTransaction, InsiderTradingAnalysis } from '../types/market-data.js';
5
+ /**
6
+ * SEC EDGAR Service for Form 4 insider trading data
7
+ */
8
+ export declare class SECEdgarService {
9
+ private cache;
10
+ private xmlParser;
11
+ private tickerToCikMap;
12
+ constructor();
13
+ /**
14
+ * Get recent insider trades across all companies (market-wide mode)
15
+ */
16
+ getRecentInsiderTrades(limit?: number, transactionType?: 'buy' | 'sell' | 'all', startDate?: Date): Promise<InsiderTransaction[]>;
17
+ /**
18
+ * Analyze insider trading activity for a specific company
19
+ */
20
+ analyzeInsiderActivity(symbol: string, limit?: number, transactionType?: 'buy' | 'sell' | 'all', startDate?: Date, includeCompanyInfo?: boolean): Promise<InsiderTradingAnalysis>;
21
+ /**
22
+ * Fetch and parse RSS feed for Form 4 filings
23
+ */
24
+ private fetchAndParseRSSFeed;
25
+ /**
26
+ * Extract RSS entries from parsed feed
27
+ */
28
+ private extractRSSEntries;
29
+ /**
30
+ * Parse Form 4 filing from RSS entry
31
+ */
32
+ private parseForm4FromEntry;
33
+ /**
34
+ * Extract insider name from RSS title
35
+ */
36
+ private extractInsiderNameFromTitle;
37
+ /**
38
+ * Calculate insider trading analysis from transactions
39
+ */
40
+ private calculateInsiderAnalysis;
41
+ /**
42
+ * Get CIK for a ticker symbol
43
+ */
44
+ getCIKForTicker(ticker: string): Promise<string>;
45
+ /**
46
+ * Fetch CIK from SEC company tickers JSON
47
+ */
48
+ private fetchCIKFromSEC;
49
+ }
50
+ /**
51
+ * Singleton instance
52
+ */
53
+ export declare const secEdgarService: SECEdgarService;
54
+ //# sourceMappingURL=sec-edgar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sec-edgar.d.ts","sourceRoot":"","sources":["../../src/services/sec-edgar.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,yBAAyB,CAAC;AAmDjC;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,cAAc,CAAsB;;IAa5C;;OAEG;IACG,sBAAsB,CAC1B,KAAK,GAAE,MAAW,EAClB,eAAe,GAAE,KAAK,GAAG,MAAM,GAAG,KAAa,EAC/C,SAAS,CAAC,EAAE,IAAI,GACf,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA0BhC;;OAEG;IACG,sBAAsB,CAC1B,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAW,EAClB,eAAe,GAAE,KAAK,GAAG,MAAM,GAAG,KAAa,EAC/C,SAAS,CAAC,EAAE,IAAI,EAChB,kBAAkB,GAAE,OAAc,GACjC,OAAO,CAAC,sBAAsB,CAAC;IAwClC;;OAEG;YACW,oBAAoB;IAsFlC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;YACW,mBAAmB;IAqCjC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAgBnC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAqEhC;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkCtD;;OAEG;YACW,eAAe;CAmC9B;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
@@ -0,0 +1,365 @@
1
+ /**
2
+ * SEC EDGAR service for fetching Form 4 insider trading data
3
+ */
4
+ import { XMLParser } from 'fast-xml-parser';
5
+ import pThrottle from 'p-throttle';
6
+ import { CacheService, CacheTTL, CachePrefix } from './cache.js';
7
+ import { yahooFinanceService } from './yahoo-finance.js';
8
+ import { withRetry } from '../utils/error-handler.js';
9
+ /**
10
+ * SEC EDGAR service configuration
11
+ */
12
+ const SEC_USER_AGENT = 'mcp-financex/1.0 (contact@example.com)';
13
+ const SEC_BASE_URL = 'https://www.sec.gov';
14
+ const SEC_REQUEST_TIMEOUT = 30000; // 30 seconds
15
+ /**
16
+ * Throttled fetch function to comply with SEC rate limits (10 req/sec)
17
+ */
18
+ const throttle = pThrottle({
19
+ limit: 10,
20
+ interval: 1000
21
+ });
22
+ const throttledFetch = throttle(async (url) => {
23
+ return fetch(url, {
24
+ headers: {
25
+ 'User-Agent': SEC_USER_AGENT,
26
+ 'Accept': 'application/xml, text/xml, */*'
27
+ },
28
+ signal: AbortSignal.timeout(SEC_REQUEST_TIMEOUT)
29
+ });
30
+ });
31
+ /**
32
+ * SEC EDGAR Service for Form 4 insider trading data
33
+ */
34
+ export class SECEdgarService {
35
+ cache;
36
+ xmlParser;
37
+ tickerToCikMap;
38
+ constructor() {
39
+ this.cache = CacheService.getInstance();
40
+ this.xmlParser = new XMLParser({
41
+ ignoreAttributes: false,
42
+ attributeNamePrefix: '@_',
43
+ textNodeName: '#text',
44
+ parseAttributeValue: true
45
+ });
46
+ this.tickerToCikMap = new Map();
47
+ }
48
+ /**
49
+ * Get recent insider trades across all companies (market-wide mode)
50
+ */
51
+ async getRecentInsiderTrades(limit = 20, transactionType = 'all', startDate) {
52
+ const cacheKey = `${CachePrefix.INSIDER_TRADES}:recent:${limit}:${transactionType}`;
53
+ return this.cache.getOrSet(cacheKey, async () => {
54
+ try {
55
+ // Fetch RSS feed for recent Form 4 filings
56
+ const rssUrl = `${SEC_BASE_URL}/cgi-bin/browse-edgar?action=getcurrent&type=4&owner=include&start=0&count=${Math.min(limit * 3, 100)}&output=atom`;
57
+ const transactions = await this.fetchAndParseRSSFeed(rssUrl, limit, transactionType, startDate);
58
+ if (transactions.length === 0) {
59
+ throw new Error('No filings found');
60
+ }
61
+ return transactions;
62
+ }
63
+ catch (error) {
64
+ const err = error;
65
+ err.type = 'sec-error';
66
+ throw err;
67
+ }
68
+ }, CacheTTL.INSIDER_TRADES);
69
+ }
70
+ /**
71
+ * Analyze insider trading activity for a specific company
72
+ */
73
+ async analyzeInsiderActivity(symbol, limit = 20, transactionType = 'all', startDate, includeCompanyInfo = true) {
74
+ const cacheKey = `${CachePrefix.INSIDER_TRADES}:symbol:${symbol}:${limit}:${transactionType}`;
75
+ return this.cache.getOrSet(cacheKey, async () => {
76
+ try {
77
+ // Get CIK for symbol
78
+ const cik = await this.getCIKForTicker(symbol);
79
+ // Fetch company-specific RSS feed
80
+ const rssUrl = `${SEC_BASE_URL}/cgi-bin/browse-edgar?action=getcompany&CIK=${cik}&type=4&dateb=&owner=include&start=0&count=${Math.min(limit * 2, 100)}&output=atom`;
81
+ const transactions = await this.fetchAndParseRSSFeed(rssUrl, limit, transactionType, startDate);
82
+ // Calculate summary statistics
83
+ const analysis = this.calculateInsiderAnalysis(symbol, cik, transactions);
84
+ // Optionally include company context from Yahoo Finance
85
+ if (includeCompanyInfo) {
86
+ try {
87
+ const marketContext = await yahooFinanceService.getMarketContext(symbol, 0);
88
+ analysis.profile = marketContext.profile;
89
+ analysis.fundamentals = marketContext.fundamentals;
90
+ }
91
+ catch (error) {
92
+ // Gracefully handle if company context fetch fails
93
+ console.error('Failed to fetch company context:', error);
94
+ }
95
+ }
96
+ return analysis;
97
+ }
98
+ catch (error) {
99
+ const err = error;
100
+ err.type = 'sec-error';
101
+ throw err;
102
+ }
103
+ }, CacheTTL.INSIDER_TRADES);
104
+ }
105
+ /**
106
+ * Fetch and parse RSS feed for Form 4 filings
107
+ */
108
+ async fetchAndParseRSSFeed(url, limit, transactionType, startDate) {
109
+ const response = await withRetry(async () => {
110
+ const res = await throttledFetch(url);
111
+ if (!res.ok) {
112
+ throw new Error(`SEC API returned ${res.status}: ${res.statusText}`);
113
+ }
114
+ return res;
115
+ }, {
116
+ maxRetries: 3,
117
+ shouldRetry: (error) => {
118
+ // Don't retry on rate limits or 404s
119
+ const message = error.message || '';
120
+ if (message.includes('403') || message.includes('404')) {
121
+ return false;
122
+ }
123
+ // Retry on 503 and network errors
124
+ return message.includes('503') || message.includes('timeout') || message.includes('network');
125
+ }
126
+ });
127
+ const xmlText = await response.text();
128
+ const feed = this.xmlParser.parse(xmlText);
129
+ // Extract entries from the feed
130
+ const entries = this.extractRSSEntries(feed);
131
+ if (!entries || entries.length === 0) {
132
+ return [];
133
+ }
134
+ // Parse Form 4 filings in parallel (batches of 5)
135
+ const transactions = [];
136
+ const batchSize = 5;
137
+ for (let i = 0; i < Math.min(entries.length, limit * 2); i += batchSize) {
138
+ const batch = entries.slice(i, i + batchSize);
139
+ const batchResults = await Promise.allSettled(batch.map(entry => this.parseForm4FromEntry(entry)));
140
+ for (const result of batchResults) {
141
+ if (result.status === 'fulfilled' && result.value) {
142
+ const txns = result.value;
143
+ for (const txn of txns) {
144
+ // Filter by transaction type
145
+ if (transactionType !== 'all') {
146
+ const txnType = txn.transactionType.toLowerCase();
147
+ if (transactionType === 'buy' && txnType !== 'buy') {
148
+ continue;
149
+ }
150
+ if (transactionType === 'sell' && txnType !== 'sell') {
151
+ continue;
152
+ }
153
+ }
154
+ // Filter by date
155
+ if (startDate && txn.transactionDate < startDate) {
156
+ continue;
157
+ }
158
+ transactions.push(txn);
159
+ if (transactions.length >= limit) {
160
+ break;
161
+ }
162
+ }
163
+ }
164
+ if (transactions.length >= limit) {
165
+ break;
166
+ }
167
+ }
168
+ if (transactions.length >= limit) {
169
+ break;
170
+ }
171
+ }
172
+ return transactions.slice(0, limit);
173
+ }
174
+ /**
175
+ * Extract RSS entries from parsed feed
176
+ */
177
+ extractRSSEntries(feed) {
178
+ // Handle different RSS/Atom feed structures
179
+ const feedData = feed;
180
+ const entries = feedData.feed?.entry || feedData.rss?.channel?.item || [];
181
+ return Array.isArray(entries) ? entries : [entries];
182
+ }
183
+ /**
184
+ * Parse Form 4 filing from RSS entry
185
+ */
186
+ async parseForm4FromEntry(entry) {
187
+ try {
188
+ // Extract basic info from RSS entry
189
+ const title = entry.title || '';
190
+ const link = entry.link || '';
191
+ const filingDate = new Date(entry.updated || entry['published'] || new Date());
192
+ // Extract issuer and reporting owner from title
193
+ // Title format: "4 - Company Name (CIK) (Filer)"
194
+ const titleMatch = title.match(/4\s*-\s*([^(]+)\((\d+)\)/);
195
+ const issuerName = titleMatch ? titleMatch[1].trim() : 'Unknown';
196
+ const issuerCik = titleMatch ? titleMatch[2].trim() : '';
197
+ // For now, create a basic transaction from RSS metadata
198
+ // In a full implementation, we would fetch and parse the actual Form 4 XML
199
+ const transaction = {
200
+ filingDate,
201
+ transactionDate: filingDate, // Approximate - would get actual date from XML
202
+ insiderName: this.extractInsiderNameFromTitle(title),
203
+ position: undefined,
204
+ transactionType: 'Other', // Would determine from XML
205
+ shares: 0, // Would get from XML
206
+ value: 0, // Would calculate from XML
207
+ formType: 'Form 4',
208
+ filingUrl: link.startsWith('http') ? link : `${SEC_BASE_URL}${link}`,
209
+ issuerCik,
210
+ issuerName,
211
+ issuerTicker: undefined
212
+ };
213
+ return [transaction];
214
+ }
215
+ catch (error) {
216
+ console.error('Failed to parse Form 4 entry:', error);
217
+ return [];
218
+ }
219
+ }
220
+ /**
221
+ * Extract insider name from RSS title
222
+ */
223
+ extractInsiderNameFromTitle(title) {
224
+ // Try to extract name from various title formats
225
+ const match = title.match(/\(Filer\)\s*-\s*([^(]+)/);
226
+ if (match) {
227
+ return match[1].trim();
228
+ }
229
+ // Fallback: use last part after dash
230
+ const parts = title.split('-');
231
+ if (parts.length > 1) {
232
+ return parts[parts.length - 1].trim();
233
+ }
234
+ return 'Unknown Insider';
235
+ }
236
+ /**
237
+ * Calculate insider trading analysis from transactions
238
+ */
239
+ calculateInsiderAnalysis(symbol, cik, transactions) {
240
+ let netShares = 0;
241
+ let netValue = 0;
242
+ let buyTransactions = 0;
243
+ let sellTransactions = 0;
244
+ let exerciseTransactions = 0;
245
+ let otherTransactions = 0;
246
+ const insiderMap = new Map();
247
+ for (const txn of transactions) {
248
+ const txnType = txn.transactionType.toLowerCase();
249
+ // Count transaction types
250
+ if (txnType.includes('buy')) {
251
+ buyTransactions++;
252
+ netShares += txn.shares;
253
+ netValue += txn.value;
254
+ }
255
+ else if (txnType.includes('sell')) {
256
+ sellTransactions++;
257
+ netShares -= txn.shares;
258
+ netValue -= txn.value;
259
+ }
260
+ else if (txnType.includes('exercise')) {
261
+ exerciseTransactions++;
262
+ }
263
+ else {
264
+ otherTransactions++;
265
+ }
266
+ // Track by insider
267
+ const insiderKey = txn.insiderName;
268
+ const existing = insiderMap.get(insiderKey);
269
+ if (existing) {
270
+ existing.totalValue += Math.abs(txn.value);
271
+ existing.netShares += txnType.includes('buy') ? txn.shares : -txn.shares;
272
+ }
273
+ else {
274
+ insiderMap.set(insiderKey, {
275
+ name: txn.insiderName,
276
+ position: txn.position || 'Unknown',
277
+ totalValue: Math.abs(txn.value),
278
+ netShares: txnType.includes('buy') ? txn.shares : -txn.shares
279
+ });
280
+ }
281
+ }
282
+ // Get top insiders by total value
283
+ const topInsiders = Array.from(insiderMap.values())
284
+ .sort((a, b) => b.totalValue - a.totalValue)
285
+ .slice(0, 10);
286
+ return {
287
+ symbol,
288
+ cik,
289
+ timestamp: new Date(),
290
+ totalTransactions: transactions.length,
291
+ netShares,
292
+ netValue,
293
+ buyTransactions,
294
+ sellTransactions,
295
+ exerciseTransactions,
296
+ otherTransactions,
297
+ recentTransactions: transactions,
298
+ topInsiders: topInsiders.length > 0 ? topInsiders : undefined
299
+ };
300
+ }
301
+ /**
302
+ * Get CIK for a ticker symbol
303
+ */
304
+ async getCIKForTicker(ticker) {
305
+ const normalizedTicker = ticker.toUpperCase();
306
+ // Check in-memory cache first
307
+ const memCached = this.tickerToCikMap.get(normalizedTicker);
308
+ if (memCached) {
309
+ return memCached;
310
+ }
311
+ // Check persistent cache
312
+ const cacheKey = `${CachePrefix.CIK_MAP}:ticker:${normalizedTicker}`;
313
+ const cached = await this.cache.get(cacheKey);
314
+ if (cached) {
315
+ this.tickerToCikMap.set(normalizedTicker, cached);
316
+ return cached;
317
+ }
318
+ // Fetch from SEC company tickers endpoint
319
+ try {
320
+ const cik = await this.fetchCIKFromSEC(normalizedTicker);
321
+ // Cache both in-memory and persistent
322
+ this.tickerToCikMap.set(normalizedTicker, cik);
323
+ await this.cache.set(cacheKey, cik, CacheTTL.CIK_MAPPING);
324
+ return cik;
325
+ }
326
+ catch (error) {
327
+ const err = error;
328
+ err.message = `CIK not found for ticker ${ticker}`;
329
+ err.type = 'sec-error';
330
+ throw err;
331
+ }
332
+ }
333
+ /**
334
+ * Fetch CIK from SEC company tickers JSON
335
+ */
336
+ async fetchCIKFromSEC(ticker) {
337
+ const cacheKey = CachePrefix.COMPANY_TICKERS;
338
+ // Get or fetch company tickers JSON
339
+ const companyTickers = await this.cache.getOrSet(cacheKey, async () => {
340
+ const response = await withRetry(async () => {
341
+ const res = await throttledFetch(`${SEC_BASE_URL}/files/company_tickers.json`);
342
+ if (!res.ok) {
343
+ throw new Error(`Failed to fetch company tickers: ${res.status}`);
344
+ }
345
+ return res;
346
+ }, { maxRetries: 3 });
347
+ const json = await response.json();
348
+ return json;
349
+ }, CacheTTL.COMPANY_TICKERS);
350
+ // Search for ticker in the mappings
351
+ for (const key of Object.keys(companyTickers)) {
352
+ const company = companyTickers[key];
353
+ if (company.ticker.toUpperCase() === ticker) {
354
+ // Format CIK with leading zeros (10 digits)
355
+ return company.cik_str.toString().padStart(10, '0');
356
+ }
357
+ }
358
+ throw new Error(`No matching Ticker Symbol found for ${ticker}`);
359
+ }
360
+ }
361
+ /**
362
+ * Singleton instance
363
+ */
364
+ export const secEdgarService = new SECEdgarService();
365
+ //# sourceMappingURL=sec-edgar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sec-edgar.js","sourceRoot":"","sources":["../../src/services/sec-edgar.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Yahoo Finance service wrapper with caching and error handling
3
3
  */
4
- import { QuoteData, HistoricalDataPoint, HistoricalParams, NewsArticle, SearchResult, MarketSummary, BatchQuoteResponse } from '../types/market-data.js';
4
+ import { QuoteData, HistoricalDataPoint, HistoricalParams, NewsArticle, SearchResult, MarketSummary, BatchQuoteResponse, MarketContext } from '../types/market-data.js';
5
5
  export declare class YahooFinanceService {
6
6
  private cache;
7
7
  constructor();
@@ -33,6 +33,43 @@ export declare class YahooFinanceService {
33
33
  * Get trending/most active stocks
34
34
  */
35
35
  getTrending(limit?: number): Promise<SearchResult[]>;
36
+ /**
37
+ * Get comprehensive market context for in-depth analysis
38
+ * Includes company profile, fundamentals, news, events, institutional holdings, etc.
39
+ */
40
+ getMarketContext(symbol: string, newsLimit?: number): Promise<MarketContext>;
41
+ /**
42
+ * Extract company profile from quoteSummary data
43
+ */
44
+ private extractCompanyProfile;
45
+ /**
46
+ * Extract company fundamentals
47
+ */
48
+ private extractFundamentals;
49
+ /**
50
+ * Extract upcoming events (earnings, dividends, etc.)
51
+ */
52
+ private extractUpcomingEvents;
53
+ /**
54
+ * Extract institutional ownership data
55
+ */
56
+ private extractInstitutionalOwnership;
57
+ /**
58
+ * Extract insider transactions
59
+ */
60
+ private extractInsiderTransactions;
61
+ /**
62
+ * Categorize transaction type from text
63
+ */
64
+ private categorizeTransactionType;
65
+ /**
66
+ * Extract short interest data
67
+ */
68
+ private extractShortInterest;
69
+ /**
70
+ * Extract analyst ratings
71
+ */
72
+ private extractAnalystRatings;
36
73
  /**
37
74
  * Transform yahoo-finance2 quote to our QuoteData type
38
75
  */
@@ -49,6 +86,10 @@ export declare class YahooFinanceService {
49
86
  * Transform news article
50
87
  */
51
88
  private transformNewsArticle;
89
+ /**
90
+ * Categorize news articles based on content
91
+ */
92
+ private categorizeNews;
52
93
  }
53
94
  export declare const yahooFinanceService: YahooFinanceService;
54
95
  //# sourceMappingURL=yahoo-finance.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"yahoo-finance.d.ts","sourceRoot":"","sources":["../../src/services/yahoo-finance.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAKjC,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,KAAK,CAAe;;IAM5B;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAyBlD;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA2BnE;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAgD7E;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA0BxE;;OAEG;IACG,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAoC1E;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IA4BlD;;OAEG;IACG,WAAW,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAyB9D;;OAEG;IACH,OAAO,CAAC,cAAc;IA8BtB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAYhC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAmB7B;AAGD,eAAO,MAAM,mBAAmB,qBAA4B,CAAC"}
1
+ {"version":3,"file":"yahoo-finance.d.ts","sourceRoot":"","sources":["../../src/services/yahoo-finance.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,aAAa,EAKd,MAAM,yBAAyB,CAAC;AAKjC,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,KAAK,CAAe;;IAM5B;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAyBlD;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA2BnE;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAgD7E;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA0BxE;;OAEG;IACG,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAoC1E;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IA4BlD;;OAEG;IACG,WAAW,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAyB9D;;;OAGG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,MAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAoGtF;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAqB7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA+C3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAqC7B;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAuBrC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA4BlC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAcjC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAS5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAyB7B;;OAEG;IACH,OAAO,CAAC,cAAc;IA8BtB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAYhC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuB5B;;OAEG;IACH,OAAO,CAAC,cAAc;CAiEvB;AAGD,eAAO,MAAM,mBAAmB,qBAA4B,CAAC"}