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.
- package/dist/services/cache.d.ts +6 -0
- package/dist/services/cache.d.ts.map +1 -1
- package/dist/services/cache.js +7 -1
- package/dist/services/cache.js.map +1 -1
- package/dist/services/sec-edgar.d.ts +54 -0
- package/dist/services/sec-edgar.d.ts.map +1 -0
- package/dist/services/sec-edgar.js +365 -0
- package/dist/services/sec-edgar.js.map +1 -0
- package/dist/services/yahoo-finance.d.ts +42 -1
- package/dist/services/yahoo-finance.d.ts.map +1 -1
- package/dist/services/yahoo-finance.js +351 -1
- package/dist/services/yahoo-finance.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/insider.d.ts +143 -0
- package/dist/tools/insider.d.ts.map +1 -0
- package/dist/tools/insider.js +187 -0
- package/dist/tools/insider.js.map +1 -0
- package/dist/tools/news.d.ts +74 -1
- package/dist/tools/news.d.ts.map +1 -1
- package/dist/tools/news.js +79 -11
- package/dist/tools/news.js.map +1 -1
- package/dist/types/market-data.d.ts +152 -0
- package/dist/types/market-data.d.ts.map +1 -1
- package/dist/utils/error-handler.d.ts +8 -0
- package/dist/utils/error-handler.d.ts.map +1 -1
- package/dist/utils/error-handler.js +54 -0
- package/dist/utils/error-handler.js.map +1 -1
- package/dist/utils/validators.d.ts +31 -2
- package/dist/utils/validators.d.ts.map +1 -1
- package/dist/utils/validators.js +16 -1
- package/dist/utils/validators.js.map +1 -1
- package/package.json +3 -1
package/dist/services/cache.d.ts
CHANGED
|
@@ -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
|
|
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"}
|
package/dist/services/cache.js
CHANGED
|
@@ -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":"AAAA;;GAEG;AAEH,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,EAAE,EAAE,CAAC;IACvD,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,MAAM,EAAE,EAAE,CAAC;IACpE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,KAAK,EAAE,EAAE,CAAC;IACvD,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,MAAM,EAAE,EAAE,CAAC;IAC5D,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,KAAK,EAAE,EAAE,CAAC;IACjE,cAAc,EAAE,EAAE,EAAE,WAAW;IAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,KAAK,EAAE,EAAE,CAAC;CACrD,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,YAAY;IACxB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;
|
|
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":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAMtD;;GAEG;AACH,MAAM,cAAc,GAAG,wCAAwC,CAAC;AAChE,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAC3C,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC,aAAa;AAEhD;;GAEG;AACH,MAAM,QAAQ,GAAG,SAAS,CAAC;IACzB,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,IAAI;CACf,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAW,EAAqB,EAAE;IACvE,OAAO,KAAK,CAAC,GAAG,EAAE;QAChB,OAAO,EAAE;YACP,YAAY,EAAE,cAAc;YAC5B,QAAQ,EAAE,gCAAgC;SAC3C;QACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC;KACjD,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AA0BH;;GAEG;AACH,MAAM,OAAO,eAAe;IAClB,KAAK,CAAe;IACpB,SAAS,CAAY;IACrB,cAAc,CAAsB;IAE5C;QACE,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC;YAC7B,gBAAgB,EAAE,KAAK;YACvB,mBAAmB,EAAE,IAAI;YACzB,YAAY,EAAE,OAAO;YACrB,mBAAmB,EAAE,IAAI;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,sBAAsB,CAC1B,QAAgB,EAAE,EAClB,kBAA0C,KAAK,EAC/C,SAAgB;QAEhB,MAAM,QAAQ,GAAG,GAAG,WAAW,CAAC,cAAc,WAAW,KAAK,IAAI,eAAe,EAAE,CAAC;QAEpF,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CACxB,QAAQ,EACR,KAAK,IAAI,EAAE;YACT,IAAI,CAAC;gBACH,2CAA2C;gBAC3C,MAAM,MAAM,GAAG,GAAG,YAAY,8EAA8E,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC;gBACnJ,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;gBAEhG,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC9B,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBACtC,CAAC;gBAED,OAAO,YAAY,CAAC;YACtB,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,MAAM,GAAG,GAAG,KAAkC,CAAC;gBAC/C,GAAG,CAAC,IAAI,GAAG,WAAW,CAAC;gBACvB,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC,EACD,QAAQ,CAAC,cAAc,CACxB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,sBAAsB,CAC1B,MAAc,EACd,QAAgB,EAAE,EAClB,kBAA0C,KAAK,EAC/C,SAAgB,EAChB,qBAA8B,IAAI;QAElC,MAAM,QAAQ,GAAG,GAAG,WAAW,CAAC,cAAc,WAAW,MAAM,IAAI,KAAK,IAAI,eAAe,EAAE,CAAC;QAE9F,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CACxB,QAAQ,EACR,KAAK,IAAI,EAAE;YACT,IAAI,CAAC;gBACH,qBAAqB;gBACrB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBAE/C,kCAAkC;gBAClC,MAAM,MAAM,GAAG,GAAG,YAAY,+CAA+C,GAAG,8CAA8C,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC;gBACrK,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;gBAEhG,+BAA+B;gBAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;gBAE1E,wDAAwD;gBACxD,IAAI,kBAAkB,EAAE,CAAC;oBACvB,IAAI,CAAC;wBACH,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;wBAC5E,QAAQ,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC;wBACzC,QAAQ,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;oBACrD,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,mDAAmD;wBACnD,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;oBAC3D,CAAC;gBACH,CAAC;gBAED,OAAO,QAAQ,CAAC;YAClB,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,MAAM,GAAG,GAAG,KAAkC,CAAC;gBAC/C,GAAG,CAAC,IAAI,GAAG,WAAW,CAAC;gBACvB,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC,EACD,QAAQ,CAAC,cAAc,CACxB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAChC,GAAW,EACX,KAAa,EACb,eAAuC,EACvC,SAAgB;QAEhB,MAAM,QAAQ,GAAG,MAAM,SAAS,CAC9B,KAAK,IAAI,EAAE;YACT,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;YACvE,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,EACD;YACE,UAAU,EAAE,CAAC;YACb,WAAW,EAAE,CAAC,KAAc,EAAE,EAAE;gBAC9B,qCAAqC;gBACrC,MAAM,OAAO,GAAI,KAAe,CAAC,OAAO,IAAI,EAAE,CAAC;gBAC/C,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACvD,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,kCAAkC;gBAClC,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC/F,CAAC;SACF,CACF,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE3C,gCAAgC;QAChC,MAAM,OAAO,GAAe,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAEzD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,kDAAkD;QAClD,MAAM,YAAY,GAAyB,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,CAAC,CAAC;QAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;YACxE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;YAC9C,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,UAAU,CAC3C,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CACpD,CAAC;YAEF,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;gBAClC,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBAClD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;oBAC1B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;wBACvB,6BAA6B;wBAC7B,IAAI,eAAe,KAAK,KAAK,EAAE,CAAC;4BAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;4BAClD,IAAI,eAAe,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;gCACnD,SAAS;4BACX,CAAC;4BACD,IAAI,eAAe,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;gCACrD,SAAS;4BACX,CAAC;wBACH,CAAC;wBAED,iBAAiB;wBACjB,IAAI,SAAS,IAAI,GAAG,CAAC,eAAe,GAAG,SAAS,EAAE,CAAC;4BACjD,SAAS;wBACX,CAAC;wBAED,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACvB,IAAI,YAAY,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;4BACjC,MAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,IAAI,YAAY,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;oBACjC,MAAM;gBACR,CAAC;YACH,CAAC;YACD,IAAI,YAAY,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;gBACjC,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,IAA6B;QACrD,4CAA4C;QAC5C,MAAM,QAAQ,GAAG,IAA8E,CAAC;QAChG,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,IAAI,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;QAC1E,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAAsB,CAAC,CAAC,CAAC,CAAC,OAAmB,CAAC,CAAC;IAClF,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAAC,KAAe;QAC/C,IAAI,CAAC;YACH,oCAAoC;YACpC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;YAE/E,gDAAgD;YAChD,iDAAiD;YACjD,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC3D,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACjE,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAEzD,wDAAwD;YACxD,2EAA2E;YAC3E,MAAM,WAAW,GAAuB;gBACtC,UAAU;gBACV,eAAe,EAAE,UAAU,EAAE,+CAA+C;gBAC5E,WAAW,EAAE,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC;gBACpD,QAAQ,EAAE,SAAS;gBACnB,eAAe,EAAE,OAAO,EAAE,2BAA2B;gBACrD,MAAM,EAAE,CAAC,EAAE,qBAAqB;gBAChC,KAAK,EAAE,CAAC,EAAE,2BAA2B;gBACrC,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,IAAI,EAAE;gBACpE,SAAS;gBACT,UAAU;gBACV,YAAY,EAAE,SAAS;aACxB,CAAC;YAEF,OAAO,CAAC,WAAW,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YACtD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,2BAA2B,CAAC,KAAa;QAC/C,iDAAiD;QACjD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACrD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;QAED,qCAAqC;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,wBAAwB,CAC9B,MAAc,EACd,GAAW,EACX,YAAkC;QAElC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,oBAAoB,GAAG,CAAC,CAAC;QAC7B,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAE1B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqF,CAAC;QAEhH,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;YAElD,0BAA0B;YAC1B,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,eAAe,EAAE,CAAC;gBAClB,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC;gBACxB,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC;YACxB,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpC,gBAAgB,EAAE,CAAC;gBACnB,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC;gBACxB,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC;YACxB,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACxC,oBAAoB,EAAE,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,iBAAiB,EAAE,CAAC;YACtB,CAAC;YAED,mBAAmB;YACnB,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC;YACnC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC5C,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC3C,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;YAC3E,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE;oBACzB,IAAI,EAAE,GAAG,CAAC,WAAW;oBACrB,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,SAAS;oBACnC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;oBAC/B,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM;iBAC9D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,kCAAkC;QAClC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;aAChD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;aAC3C,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEhB,OAAO;YACL,MAAM;YACN,GAAG;YACH,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,iBAAiB,EAAE,YAAY,CAAC,MAAM;YACtC,SAAS;YACT,QAAQ;YACR,eAAe;YACf,gBAAgB;YAChB,oBAAoB;YACpB,iBAAiB;YACjB,kBAAkB,EAAE,YAAY;YAChC,WAAW,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;SAC9D,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,MAAc;QAClC,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAE9C,8BAA8B;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC5D,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,yBAAyB;QACzB,MAAM,QAAQ,GAAG,GAAG,WAAW,CAAC,OAAO,WAAW,gBAAgB,EAAE,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAS,QAAQ,CAAC,CAAC;QACtD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;YAClD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;YAEzD,sCAAsC;YACtC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;YAE1D,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,KAAkC,CAAC;YAC/C,GAAG,CAAC,OAAO,GAAG,4BAA4B,MAAM,EAAE,CAAC;YACnD,GAAG,CAAC,IAAI,GAAG,WAAW,CAAC;YACvB,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAAC,MAAc;QAC1C,MAAM,QAAQ,GAAG,WAAW,CAAC,eAAe,CAAC;QAE7C,oCAAoC;QACpC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAC9C,QAAQ,EACR,KAAK,IAAI,EAAE;YACT,MAAM,QAAQ,GAAG,MAAM,SAAS,CAC9B,KAAK,IAAI,EAAE;gBACT,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,GAAG,YAAY,6BAA6B,CAAC,CAAC;gBAC/E,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;oBACZ,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBACpE,CAAC;gBACD,OAAO,GAAG,CAAC;YACb,CAAC,EACD,EAAE,UAAU,EAAE,CAAC,EAAE,CAClB,CAAC;YAEF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,IAAkC,CAAC;QAC5C,CAAC,EACD,QAAQ,CAAC,eAAe,CACzB,CAAC;QAEF,oCAAoC;QACpC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;gBAC5C,4CAA4C;gBAC5C,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,uCAAuC,MAAM,EAAE,CAAC,CAAC;IACnE,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC"}
|
|
@@ -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,
|
|
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"}
|