@clawnch/clawncher-sdk 0.1.3 → 0.2.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.
@@ -0,0 +1,157 @@
1
+ /**
2
+ * ClawnchAnalytics — Price history aggregation and technical indicators.
3
+ *
4
+ * Builds OHLCV candles from on-chain swap events and computes basic
5
+ * technical indicators the agent can use for trading decisions.
6
+ *
7
+ * Indicators:
8
+ * - SMA (Simple Moving Average) — trend direction
9
+ * - EMA (Exponential Moving Average) — responsive trend
10
+ * - RSI (Relative Strength Index) — overbought/oversold
11
+ * - Bollinger Bands — volatility + mean reversion
12
+ * - VWAP (Volume-Weighted Average Price) — fair price
13
+ * - Volatility (annualized, from returns)
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const analytics = new ClawnchAnalytics();
18
+ *
19
+ * // Build candles from swap events
20
+ * const swaps = await watcher.getRecentSwaps(poolId, { fromBlock: 1000n });
21
+ * const candles = analytics.buildCandles(swaps, wethSide, '1h');
22
+ *
23
+ * // Compute indicators
24
+ * const sma20 = analytics.sma(candles, 20);
25
+ * const rsi14 = analytics.rsi(candles, 14);
26
+ * const bb = analytics.bollingerBands(candles, 20, 2);
27
+ *
28
+ * // Get a full analysis
29
+ * const analysis = analytics.analyze(candles);
30
+ * console.log(analysis.signal); // 'bullish' | 'bearish' | 'neutral'
31
+ * ```
32
+ */
33
+ import type { PoolSwapEvent } from './watcher.js';
34
+ export interface Candle {
35
+ /** Period start timestamp (ms) */
36
+ timestamp: number;
37
+ /** Opening price in ETH */
38
+ open: number;
39
+ /** Highest price in period */
40
+ high: number;
41
+ /** Lowest price in period */
42
+ low: number;
43
+ /** Closing price in ETH */
44
+ close: number;
45
+ /** Volume in ETH (absolute value of WETH side) */
46
+ volume: number;
47
+ /** Number of swaps in this candle */
48
+ swapCount: number;
49
+ }
50
+ export type CandleInterval = '5m' | '15m' | '1h' | '4h' | '1d';
51
+ export interface BollingerBand {
52
+ upper: number;
53
+ middle: number;
54
+ lower: number;
55
+ bandwidth: number;
56
+ }
57
+ export type Signal = 'strong_buy' | 'buy' | 'neutral' | 'sell' | 'strong_sell';
58
+ export interface MarketAnalysis {
59
+ /** Overall signal */
60
+ signal: Signal;
61
+ /** Signal strength 0-100 */
62
+ strength: number;
63
+ /** Individual indicator signals */
64
+ indicators: {
65
+ sma20: {
66
+ value: number;
67
+ signal: Signal;
68
+ };
69
+ sma50: {
70
+ value: number;
71
+ signal: Signal;
72
+ };
73
+ rsi14: {
74
+ value: number;
75
+ signal: Signal;
76
+ };
77
+ bollinger: {
78
+ band: BollingerBand;
79
+ signal: Signal;
80
+ };
81
+ vwap: {
82
+ value: number;
83
+ signal: Signal;
84
+ };
85
+ volatility: {
86
+ annualized: number;
87
+ signal: Signal;
88
+ };
89
+ };
90
+ /** Current price */
91
+ currentPrice: number;
92
+ /** Volume trend */
93
+ volumeTrend: 'increasing' | 'decreasing' | 'stable';
94
+ /** Human-readable summary for agent prompt */
95
+ summary: string;
96
+ }
97
+ export declare class ClawnchAnalytics {
98
+ /**
99
+ * Build OHLCV candles from raw swap events.
100
+ *
101
+ * @param swaps - Pool swap events (from ClawnchWatcher.getRecentSwaps)
102
+ * @param wethSide - Which side WETH is on in the pool (0 or 1)
103
+ * @param interval - Candle interval
104
+ * @param tokenDecimals - Token decimals (default 18)
105
+ * @returns Sorted candles (oldest first)
106
+ */
107
+ buildCandles(swaps: PoolSwapEvent[], wethSide: 0 | 1, interval?: CandleInterval, tokenDecimals?: number): Candle[];
108
+ /**
109
+ * Build candles from pre-priced data (e.g. from a price feed or manual entries).
110
+ * Useful when you already have timestamp + price data rather than raw swap events.
111
+ */
112
+ buildCandlesFromPrices(data: Array<{
113
+ timestamp: number;
114
+ price: number;
115
+ volume?: number;
116
+ }>, interval?: CandleInterval): Candle[];
117
+ /**
118
+ * Simple Moving Average over closing prices.
119
+ */
120
+ sma(candles: Candle[], period: number): number[];
121
+ /**
122
+ * Exponential Moving Average over closing prices.
123
+ */
124
+ ema(candles: Candle[], period: number): number[];
125
+ /**
126
+ * Relative Strength Index.
127
+ * RSI < 30 → oversold, RSI > 70 → overbought.
128
+ */
129
+ rsi(candles: Candle[], period?: number): number[];
130
+ /**
131
+ * Bollinger Bands (SMA ± k standard deviations).
132
+ */
133
+ bollingerBands(candles: Candle[], period?: number, k?: number): BollingerBand[];
134
+ /**
135
+ * Volume-Weighted Average Price.
136
+ */
137
+ vwap(candles: Candle[]): number;
138
+ /**
139
+ * Annualized volatility from closing prices.
140
+ * Uses log returns and scales to annual (assuming 24h candles for daily vol,
141
+ * or scaled by intervals per year).
142
+ */
143
+ volatility(candles: Candle[], interval?: CandleInterval): number;
144
+ /**
145
+ * Run all indicators and produce a combined signal + human summary.
146
+ */
147
+ analyze(candles: Candle[], interval?: CandleInterval): MarketAnalysis | null;
148
+ private smaFromValues;
149
+ private emaFromValues;
150
+ private signalFromSMA;
151
+ private signalFromRSI;
152
+ private signalFromBB;
153
+ private signalFromVWAP;
154
+ private signalFromVolatility;
155
+ private compositeSignal;
156
+ }
157
+ //# sourceMappingURL=analytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../src/analytics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,468 @@
1
+ /**
2
+ * ClawnchAnalytics — Price history aggregation and technical indicators.
3
+ *
4
+ * Builds OHLCV candles from on-chain swap events and computes basic
5
+ * technical indicators the agent can use for trading decisions.
6
+ *
7
+ * Indicators:
8
+ * - SMA (Simple Moving Average) — trend direction
9
+ * - EMA (Exponential Moving Average) — responsive trend
10
+ * - RSI (Relative Strength Index) — overbought/oversold
11
+ * - Bollinger Bands — volatility + mean reversion
12
+ * - VWAP (Volume-Weighted Average Price) — fair price
13
+ * - Volatility (annualized, from returns)
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const analytics = new ClawnchAnalytics();
18
+ *
19
+ * // Build candles from swap events
20
+ * const swaps = await watcher.getRecentSwaps(poolId, { fromBlock: 1000n });
21
+ * const candles = analytics.buildCandles(swaps, wethSide, '1h');
22
+ *
23
+ * // Compute indicators
24
+ * const sma20 = analytics.sma(candles, 20);
25
+ * const rsi14 = analytics.rsi(candles, 14);
26
+ * const bb = analytics.bollingerBands(candles, 20, 2);
27
+ *
28
+ * // Get a full analysis
29
+ * const analysis = analytics.analyze(candles);
30
+ * console.log(analysis.signal); // 'bullish' | 'bearish' | 'neutral'
31
+ * ```
32
+ */
33
+ // ============================================================================
34
+ // Interval durations
35
+ // ============================================================================
36
+ const INTERVAL_MS = {
37
+ '5m': 5 * 60 * 1000,
38
+ '15m': 15 * 60 * 1000,
39
+ '1h': 60 * 60 * 1000,
40
+ '4h': 4 * 60 * 60 * 1000,
41
+ '1d': 24 * 60 * 60 * 1000,
42
+ };
43
+ // ============================================================================
44
+ // ClawnchAnalytics
45
+ // ============================================================================
46
+ export class ClawnchAnalytics {
47
+ // --------------------------------------------------------------------------
48
+ // Candle construction
49
+ // --------------------------------------------------------------------------
50
+ /**
51
+ * Build OHLCV candles from raw swap events.
52
+ *
53
+ * @param swaps - Pool swap events (from ClawnchWatcher.getRecentSwaps)
54
+ * @param wethSide - Which side WETH is on in the pool (0 or 1)
55
+ * @param interval - Candle interval
56
+ * @param tokenDecimals - Token decimals (default 18)
57
+ * @returns Sorted candles (oldest first)
58
+ */
59
+ buildCandles(swaps, wethSide, interval = '1h', tokenDecimals = 18) {
60
+ if (swaps.length === 0)
61
+ return [];
62
+ const intervalMs = INTERVAL_MS[interval];
63
+ const priced = [];
64
+ for (const swap of swaps) {
65
+ // Extract WETH and token amounts
66
+ const amount0 = Number(swap.amount0) / 1e18;
67
+ const amount1 = Number(swap.amount1) / (10 ** tokenDecimals);
68
+ let wethAmount;
69
+ let tokenAmount;
70
+ if (wethSide === 0) {
71
+ wethAmount = Math.abs(amount0);
72
+ tokenAmount = Math.abs(amount1);
73
+ }
74
+ else {
75
+ wethAmount = Math.abs(amount1);
76
+ tokenAmount = Math.abs(amount0);
77
+ }
78
+ // Price = WETH per token
79
+ if (tokenAmount === 0)
80
+ continue;
81
+ const price = wethAmount / tokenAmount;
82
+ if (!isFinite(price) || price <= 0)
83
+ continue;
84
+ // We don't have timestamps on swap events (only block numbers).
85
+ // Use blockNumber as a proxy — caller should provide events from a known time range.
86
+ // For now, approximate timestamp from block number (Base ~2s blocks).
87
+ // Better: caller provides a block-to-timestamp mapping.
88
+ const approxTimestamp = Number(swap.blockNumber) * 2000; // rough approximation
89
+ priced.push({
90
+ timestamp: approxTimestamp,
91
+ price,
92
+ volume: wethAmount,
93
+ });
94
+ }
95
+ if (priced.length === 0)
96
+ return [];
97
+ // Sort by timestamp
98
+ priced.sort((a, b) => a.timestamp - b.timestamp);
99
+ // Group into candles
100
+ const candles = [];
101
+ let currentBucket = Math.floor(priced[0].timestamp / intervalMs) * intervalMs;
102
+ let candle = {
103
+ timestamp: currentBucket,
104
+ open: priced[0].price,
105
+ high: priced[0].price,
106
+ low: priced[0].price,
107
+ close: priced[0].price,
108
+ volume: 0,
109
+ swapCount: 0,
110
+ };
111
+ for (const p of priced) {
112
+ const bucket = Math.floor(p.timestamp / intervalMs) * intervalMs;
113
+ if (bucket !== currentBucket) {
114
+ candles.push(candle);
115
+ currentBucket = bucket;
116
+ candle = {
117
+ timestamp: bucket,
118
+ open: p.price,
119
+ high: p.price,
120
+ low: p.price,
121
+ close: p.price,
122
+ volume: 0,
123
+ swapCount: 0,
124
+ };
125
+ }
126
+ candle.high = Math.max(candle.high, p.price);
127
+ candle.low = Math.min(candle.low, p.price);
128
+ candle.close = p.price;
129
+ candle.volume += p.volume;
130
+ candle.swapCount++;
131
+ }
132
+ candles.push(candle); // push the last candle
133
+ return candles;
134
+ }
135
+ /**
136
+ * Build candles from pre-priced data (e.g. from a price feed or manual entries).
137
+ * Useful when you already have timestamp + price data rather than raw swap events.
138
+ */
139
+ buildCandlesFromPrices(data, interval = '1h') {
140
+ if (data.length === 0)
141
+ return [];
142
+ const intervalMs = INTERVAL_MS[interval];
143
+ const sorted = [...data].sort((a, b) => a.timestamp - b.timestamp);
144
+ const candles = [];
145
+ let currentBucket = Math.floor(sorted[0].timestamp / intervalMs) * intervalMs;
146
+ let candle = {
147
+ timestamp: currentBucket,
148
+ open: sorted[0].price,
149
+ high: sorted[0].price,
150
+ low: sorted[0].price,
151
+ close: sorted[0].price,
152
+ volume: 0,
153
+ swapCount: 0,
154
+ };
155
+ for (const p of sorted) {
156
+ const bucket = Math.floor(p.timestamp / intervalMs) * intervalMs;
157
+ if (bucket !== currentBucket) {
158
+ candles.push(candle);
159
+ currentBucket = bucket;
160
+ candle = {
161
+ timestamp: bucket,
162
+ open: p.price,
163
+ high: p.price,
164
+ low: p.price,
165
+ close: p.price,
166
+ volume: 0,
167
+ swapCount: 0,
168
+ };
169
+ }
170
+ candle.high = Math.max(candle.high, p.price);
171
+ candle.low = Math.min(candle.low, p.price);
172
+ candle.close = p.price;
173
+ candle.volume += p.volume ?? 0;
174
+ candle.swapCount++;
175
+ }
176
+ candles.push(candle);
177
+ return candles;
178
+ }
179
+ // --------------------------------------------------------------------------
180
+ // Technical indicators
181
+ // --------------------------------------------------------------------------
182
+ /**
183
+ * Simple Moving Average over closing prices.
184
+ */
185
+ sma(candles, period) {
186
+ const closes = candles.map(c => c.close);
187
+ return this.smaFromValues(closes, period);
188
+ }
189
+ /**
190
+ * Exponential Moving Average over closing prices.
191
+ */
192
+ ema(candles, period) {
193
+ const closes = candles.map(c => c.close);
194
+ return this.emaFromValues(closes, period);
195
+ }
196
+ /**
197
+ * Relative Strength Index.
198
+ * RSI < 30 → oversold, RSI > 70 → overbought.
199
+ */
200
+ rsi(candles, period = 14) {
201
+ const closes = candles.map(c => c.close);
202
+ if (closes.length < period + 1)
203
+ return [];
204
+ const changes = [];
205
+ for (let i = 1; i < closes.length; i++) {
206
+ changes.push(closes[i] - closes[i - 1]);
207
+ }
208
+ const result = [];
209
+ // Initial averages
210
+ let avgGain = 0;
211
+ let avgLoss = 0;
212
+ for (let i = 0; i < period; i++) {
213
+ if (changes[i] >= 0)
214
+ avgGain += changes[i];
215
+ else
216
+ avgLoss += Math.abs(changes[i]);
217
+ }
218
+ avgGain /= period;
219
+ avgLoss /= period;
220
+ const rs0 = avgLoss === 0 ? 100 : avgGain / avgLoss;
221
+ result.push(100 - 100 / (1 + rs0));
222
+ // Subsequent values (smoothed)
223
+ for (let i = period; i < changes.length; i++) {
224
+ const gain = changes[i] >= 0 ? changes[i] : 0;
225
+ const loss = changes[i] < 0 ? Math.abs(changes[i]) : 0;
226
+ avgGain = (avgGain * (period - 1) + gain) / period;
227
+ avgLoss = (avgLoss * (period - 1) + loss) / period;
228
+ const rs = avgLoss === 0 ? 100 : avgGain / avgLoss;
229
+ result.push(100 - 100 / (1 + rs));
230
+ }
231
+ return result;
232
+ }
233
+ /**
234
+ * Bollinger Bands (SMA ± k standard deviations).
235
+ */
236
+ bollingerBands(candles, period = 20, k = 2) {
237
+ const closes = candles.map(c => c.close);
238
+ if (closes.length < period)
239
+ return [];
240
+ const result = [];
241
+ for (let i = period - 1; i < closes.length; i++) {
242
+ const slice = closes.slice(i - period + 1, i + 1);
243
+ const mean = slice.reduce((a, b) => a + b, 0) / period;
244
+ const variance = slice.reduce((sum, v) => sum + (v - mean) ** 2, 0) / period;
245
+ const stdDev = Math.sqrt(variance);
246
+ result.push({
247
+ upper: mean + k * stdDev,
248
+ middle: mean,
249
+ lower: mean - k * stdDev,
250
+ bandwidth: stdDev > 0 ? (2 * k * stdDev) / mean : 0,
251
+ });
252
+ }
253
+ return result;
254
+ }
255
+ /**
256
+ * Volume-Weighted Average Price.
257
+ */
258
+ vwap(candles) {
259
+ let totalPriceVolume = 0;
260
+ let totalVolume = 0;
261
+ for (const c of candles) {
262
+ const typicalPrice = (c.high + c.low + c.close) / 3;
263
+ totalPriceVolume += typicalPrice * c.volume;
264
+ totalVolume += c.volume;
265
+ }
266
+ return totalVolume > 0 ? totalPriceVolume / totalVolume : 0;
267
+ }
268
+ /**
269
+ * Annualized volatility from closing prices.
270
+ * Uses log returns and scales to annual (assuming 24h candles for daily vol,
271
+ * or scaled by intervals per year).
272
+ */
273
+ volatility(candles, interval = '1h') {
274
+ if (candles.length < 2)
275
+ return 0;
276
+ const closes = candles.map(c => c.close);
277
+ const logReturns = [];
278
+ for (let i = 1; i < closes.length; i++) {
279
+ if (closes[i - 1] > 0 && closes[i] > 0) {
280
+ logReturns.push(Math.log(closes[i] / closes[i - 1]));
281
+ }
282
+ }
283
+ if (logReturns.length === 0)
284
+ return 0;
285
+ const mean = logReturns.reduce((a, b) => a + b, 0) / logReturns.length;
286
+ const variance = logReturns.reduce((sum, r) => sum + (r - mean) ** 2, 0) / logReturns.length;
287
+ const stdDev = Math.sqrt(variance);
288
+ // Annualize: multiply by sqrt(periods per year)
289
+ const intervalMs = INTERVAL_MS[interval];
290
+ const periodsPerYear = (365.25 * 24 * 60 * 60 * 1000) / intervalMs;
291
+ return stdDev * Math.sqrt(periodsPerYear);
292
+ }
293
+ // --------------------------------------------------------------------------
294
+ // Full analysis
295
+ // --------------------------------------------------------------------------
296
+ /**
297
+ * Run all indicators and produce a combined signal + human summary.
298
+ */
299
+ analyze(candles, interval = '1h') {
300
+ if (candles.length < 50) {
301
+ // Not enough data for meaningful analysis
302
+ return null;
303
+ }
304
+ const currentPrice = candles[candles.length - 1].close;
305
+ const sma20Values = this.sma(candles, 20);
306
+ const sma50Values = this.sma(candles, 50);
307
+ const rsi14Values = this.rsi(candles, 14);
308
+ const bbValues = this.bollingerBands(candles, 20, 2);
309
+ const vwapValue = this.vwap(candles.slice(-20)); // VWAP over recent candles
310
+ const vol = this.volatility(candles, interval);
311
+ const sma20 = sma20Values[sma20Values.length - 1] ?? 0;
312
+ const sma50 = sma50Values[sma50Values.length - 1] ?? 0;
313
+ const rsi14 = rsi14Values[rsi14Values.length - 1] ?? 50;
314
+ const bb = bbValues[bbValues.length - 1] ?? { upper: 0, middle: 0, lower: 0, bandwidth: 0 };
315
+ // Individual signals
316
+ const sma20Signal = this.signalFromSMA(currentPrice, sma20);
317
+ const sma50Signal = this.signalFromSMA(currentPrice, sma50);
318
+ const rsiSignal = this.signalFromRSI(rsi14);
319
+ const bbSignal = this.signalFromBB(currentPrice, bb);
320
+ const vwapSignal = this.signalFromVWAP(currentPrice, vwapValue);
321
+ const volSignal = this.signalFromVolatility(vol);
322
+ // Volume trend
323
+ const recentVol = candles.slice(-10).reduce((s, c) => s + c.volume, 0);
324
+ const olderVol = candles.slice(-20, -10).reduce((s, c) => s + c.volume, 0);
325
+ const volumeTrend = olderVol > 0 && recentVol > olderVol * 1.3 ? 'increasing' :
326
+ olderVol > 0 && recentVol < olderVol * 0.7 ? 'decreasing' : 'stable';
327
+ // Composite signal
328
+ const signals = [sma20Signal, sma50Signal, rsiSignal, bbSignal, vwapSignal];
329
+ const { signal, strength } = this.compositeSignal(signals);
330
+ // Summary text
331
+ const summaryLines = [];
332
+ summaryLines.push(`Price: ${currentPrice.toExponential(4)} ETH`);
333
+ summaryLines.push(`SMA20: ${sma20.toExponential(4)} (${sma20Signal}) | SMA50: ${sma50.toExponential(4)} (${sma50Signal})`);
334
+ summaryLines.push(`RSI(14): ${rsi14.toFixed(1)} (${rsiSignal})`);
335
+ summaryLines.push(`BB: [${bb.lower.toExponential(3)} — ${bb.middle.toExponential(3)} — ${bb.upper.toExponential(3)}] (${bbSignal})`);
336
+ summaryLines.push(`VWAP: ${vwapValue.toExponential(4)} (${vwapSignal}) | Vol: ${(vol * 100).toFixed(0)}% ann. (${volSignal})`);
337
+ summaryLines.push(`Volume: ${volumeTrend}`);
338
+ summaryLines.push(`Signal: ${signal.toUpperCase()} (strength: ${strength}/100)`);
339
+ return {
340
+ signal,
341
+ strength,
342
+ indicators: {
343
+ sma20: { value: sma20, signal: sma20Signal },
344
+ sma50: { value: sma50, signal: sma50Signal },
345
+ rsi14: { value: rsi14, signal: rsiSignal },
346
+ bollinger: { band: bb, signal: bbSignal },
347
+ vwap: { value: vwapValue, signal: vwapSignal },
348
+ volatility: { annualized: vol, signal: volSignal },
349
+ },
350
+ currentPrice,
351
+ volumeTrend,
352
+ summary: summaryLines.join('\n'),
353
+ };
354
+ }
355
+ // --------------------------------------------------------------------------
356
+ // Internal helpers
357
+ // --------------------------------------------------------------------------
358
+ smaFromValues(values, period) {
359
+ if (values.length < period)
360
+ return [];
361
+ const result = [];
362
+ let sum = 0;
363
+ for (let i = 0; i < period; i++)
364
+ sum += values[i];
365
+ result.push(sum / period);
366
+ for (let i = period; i < values.length; i++) {
367
+ sum += values[i] - values[i - period];
368
+ result.push(sum / period);
369
+ }
370
+ return result;
371
+ }
372
+ emaFromValues(values, period) {
373
+ if (values.length < period)
374
+ return [];
375
+ const k = 2 / (period + 1);
376
+ // Seed with SMA
377
+ let ema = values.slice(0, period).reduce((a, b) => a + b, 0) / period;
378
+ const result = [ema];
379
+ for (let i = period; i < values.length; i++) {
380
+ ema = values[i] * k + ema * (1 - k);
381
+ result.push(ema);
382
+ }
383
+ return result;
384
+ }
385
+ signalFromSMA(price, sma) {
386
+ if (sma === 0)
387
+ return 'neutral';
388
+ const pctAbove = ((price - sma) / sma) * 100;
389
+ if (pctAbove > 10)
390
+ return 'strong_buy';
391
+ if (pctAbove > 2)
392
+ return 'buy';
393
+ if (pctAbove < -10)
394
+ return 'strong_sell';
395
+ if (pctAbove < -2)
396
+ return 'sell';
397
+ return 'neutral';
398
+ }
399
+ signalFromRSI(rsi) {
400
+ if (rsi < 20)
401
+ return 'strong_buy';
402
+ if (rsi < 30)
403
+ return 'buy';
404
+ if (rsi > 80)
405
+ return 'strong_sell';
406
+ if (rsi > 70)
407
+ return 'sell';
408
+ return 'neutral';
409
+ }
410
+ signalFromBB(price, bb) {
411
+ if (bb.upper === bb.lower)
412
+ return 'neutral';
413
+ const position = (price - bb.lower) / (bb.upper - bb.lower); // 0 = lower band, 1 = upper
414
+ if (position < 0.05)
415
+ return 'strong_buy'; // below lower band
416
+ if (position < 0.2)
417
+ return 'buy';
418
+ if (position > 0.95)
419
+ return 'strong_sell'; // above upper band
420
+ if (position > 0.8)
421
+ return 'sell';
422
+ return 'neutral';
423
+ }
424
+ signalFromVWAP(price, vwap) {
425
+ if (vwap === 0)
426
+ return 'neutral';
427
+ const pctDiff = ((price - vwap) / vwap) * 100;
428
+ if (pctDiff < -5)
429
+ return 'buy'; // trading below fair value
430
+ if (pctDiff > 5)
431
+ return 'sell'; // trading above fair value
432
+ return 'neutral';
433
+ }
434
+ signalFromVolatility(vol) {
435
+ // High volatility = caution (wider stops needed)
436
+ if (vol > 5)
437
+ return 'sell'; // extremely volatile, reduce exposure
438
+ if (vol > 3)
439
+ return 'neutral';
440
+ return 'buy'; // low vol, ok to take positions
441
+ }
442
+ compositeSignal(signals) {
443
+ const scores = {
444
+ strong_buy: 2,
445
+ buy: 1,
446
+ neutral: 0,
447
+ sell: -1,
448
+ strong_sell: -2,
449
+ };
450
+ const totalScore = signals.reduce((sum, s) => sum + scores[s], 0);
451
+ const maxPossible = signals.length * 2;
452
+ const normalized = maxPossible > 0 ? totalScore / maxPossible : 0; // -1 to 1
453
+ const strength = Math.round(Math.abs(normalized) * 100);
454
+ let signal;
455
+ if (normalized > 0.5)
456
+ signal = 'strong_buy';
457
+ else if (normalized > 0.15)
458
+ signal = 'buy';
459
+ else if (normalized < -0.5)
460
+ signal = 'strong_sell';
461
+ else if (normalized < -0.15)
462
+ signal = 'sell';
463
+ else
464
+ signal = 'neutral';
465
+ return { signal, strength };
466
+ }
467
+ }
468
+ //# sourceMappingURL=analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../src/analytics.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"api-deployer.d.ts","sourceRoot":"","sources":["../src/api-deployer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,EACL,KAAK,OAAO,EAQb,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,eAAe,EAGf,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EAEf,MAAM,yBAAyB,CAAC;AAejC,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;IACjE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,MAAM,EAAE,iBAAiB;IA8BrC;;;;;;;;OAQG;WACU,QAAQ,CACnB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC;IAoD1B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC;IAQvC;;;;;;;;OAQG;IACG,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAgChE;;OAEG;IACG,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAU5D;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAc1C;;;;;;;;;;;;;;OAcG;IACG,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA6BnE;;;;;;;;;;OAUG;IACG,YAAY,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAwDzE;;OAEG;YACW,UAAU;CAiDzB"}
1
+ {"version":3,"file":"api-deployer.d.ts","sourceRoot":"","sources":["../src/api-deployer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,EACL,KAAK,OAAO,EAQb,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,eAAe,EAGf,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EAEf,MAAM,yBAAyB,CAAC;AAejC,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;IACjE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,MAAM,EAAE,iBAAiB;IA8BrC;;;;;;;;OAQG;WACU,QAAQ,CACnB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC;IAoD1B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC;IAQvC;;;;;;;;OAQG;IACG,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAiChE;;OAEG;IACG,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAU5D;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAc1C;;;;;;;;;;;;;;OAcG;IACG,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA6BnE;;;;;;;;;;OAUG;IACG,YAAY,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAwDzE;;OAEG;YACW,UAAU;CAmDzB"}