diff --git a/src/routes/stocks/[tickerID]/statistics/price-reaction/+page.svelte b/src/routes/stocks/[tickerID]/statistics/price-reaction/+page.svelte index 31a7fa33..8f5015a3 100644 --- a/src/routes/stocks/[tickerID]/statistics/price-reaction/+page.svelte +++ b/src/routes/stocks/[tickerID]/statistics/price-reaction/+page.svelte @@ -6,7 +6,40 @@ export let data; - let rawData = data?.getData || []; + let rawData = data?.getData?.history || []; + let earningsData = data?.getData?.stats || {}; + + // Calculate metrics + function calculateMetrics(data) { + if (!data || data.length === 0) + return { avgPriceImpact: 0, volatilityImpact: 0 }; + + const nextDayChanges = data + ?.map((item) => item?.forward_2_days_change_percent) + ?.filter((change) => change !== undefined); + + // Average price impact + const avgPriceImpact = + nextDayChanges?.reduce((sum, change) => sum + change, 0) / + nextDayChanges?.length; + + // Volatility impact (average absolute range) + const volatilityImpact = + data.reduce((sum, item) => { + if (item?.high && item?.low && item?.close) { + const range = ((item.high - item.low) / item.close) * 100; + return sum + range; + } + return sum; + }, 0) / data.length; + + return { + avgPriceImpact: avgPriceImpact?.toFixed(1), + volatilityImpact: volatilityImpact?.toFixed(1), + }; + } + + const metrics = calculateMetrics(rawData); function checkTime(timeString) { if (!timeString) { @@ -53,11 +86,119 @@ {#if rawData?.length !== 0 && rawData?.at(0)?.high !== undefined} -