market-data-analyzer 2.0.0

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.

Potentially problematic release.


This version of market-data-analyzer might be problematic. Click here for more details.

Files changed (58) hide show
  1. package/README.md +159 -0
  2. package/dist/index.d.ts +12 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +267 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/tools/analyze_portfolio.d.ts +14 -0
  7. package/dist/tools/analyze_portfolio.d.ts.map +1 -0
  8. package/dist/tools/analyze_portfolio.js +155 -0
  9. package/dist/tools/analyze_portfolio.js.map +1 -0
  10. package/dist/tools/analyze_stock.d.ts +8 -0
  11. package/dist/tools/analyze_stock.d.ts.map +1 -0
  12. package/dist/tools/analyze_stock.js +211 -0
  13. package/dist/tools/analyze_stock.js.map +1 -0
  14. package/dist/tools/compare_assets.d.ts +8 -0
  15. package/dist/tools/compare_assets.d.ts.map +1 -0
  16. package/dist/tools/compare_assets.js +138 -0
  17. package/dist/tools/compare_assets.js.map +1 -0
  18. package/dist/tools/crypto_analysis.d.ts +8 -0
  19. package/dist/tools/crypto_analysis.d.ts.map +1 -0
  20. package/dist/tools/crypto_analysis.js +192 -0
  21. package/dist/tools/crypto_analysis.js.map +1 -0
  22. package/dist/tools/market_overview.d.ts +8 -0
  23. package/dist/tools/market_overview.d.ts.map +1 -0
  24. package/dist/tools/market_overview.js +223 -0
  25. package/dist/tools/market_overview.js.map +1 -0
  26. package/dist/tools/screen_stocks.d.ts +19 -0
  27. package/dist/tools/screen_stocks.d.ts.map +1 -0
  28. package/dist/tools/screen_stocks.js +122 -0
  29. package/dist/tools/screen_stocks.js.map +1 -0
  30. package/dist/types.d.ts +158 -0
  31. package/dist/types.d.ts.map +1 -0
  32. package/dist/types.js +5 -0
  33. package/dist/types.js.map +1 -0
  34. package/dist/utils/api.d.ts +37 -0
  35. package/dist/utils/api.d.ts.map +1 -0
  36. package/dist/utils/api.js +228 -0
  37. package/dist/utils/api.js.map +1 -0
  38. package/dist/utils/cache.d.ts +20 -0
  39. package/dist/utils/cache.d.ts.map +1 -0
  40. package/dist/utils/cache.js +52 -0
  41. package/dist/utils/cache.js.map +1 -0
  42. package/dist/utils/math.d.ts +30 -0
  43. package/dist/utils/math.d.ts.map +1 -0
  44. package/dist/utils/math.js +300 -0
  45. package/dist/utils/math.js.map +1 -0
  46. package/package.json +30 -0
  47. package/src/index.ts +329 -0
  48. package/src/tools/analyze_portfolio.ts +204 -0
  49. package/src/tools/analyze_stock.ts +204 -0
  50. package/src/tools/compare_assets.ts +181 -0
  51. package/src/tools/crypto_analysis.ts +221 -0
  52. package/src/tools/market_overview.ts +236 -0
  53. package/src/tools/screen_stocks.ts +154 -0
  54. package/src/types.ts +175 -0
  55. package/src/utils/api.ts +262 -0
  56. package/src/utils/cache.ts +65 -0
  57. package/src/utils/math.ts +332 -0
  58. package/tsconfig.json +19 -0
