Skip to main content
Glama

get_sector_correlation_analysis

Analyze sector performance correlations and market trends to identify relationships in the Spanish stock exchange over a specified period.

Instructions

Analyze sector performance correlations and market trends

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to analyze

Implementation Reference

  • Core handler function implementing the sector correlation analysis logic: groups companies by sector, computes performance metrics (market cap, PE ratios), sorts sectors, and calculates market concentration index.
    async getSectorCorrelationAnalysis(days: number = 30): Promise<any> { const companies = await this.db.getAllCompanies(); // Group companies by sector const sectorMap = new Map(); companies.forEach(company => { if (!company.sector) return; if (!sectorMap.has(company.sector)) { sectorMap.set(company.sector, []); } sectorMap.get(company.sector).push(company); }); // Calculate sector performance metrics const sectorPerformance = []; for (const [sector, sectorCompanies] of sectorMap.entries()) { let totalMarketCap = 0; let companiesWithData = 0; let avgPE = 0; let peCount = 0; sectorCompanies.forEach(company => { if (company.market_cap) { totalMarketCap += company.market_cap; companiesWithData++; } const pe = company.price_to_earnings || company.pe_ratio; if (pe) { avgPE += pe; peCount++; } }); sectorPerformance.push({ sector: sector, company_count: sectorCompanies.length, total_market_cap: totalMarketCap, avg_market_cap: companiesWithData > 0 ? totalMarketCap / companiesWithData : 0, avg_pe_ratio: peCount > 0 ? avgPE / peCount : null, companies: sectorCompanies.slice(0, 5).map(c => ({ symbol: c.symbol, name: c.name, market_cap: c.market_cap })) }); } // Sort by total market cap sectorPerformance.sort((a, b) => b.total_market_cap - a.total_market_cap); return { period_days: days, sector_performance: sectorPerformance, total_sectors: sectorPerformance.length, largest_sector: sectorPerformance[0]?.sector || 'Unknown', market_concentration: this.calculateMarketConcentration(sectorPerformance) }; }
  • Dispatch handler in main server that routes tool calls to the AnalyticsManager's getSectorCorrelationAnalysis method.
    case 'get_sector_correlation_analysis': result = await this.analytics.getSectorCorrelationAnalysis((args as any)?.days || 30); break;
  • src/index.ts:346-358 (registration)
    Tool registration including name, description, and input schema definition in the listTools response.
    name: 'get_sector_correlation_analysis', description: 'Analyze sector performance correlations and market trends', inputSchema: { type: 'object', properties: { days: { type: 'number', description: 'Number of days to analyze', default: 30, }, }, }, },
  • Supporting helper function that calculates market concentration using Herfindahl-Hirschman Index (HHI) from sector performance data.
    private calculateMarketConcentration(sectorPerformance: any[]): any { const totalMarketCap = sectorPerformance.reduce((sum, sector) => sum + sector.total_market_cap, 0); if (totalMarketCap === 0) return { hhi_index: 0, concentration_level: 'unknown' }; // Calculate Herfindahl-Hirschman Index const hhi = sectorPerformance.reduce((sum, sector) => { const share = sector.total_market_cap / totalMarketCap; return sum + (share * share * 10000); // HHI scale }, 0); let concentrationLevel; if (hhi > 2500) concentrationLevel = 'highly_concentrated'; else if (hhi > 1500) concentrationLevel = 'moderately_concentrated'; else concentrationLevel = 'competitive'; return { hhi_index: Math.round(hhi), concentration_level: concentrationLevel, top_3_market_share: sectorPerformance.slice(0, 3).reduce((sum, sector) => sum + (sector.total_market_cap / totalMarketCap), 0) * 100 }; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/anbrme/ibex35-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server