@@ -0,0 +1,223 @@
1
+ /**
2
+ * market_overview -- Current market snapshot.
3
+ *
4
+ * Fetches live data for major indices, sector ETFs, and VIX
5
+ * from Yahoo Finance to build a comprehensive market summary.
6
+ */
7
+ import { yahooQuote } from "../utils/api.js";
8
+ /** Index/ETF symbols to track */
9
+ const INDEX_SYMBOLS = [
10
+ "^GSPC", // S&P 500
11
+ "^IXIC", // NASDAQ Composite
12
+ "^DJI", // Dow Jones
13
+ "^RUT", // Russell 2000
14
+ "^VIX", // VIX
15
+ "^TNX", // 10-Year Treasury Yield
16
+ ];
17
+ /** Sector ETFs (SPDR Select Sector) */
18
+ const SECTOR_ETFS = [
19
+ { symbol: "XLK", name: "Technology" },
20
+ { symbol: "XLV", name: "Healthcare" },
21
+ { symbol: "XLF", name: "Financials" },
22
+ { symbol: "XLY", name: "Consumer Discretionary" },
23
+ { symbol: "XLP", name: "Consumer Staples" },
24
+ { symbol: "XLE", name: "Energy" },
25
+ { symbol: "XLI", name: "Industrials" },
26
+ { symbol: "XLU", name: "Utilities" },
27
+ { symbol: "XLRE", name: "Real Estate" },
28
+ { symbol: "XLB", name: "Materials" },
29
+ { symbol: "XLC", name: "Communication Services" },
30
+ ];
31
+ /** Other reference symbols */
32
+ const OTHER_SYMBOLS = [
33
+ "BTC-USD", // Bitcoin
34
+ "ETH-USD", // Ethereum
35
+ "GC=F", // Gold futures
36
+ "CL=F", // Crude oil WTI
37
+ ];
38
+ export async function handleMarketOverview() {
39
+ // Fetch all data in parallel
40
+ const allSymbols = [
41
+ ...INDEX_SYMBOLS,
42
+ ...SECTOR_ETFS.map((s) => s.symbol),
43
+ ...OTHER_SYMBOLS,
44
+ ];
45
+ const quotes = await yahooQuote(allSymbols);
46
+ const quoteMap = new Map(quotes.map((q) => [q.symbol, q]));
47
+ const lines = [];
48
+ lines.push("# Market Overview");
49
+ lines.push("");
50
+ lines.push(`*Live data as of ${new Date().toISOString().slice(0, 16)} UTC*`);
51
+ lines.push("");
52
+ // Major Indices
53
+ lines.push("## Major Indices");
54
+ lines.push("");
55
+ lines.push("| Index | Value | Change | Change % |");
56
+ lines.push("|-------|-------|--------|----------|");
57
+ const indexNames = {
58
+ "^GSPC": "S&P 500",
59
+ "^IXIC": "NASDAQ Composite",
60
+ "^DJI": "Dow Jones Industrial",
61
+ "^RUT": "Russell 2000",
62
+ "^VIX": "CBOE Volatility (VIX)",
63
+ "^TNX": "10-Year Treasury Yield",
64
+ };
65
+ for (const sym of INDEX_SYMBOLS) {
66
+ const q = quoteMap.get(sym);
67
+ if (!q || q.regularMarketPrice == null)
68
+ continue;
69
+ const name = indexNames[sym] ?? q.shortName ?? sym;
70
+ const price = q.regularMarketPrice;
71
+ const change = q.regularMarketChange ?? 0;
72
+ const changePct = q.regularMarketChangePercent ?? 0;
73
+ const sign = change >= 0 ? "+" : "";
74
+ const fmtPrice = price > 100
75
+ ? price.toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 2 })
76
+ : price.toFixed(2);
77
+ lines.push(`| ${name} | ${fmtPrice} | ${sign}${change.toFixed(2)} | ${sign}${changePct.toFixed(2)}% |`);
78
+ }
79
+ lines.push("");
80
+ // VIX interpretation
81
+ const vix = quoteMap.get("^VIX");
82
+ if (vix?.regularMarketPrice != null) {
83
+ const vixVal = vix.regularMarketPrice;
84
+ lines.push("### VIX Interpretation");
85
+ lines.push("");
86
+ if (vixVal < 15) {
87
+ lines.push(`VIX at ${vixVal.toFixed(2)} -- **Low volatility.** Market complacency; conditions are calm.`);
88
+ }
89
+ else if (vixVal < 20) {
90
+ lines.push(`VIX at ${vixVal.toFixed(2)} -- **Normal.** Typical market conditions.`);
91
+ }
92
+ else if (vixVal < 25) {
93
+ lines.push(`VIX at ${vixVal.toFixed(2)} -- **Elevated.** Increasing uncertainty and hedging activity.`);
94
+ }
95
+ else if (vixVal < 30) {
96
+ lines.push(`VIX at ${vixVal.toFixed(2)} -- **High.** Significant fear in the market.`);
97
+ }
98
+ else {
99
+ lines.push(`VIX at ${vixVal.toFixed(2)} -- **Very high.** Extreme fear; possible market stress event.`);
100
+ }
101
+ lines.push("");
102
+ }
103
+ // Sector Performance
104
+ lines.push("## Sector Performance");
105
+ lines.push("");
106
+ lines.push("| Sector | ETF | Price | Change % |");
107
+ lines.push("|--------|-----|-------|----------|");
108
+ const sectorData = [];
109
+ for (const etf of SECTOR_ETFS) {
110
+ const q = quoteMap.get(etf.symbol);
111
+ if (!q || q.regularMarketPrice == null)
112
+ continue;
113
+ const changePct = q.regularMarketChangePercent ?? 0;
114
+ const sign = changePct >= 0 ? "+" : "";
115
+ lines.push(`| ${etf.name} | ${etf.symbol} | $${q.regularMarketPrice.toFixed(2)} | ${sign}${changePct.toFixed(2)}% |`);
116
+ sectorData.push({ name: etf.name, symbol: etf.symbol, changePct });
117
+ }
118
+ lines.push("");
119
+ // Sector breadth
120
+ if (sectorData.length > 0) {
121
+ const positive = sectorData.filter((s) => s.changePct > 0).length;
122
+ const negative = sectorData.filter((s) => s.changePct < 0).length;
123
+ const bestSector = [...sectorData].sort((a, b) => b.changePct - a.changePct)[0];
124
+ const worstSector = [...sectorData].sort((a, b) => a.changePct - b.changePct)[0];
125
+ lines.push("### Sector Breadth");
126
+ lines.push("");
127
+ lines.push(`- Sectors advancing: ${positive}/${sectorData.length}`);
128
+ lines.push(`- Sectors declining: ${negative}/${sectorData.length}`);
129
+ lines.push(`- Best: **${bestSector.name}** (${bestSector.changePct >= 0 ? "+" : ""}${bestSector.changePct.toFixed(2)}%)`);
130
+ lines.push(`- Worst: **${worstSector.name}** (${worstSector.changePct >= 0 ? "+" : ""}${worstSector.changePct.toFixed(2)}%)`);
131
+ lines.push("");
132
+ }
133
+ // Crypto & Commodities
134
+ lines.push("## Crypto & Commodities");
135
+ lines.push("");
136
+ lines.push("| Asset | Price | Change % |");
137
+ lines.push("|-------|-------|----------|");
138
+ const otherNames = {
139
+ "BTC-USD": "Bitcoin",
140
+ "ETH-USD": "Ethereum",
141
+ "GC=F": "Gold",
142
+ "CL=F": "Crude Oil WTI",
143
+ };
144
+ for (const sym of OTHER_SYMBOLS) {
145
+ const q = quoteMap.get(sym);
146
+ if (!q || q.regularMarketPrice == null)
147
+ continue;
148
+ const name = otherNames[sym] ?? q.shortName ?? sym;
149
+ const changePct = q.regularMarketChangePercent ?? 0;
150
+ const sign = changePct >= 0 ? "+" : "";
151
+ lines.push(`| ${name} | $${q.regularMarketPrice.toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 2 })} | ${sign}${changePct.toFixed(2)}% |`);
152
+ }
153
+ lines.push("");
154
+ // Market Breadth / Sentiment estimate
155
+ lines.push("## Market Sentiment");
156
+ lines.push("");
157
+ const spx = quoteMap.get("^GSPC");
158
+ const spxChange = spx?.regularMarketChangePercent ?? 0;
159
+ const vixVal = vix?.regularMarketPrice ?? 20;
160
+ let sentimentScore = 50;
161
+ // SPX contribution
162
+ if (spxChange > 1)
163
+ sentimentScore += 15;
164
+ else if (spxChange > 0.5)
165
+ sentimentScore += 10;
166
+ else if (spxChange > 0)
167
+ sentimentScore += 5;
168
+ else if (spxChange < -1)
169
+ sentimentScore -= 15;
170
+ else if (spxChange < -0.5)
171
+ sentimentScore -= 10;
172
+ else if (spxChange < 0)
173
+ sentimentScore -= 5;
174
+ // VIX contribution
175
+ if (vixVal < 15)
176
+ sentimentScore += 10;
177
+ else if (vixVal < 20)
178
+ sentimentScore += 5;
179
+ else if (vixVal > 30)
180
+ sentimentScore -= 15;
181
+ else if (vixVal > 25)
182
+ sentimentScore -= 10;
183
+ else if (vixVal > 20)
184
+ sentimentScore -= 5;
185
+ // Sector breadth
186
+ if (sectorData.length > 0) {
187
+ const posRatio = sectorData.filter((s) => s.changePct > 0).length / sectorData.length;
188
+ if (posRatio > 0.7)
189
+ sentimentScore += 10;
190
+ else if (posRatio > 0.5)
191
+ sentimentScore += 5;
192
+ else if (posRatio < 0.3)
193
+ sentimentScore -= 10;
194
+ }
195
+ sentimentScore = Math.max(0, Math.min(100, sentimentScore));
196
+ const sentiment = sentimentScore >= 60 ? "BULLISH" : sentimentScore <= 40 ? "BEARISH" : "NEUTRAL";
197
+ lines.push(`**Sentiment: ${sentiment}** (Score: ${sentimentScore}/100)`);
198
+ lines.push("");
199
+ // Key observations
200
+ lines.push("## Key Observations");
201
+ lines.push("");
202
+ if (spx) {
203
+ const val = spx.regularMarketPrice?.toLocaleString("en-US", { minimumFractionDigits: 2 }) ?? "N/A";
204
+ lines.push(`- S&P 500 at ${val} (${spxChange >= 0 ? "+" : ""}${spxChange.toFixed(2)}%).`);
205
+ }
206
+ const btc = quoteMap.get("BTC-USD");
207
+ if (btc && btc.regularMarketChangePercent != null && Math.abs(btc.regularMarketChangePercent) > 2) {
208
+ lines.push(`- Crypto ${btc.regularMarketChangePercent > 0 ? "rallying" : "selling off"}: Bitcoin ${btc.regularMarketChangePercent >= 0 ? "+" : ""}${btc.regularMarketChangePercent.toFixed(1)}%.`);
209
+ }
210
+ const oil = quoteMap.get("CL=F");
211
+ if (oil && oil.regularMarketChangePercent != null && Math.abs(oil.regularMarketChangePercent) > 1) {
212
+ lines.push(`- Oil ${oil.regularMarketChangePercent > 0 ? "rising" : "falling"} (${oil.regularMarketChangePercent >= 0 ? "+" : ""}${oil.regularMarketChangePercent.toFixed(1)}%).`);
213
+ }
214
+ const gold = quoteMap.get("GC=F");
215
+ if (gold && gold.regularMarketChangePercent != null && gold.regularMarketChangePercent > 0.5) {
216
+ lines.push(`- Gold up ${gold.regularMarketChangePercent.toFixed(1)}% -- possible flight to safety.`);
217
+ }
218
+ if (vixVal > 25) {
219
+ lines.push("- Elevated VIX suggests caution; hedging demand is high.");
220
+ }
221
+ return lines.join("\n");
222
+ }
223
+ //# sourceMappingURL=market_overview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"market_overview.js","sourceRoot":"","sources":["../../src/tools/market_overview.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * screen_stocks -- Screen stocks by criteria using Yahoo Finance data.
3
+ *
4
+ * Fetches live quotes for a universe of popular stocks and filters
5
+ * by market cap, P/E ratio, sector, volume, etc.
6
+ */
7
+ export interface ScreenCriteria {
8
+ min_market_cap?: number;
9
+ max_market_cap?: number;
10
+ min_pe?: number;
11
+ max_pe?: number;
12
+ sector?: string;
13
+ min_volume?: number;
14
+ min_price?: number;
15
+ max_price?: number;
16
+ limit?: number;
17
+ }
18
+ export declare function handleScreenStocks(criteria: ScreenCriteria): Promise<string>;
19
+ //# sourceMappingURL=screen_stocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen_stocks.d.ts","sourceRoot":"","sources":["../../src/tools/screen_stocks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA2ClF"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * screen_stocks -- Screen stocks by criteria using Yahoo Finance data.
3
+ *
4
+ * Fetches live quotes for a universe of popular stocks and filters
5
+ * by market cap, P/E ratio, sector, volume, etc.
6
+ */
7
+ import { yahooScreener, POPULAR_SYMBOLS } from "../utils/api.js";
8
+ import { formatCurrency, formatVolume } from "../utils/math.js";
9
+ export async function handleScreenStocks(criteria) {
10
+ // Fetch quotes for the full symbol universe
11
+ let quotes = await yahooScreener(POPULAR_SYMBOLS);
12
+ // Apply filters
13
+ if (criteria.min_market_cap !== undefined) {
14
+ quotes = quotes.filter((q) => (q.marketCap ?? 0) >= criteria.min_market_cap);
15
+ }
16
+ if (criteria.max_market_cap !== undefined) {
17
+ quotes = quotes.filter((q) => (q.marketCap ?? Infinity) <= criteria.max_market_cap);
18
+ }
19
+ if (criteria.min_pe !== undefined) {
20
+ quotes = quotes.filter((q) => q.trailingPE != null && q.trailingPE >= criteria.min_pe);
21
+ }
22
+ if (criteria.max_pe !== undefined) {
23
+ quotes = quotes.filter((q) => q.trailingPE != null && q.trailingPE <= criteria.max_pe);
24
+ }
25
+ if (criteria.sector !== undefined) {
26
+ const sectorLower = criteria.sector.toLowerCase();
27
+ quotes = quotes.filter((q) => (q.sector ?? "").toLowerCase().includes(sectorLower) ||
28
+ (q.industry ?? "").toLowerCase().includes(sectorLower));
29
+ }
30
+ if (criteria.min_volume !== undefined) {
31
+ quotes = quotes.filter((q) => (q.regularMarketVolume ?? 0) >= criteria.min_volume);
32
+ }
33
+ if (criteria.min_price !== undefined) {
34
+ quotes = quotes.filter((q) => (q.regularMarketPrice ?? 0) >= criteria.min_price);
35
+ }
36
+ if (criteria.max_price !== undefined) {
37
+ quotes = quotes.filter((q) => (q.regularMarketPrice ?? Infinity) <= criteria.max_price);
38
+ }
39
+ // Sort by market cap descending
40
+ quotes.sort((a, b) => (b.marketCap ?? 0) - (a.marketCap ?? 0));
41
+ // Limit results
42
+ const limit = criteria.limit ?? 25;
43
+ const total = quotes.length;
44
+ quotes = quotes.slice(0, limit);
45
+ return formatScreenResults(quotes, criteria, total);
46
+ }
47
+ function formatScreenResults(quotes, criteria, totalMatches) {
48
+ const lines = [];
49
+ lines.push("# Stock Screener Results");
50
+ lines.push("");
51
+ // Filters applied
52
+ const filters = [];
53
+ if (criteria.min_market_cap)
54
+ filters.push(`Min Mkt Cap: ${formatCurrency(criteria.min_market_cap)}`);
55
+ if (criteria.max_market_cap)
56
+ filters.push(`Max Mkt Cap: ${formatCurrency(criteria.max_market_cap)}`);
57
+ if (criteria.min_pe)
58
+ filters.push(`Min P/E: ${criteria.min_pe}`);
59
+ if (criteria.max_pe)
60
+ filters.push(`Max P/E: ${criteria.max_pe}`);
61
+ if (criteria.sector)
62
+ filters.push(`Sector: ${criteria.sector}`);
63
+ if (criteria.min_volume)
64
+ filters.push(`Min Volume: ${formatVolume(criteria.min_volume)}`);
65
+ if (criteria.min_price)
66
+ filters.push(`Min Price: $${criteria.min_price}`);
67
+ if (criteria.max_price)
68
+ filters.push(`Max Price: $${criteria.max_price}`);
69
+ if (filters.length > 0) {
70
+ lines.push(`**Filters:** ${filters.join(" | ")}`);
71
+ }
72
+ else {
73
+ lines.push("**Filters:** None (showing full universe)");
74
+ }
75
+ lines.push(`**Matches:** ${totalMatches} stocks (showing top ${quotes.length})`);
76
+ lines.push("");
77
+ if (quotes.length === 0) {
78
+ lines.push("_No stocks match the specified criteria. Try broadening your filters._");
79
+ return lines.join("\n");
80
+ }
81
+ // Results table
82
+ lines.push("| Symbol | Name | Price | Chg% | Volume | Mkt Cap | P/E | Sector |");
83
+ lines.push("|--------|------|-------|------|--------|---------|-----|--------|");
84
+ for (const q of quotes) {
85
+ const price = q.regularMarketPrice?.toFixed(2) ?? "N/A";
86
+ const changePct = q.regularMarketChangePercent != null
87
+ ? `${q.regularMarketChangePercent >= 0 ? "+" : ""}${q.regularMarketChangePercent.toFixed(2)}%`
88
+ : "N/A";
89
+ const vol = q.regularMarketVolume ? formatVolume(q.regularMarketVolume) : "N/A";
90
+ const cap = q.marketCap ? formatCurrency(q.marketCap) : "N/A";
91
+ const pe = q.trailingPE?.toFixed(1) ?? "N/A";
92
+ const name = (q.shortName ?? q.longName ?? q.symbol).slice(0, 25);
93
+ const sector = q.sector ?? "--";
94
+ lines.push(`| ${q.symbol} | ${name} | $${price} | ${changePct} | ${vol} | ${cap} | ${pe} | ${sector} |`);
95
+ }
96
+ lines.push("");
97
+ // Quick stats
98
+ const withPE = quotes.filter((q) => q.trailingPE != null);
99
+ if (withPE.length > 0) {
100
+ const avgPE = withPE.reduce((s, q) => s + q.trailingPE, 0) / withPE.length;
101
+ const minPE = Math.min(...withPE.map((q) => q.trailingPE));
102
+ const maxPE = Math.max(...withPE.map((q) => q.trailingPE));
103
+ lines.push("## P/E Statistics");
104
+ lines.push("");
105
+ lines.push(`- Average P/E: ${avgPE.toFixed(1)}`);
106
+ lines.push(`- P/E Range: ${minPE.toFixed(1)} - ${maxPE.toFixed(1)}`);
107
+ lines.push("");
108
+ }
109
+ // Top gainers/losers in results
110
+ const sorted = [...quotes].filter((q) => q.regularMarketChangePercent != null);
111
+ if (sorted.length >= 3) {
112
+ sorted.sort((a, b) => (b.regularMarketChangePercent ?? 0) - (a.regularMarketChangePercent ?? 0));
113
+ const top3 = sorted.slice(0, 3);
114
+ const bottom3 = sorted.slice(-3).reverse();
115
+ lines.push("## Notable Movers (within results)");
116
+ lines.push("");
117
+ lines.push("**Top gainers:** " + top3.map((q) => `${q.symbol} (${q.regularMarketChangePercent >= 0 ? "+" : ""}${q.regularMarketChangePercent.toFixed(2)}%)`).join(", "));
118
+ lines.push("**Top losers:** " + bottom3.map((q) => `${q.symbol} (${q.regularMarketChangePercent.toFixed(2)}%)`).join(", "));
119
+ }
120
+ return lines.join("\n");
121
+ }
122
+ //# sourceMappingURL=screen_stocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen_stocks.js","sourceRoot":"","sources":["../../src/tools/screen_stocks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Shared types for the Market Data Analyzer MCP server.
3
+ */
4
+ export interface YahooQuote {
5
+ symbol: string;
6
+ shortName?: string;
7
+ longName?: string;
8
+ regularMarketPrice?: number;
9
+ regularMarketChange?: number;
10
+ regularMarketChangePercent?: number;
11
+ regularMarketVolume?: number;
12
+ regularMarketDayHigh?: number;
13
+ regularMarketDayLow?: number;
14
+ regularMarketOpen?: number;
15
+ regularMarketPreviousClose?: number;
16
+ fiftyTwoWeekHigh?: number;
17
+ fiftyTwoWeekLow?: number;
18
+ fiftyDayAverage?: number;
19
+ twoHundredDayAverage?: number;
20
+ marketCap?: number;
21
+ trailingPE?: number;
22
+ forwardPE?: number;
23
+ priceToBook?: number;
24
+ trailingAnnualDividendYield?: number;
25
+ sector?: string;
26
+ industry?: string;
27
+ averageDailyVolume3Month?: number;
28
+ }
29
+ export interface YahooChartPoint {
30
+ date: number;
31
+ open: number;
32
+ high: number;
33
+ low: number;
34
+ close: number;
35
+ volume: number;
36
+ }
37
+ export interface CoinGeckoMarketData {
38
+ id: string;
39
+ symbol: string;
40
+ name: string;
41
+ current_price: number;
42
+ market_cap: number;
43
+ market_cap_rank: number;
44
+ total_volume: number;
45
+ high_24h: number;
46
+ low_24h: number;
47
+ price_change_24h: number;
48
+ price_change_percentage_24h: number;
49
+ price_change_percentage_7d_in_currency?: number;
50
+ price_change_percentage_30d_in_currency?: number;
51
+ market_cap_change_percentage_24h: number;
52
+ circulating_supply: number;
53
+ total_supply: number | null;
54
+ max_supply: number | null;
55
+ ath: number;
56
+ ath_change_percentage: number;
57
+ ath_date: string;
58
+ atl: number;
59
+ atl_change_percentage: number;
60
+ atl_date: string;
61
+ }
62
+ export interface CoinGeckoGlobalData {
63
+ total_market_cap: Record<string, number>;
64
+ total_volume: Record<string, number>;
65
+ market_cap_percentage: Record<string, number>;
66
+ market_cap_change_percentage_24h_usd: number;
67
+ active_cryptocurrencies: number;
68
+ }
69
+ export interface StockAnalysis {
70
+ symbol: string;
71
+ name: string;
72
+ price: number;
73
+ change: number;
74
+ changePercent: number;
75
+ volume: number;
76
+ marketCap: number;
77
+ peRatio: number | null;
78
+ high52w: number;
79
+ low52w: number;
80
+ sma20: number | null;
81
+ sma50: number | null;
82
+ sma200: number | null;
83
+ rsi14: number | null;
84
+ macd: {
85
+ line: number;
86
+ signal: number;
87
+ histogram: number;
88
+ } | null;
89
+ supportLevels: number[];
90
+ resistanceLevels: number[];
91
+ priceHistory: YahooChartPoint[];
92
+ }
93
+ export interface PortfolioPosition {
94
+ symbol: string;
95
+ shares: number;
96
+ avgCost: number;
97
+ currentPrice: number;
98
+ marketValue: number;
99
+ costBasis: number;
100
+ pnl: number;
101
+ pnlPercent: number;
102
+ allocationPercent: number;
103
+ }
104
+ export interface PortfolioAnalysis {
105
+ totalValue: number;
106
+ totalCost: number;
107
+ totalPnl: number;
108
+ totalPnlPercent: number;
109
+ positions: PortfolioPosition[];
110
+ diversificationScore: number;
111
+ riskMetrics: {
112
+ concentrationRisk: string;
113
+ largestPosition: string;
114
+ largestPositionPct: number;
115
+ sectorBreakdown: Record<string, number>;
116
+ };
117
+ warnings: string[];
118
+ }
119
+ export interface ScreenerResult {
120
+ symbol: string;
121
+ name: string;
122
+ price: number;
123
+ changePercent: number;
124
+ marketCap: number;
125
+ peRatio: number | null;
126
+ volume: number;
127
+ sector?: string;
128
+ }
129
+ export interface AssetComparison {
130
+ symbol: string;
131
+ name: string;
132
+ totalReturn: number;
133
+ annualizedReturn: number;
134
+ volatility: number;
135
+ sharpeRatio: number;
136
+ maxDrawdown: number;
137
+ currentPrice: number;
138
+ }
139
+ export interface CryptoAnalysisResult {
140
+ id: string;
141
+ symbol: string;
142
+ name: string;
143
+ price: number;
144
+ change24h: number;
145
+ changePct24h: number;
146
+ volume24h: number;
147
+ marketCap: number;
148
+ marketCapRank: number;
149
+ circulatingSupply: number;
150
+ totalSupply: number | null;
151
+ maxSupply: number | null;
152
+ ath: number;
153
+ athChangePct: number;
154
+ athDate: string;
155
+ dominance: number | null;
156
+ fearGreedApprox: string;
157
+ }
158
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Shared types for the Market Data Analyzer MCP server.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * API helpers for Yahoo Finance and CoinGecko free endpoints.
3
+ *
4
+ * Yahoo Finance: Uses the v8 finance quote/chart endpoints (publicly accessible).
5
+ * CoinGecko: Uses the free /api/v3 endpoints (no API key needed, rate-limited).
6
+ */
7
+ import type { YahooQuote, YahooChartPoint, CoinGeckoMarketData, CoinGeckoGlobalData } from "../types.js";
8
+ /**
9
+ * Fetch a quote for one or more symbols via Yahoo Finance v6 quote endpoint.
10
+ */
11
+ export declare function yahooQuote(symbols: string[]): Promise<YahooQuote[]>;
12
+ /**
13
+ * Fetch historical chart data from Yahoo Finance.
14
+ * @param symbol Ticker symbol
15
+ * @param range "1mo", "3mo", "6mo", "1y", "5y"
16
+ * @param interval "1d", "1wk", "1mo"
17
+ */
18
+ export declare function yahooChart(symbol: string, range?: string, interval?: string): Promise<YahooChartPoint[]>;
19
+ /**
20
+ * Screen stocks using Yahoo Finance's screener or quote list.
21
+ * Fetches quotes for a predefined set of popular tickers and filters them.
22
+ */
23
+ export declare function yahooScreener(symbols: string[]): Promise<YahooQuote[]>;
24
+ /**
25
+ * Fetch market data for one or more coins by ID.
26
+ */
27
+ export declare function coingeckoMarkets(ids: string[], vsCurrency?: string): Promise<CoinGeckoMarketData[]>;
28
+ /**
29
+ * Fetch global crypto market data.
30
+ */
31
+ export declare function coingeckoGlobal(): Promise<CoinGeckoGlobalData>;
32
+ /**
33
+ * Map common symbols to CoinGecko IDs.
34
+ */
35
+ export declare function symbolToCoinGeckoId(symbol: string): string;
36
+ export declare const POPULAR_SYMBOLS: string[];
37
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AA0BrB;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAgCzE;AAqCD;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAc,EACrB,QAAQ,GAAE,MAAa,GACtB,OAAO,CAAC,eAAe,EAAE,CAAC,CAgC5B;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,UAAU,EAAE,CAAC,CASvB;AAQD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EAAE,EACb,UAAU,GAAE,MAAc,GACzB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAShC;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAQpE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA2B1D;AAMD,eAAO,MAAM,eAAe,UAiB3B,CAAC"}