clodds 1.2.9 → 1.4.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.
- package/dist/skills/bundled/acp/SKILL.md +188 -0
- package/dist/skills/bundled/acp/index.d.ts +0 -3
- package/dist/skills/bundled/acp/index.js +1 -1
- package/dist/skills/bundled/acp/index.js.map +1 -1
- package/dist/skills/bundled/agentbets/SKILL.md +19 -0
- package/dist/skills/bundled/agentbets/index.js +1 -1
- package/dist/skills/bundled/agentbets/index.js.map +1 -1
- package/dist/skills/bundled/ai-strategy/SKILL.md +111 -0
- package/dist/skills/bundled/ai-strategy/index.js +1 -1
- package/dist/skills/bundled/ai-strategy/index.js.map +1 -1
- package/dist/skills/bundled/alerts/SKILL.md +87 -0
- package/dist/skills/bundled/analytics/SKILL.md +252 -0
- package/dist/skills/bundled/analytics/index.js +2 -2
- package/dist/skills/bundled/analytics/index.js.map +1 -1
- package/dist/skills/bundled/arbitrage/SKILL.md +287 -0
- package/dist/skills/bundled/arbitrage/index.js +6 -1
- package/dist/skills/bundled/arbitrage/index.js.map +1 -1
- package/dist/skills/bundled/auto-reply/SKILL.md +285 -0
- package/dist/skills/bundled/auto-reply/index.js +2 -2
- package/dist/skills/bundled/auto-reply/index.js.map +1 -1
- package/dist/skills/bundled/automation/SKILL.md +242 -0
- package/dist/skills/bundled/automation/index.js +2 -2
- package/dist/skills/bundled/automation/index.js.map +1 -1
- package/dist/skills/bundled/backtest/SKILL.md +225 -0
- package/dist/skills/bundled/bags/SKILL.md +131 -0
- package/dist/skills/bundled/bankr/SKILL.md +114 -0
- package/dist/skills/bundled/betfair/SKILL.md +113 -0
- package/dist/skills/bundled/binance-futures/SKILL.md +84 -0
- package/dist/skills/bundled/binance-futures/index.d.ts +0 -3
- package/dist/skills/bundled/binance-futures/index.js +1 -2
- package/dist/skills/bundled/binance-futures/index.js.map +1 -1
- package/dist/skills/bundled/botchan/SKILL.md +66 -0
- package/dist/skills/bundled/botchan/index.d.ts +0 -3
- package/dist/skills/bundled/botchan/index.js +0 -1
- package/dist/skills/bundled/botchan/index.js.map +1 -1
- package/dist/skills/bundled/bridge/SKILL.md +215 -0
- package/dist/skills/bundled/bridge/index.js +6 -0
- package/dist/skills/bundled/bridge/index.js.map +1 -1
- package/dist/skills/bundled/bybit-futures/SKILL.md +84 -0
- package/dist/skills/bundled/bybit-futures/index.d.ts +0 -3
- package/dist/skills/bundled/bybit-futures/index.js +0 -1
- package/dist/skills/bundled/bybit-futures/index.js.map +1 -1
- package/dist/skills/bundled/clanker/SKILL.md +125 -0
- package/dist/skills/bundled/clanker/index.d.ts +0 -3
- package/dist/skills/bundled/clanker/index.js +0 -1
- package/dist/skills/bundled/clanker/index.js.map +1 -1
- package/dist/skills/bundled/copy-trading/SKILL.md +285 -0
- package/dist/skills/bundled/copy-trading/index.js +15 -8
- package/dist/skills/bundled/copy-trading/index.js.map +1 -1
- package/dist/skills/bundled/copy-trading-solana/SKILL.md +66 -0
- package/dist/skills/bundled/credentials/SKILL.md +261 -0
- package/dist/skills/bundled/credentials/index.js +4 -0
- package/dist/skills/bundled/credentials/index.js.map +1 -1
- package/dist/skills/bundled/crypto-hft/SKILL.md +121 -0
- package/dist/skills/bundled/crypto-hft/index.js +18 -3
- package/dist/skills/bundled/crypto-hft/index.js.map +1 -1
- package/dist/skills/bundled/dca/SKILL.md +27 -0
- package/dist/skills/bundled/dex/SKILL.md +92 -0
- package/dist/skills/bundled/dex/index.js +77 -29
- package/dist/skills/bundled/dex/index.js.map +1 -1
- package/dist/skills/bundled/divergence/SKILL.md +83 -0
- package/dist/skills/bundled/doctor/SKILL.md +267 -0
- package/dist/skills/bundled/doctor/index.js +2 -8
- package/dist/skills/bundled/doctor/index.js.map +1 -1
- package/dist/skills/bundled/drift/SKILL.md +53 -0
- package/dist/skills/bundled/drift-sdk/SKILL.md +103 -0
- package/dist/skills/bundled/drift-sdk/index.d.ts +0 -3
- package/dist/skills/bundled/drift-sdk/index.js +0 -1
- package/dist/skills/bundled/drift-sdk/index.js.map +1 -1
- package/dist/skills/bundled/edge/SKILL.md +84 -0
- package/dist/skills/bundled/embeddings/SKILL.md +244 -0
- package/dist/skills/bundled/endaoment/SKILL.md +65 -0
- package/dist/skills/bundled/endaoment/index.d.ts +0 -3
- package/dist/skills/bundled/endaoment/index.js +0 -1
- package/dist/skills/bundled/endaoment/index.js.map +1 -1
- package/dist/skills/bundled/ens/SKILL.md +63 -0
- package/dist/skills/bundled/ens/index.d.ts +0 -3
- package/dist/skills/bundled/ens/index.js +0 -1
- package/dist/skills/bundled/ens/index.js.map +1 -1
- package/dist/skills/bundled/erc8004/SKILL.md +79 -0
- package/dist/skills/bundled/erc8004/index.d.ts +0 -3
- package/dist/skills/bundled/erc8004/index.js +0 -1
- package/dist/skills/bundled/erc8004/index.js.map +1 -1
- package/dist/skills/bundled/execution/SKILL.md +278 -0
- package/dist/skills/bundled/farcaster/SKILL.md +80 -0
- package/dist/skills/bundled/farcaster/index.js +12 -0
- package/dist/skills/bundled/farcaster/index.js.map +1 -1
- package/dist/skills/bundled/features/SKILL.md +20 -0
- package/dist/skills/bundled/feeds/SKILL.md +288 -0
- package/dist/skills/bundled/harden/SKILL.md +74 -0
- package/dist/skills/bundled/history/SKILL.md +257 -0
- package/dist/skills/bundled/hyperliquid/SKILL.md +200 -0
- package/dist/skills/bundled/hyperliquid/index.d.ts +0 -3
- package/dist/skills/bundled/hyperliquid/index.js +0 -1
- package/dist/skills/bundled/hyperliquid/index.js.map +1 -1
- package/dist/skills/bundled/identity/SKILL.md +228 -0
- package/dist/skills/bundled/identity/index.js +2 -2
- package/dist/skills/bundled/identity/index.js.map +1 -1
- package/dist/skills/bundled/integrations/SKILL.md +321 -0
- package/dist/skills/bundled/integrations/index.js +2 -2
- package/dist/skills/bundled/integrations/index.js.map +1 -1
- package/dist/skills/bundled/jupiter/SKILL.md +163 -0
- package/dist/skills/bundled/jupiter/index.js +2 -2
- package/dist/skills/bundled/kamino/SKILL.md +69 -0
- package/dist/skills/bundled/ledger/SKILL.md +20 -0
- package/dist/skills/bundled/lighter/SKILL.md +83 -0
- package/dist/skills/bundled/lighter/index.d.ts +0 -3
- package/dist/skills/bundled/lighter/index.js +0 -1
- package/dist/skills/bundled/lighter/index.js.map +1 -1
- package/dist/skills/bundled/marginfi/SKILL.md +62 -0
- package/dist/skills/bundled/market-index/SKILL.md +242 -0
- package/dist/skills/bundled/market-index/index.js +1 -3
- package/dist/skills/bundled/market-index/index.js.map +1 -1
- package/dist/skills/bundled/markets/SKILL.md +49 -0
- package/dist/skills/bundled/mcp/SKILL.md +235 -0
- package/dist/skills/bundled/mcp/index.js +1 -3
- package/dist/skills/bundled/mcp/index.js.map +1 -1
- package/dist/skills/bundled/memory/SKILL.md +209 -0
- package/dist/skills/bundled/metaculus/SKILL.md +62 -0
- package/dist/skills/bundled/metaculus/index.js +4 -1
- package/dist/skills/bundled/metaculus/index.js.map +1 -1
- package/dist/skills/bundled/meteora/SKILL.md +28 -0
- package/dist/skills/bundled/meteora-dbc/SKILL.md +25 -0
- package/dist/skills/bundled/metrics/SKILL.md +338 -0
- package/dist/skills/bundled/mev/SKILL.md +239 -0
- package/dist/skills/bundled/mev/index.js +2 -2
- package/dist/skills/bundled/mev/index.js.map +1 -1
- package/dist/skills/bundled/mexc-futures/SKILL.md +86 -0
- package/dist/skills/bundled/mexc-futures/index.d.ts +0 -3
- package/dist/skills/bundled/mexc-futures/index.js +0 -1
- package/dist/skills/bundled/mexc-futures/index.js.map +1 -1
- package/dist/skills/bundled/mm/SKILL.md +142 -0
- package/dist/skills/bundled/mm/index.js +28 -27
- package/dist/skills/bundled/mm/index.js.map +1 -1
- package/dist/skills/bundled/monitoring/SKILL.md +249 -0
- package/dist/skills/bundled/news/SKILL.md +95 -0
- package/dist/skills/bundled/news/index.js +1 -2
- package/dist/skills/bundled/news/index.js.map +1 -1
- package/dist/skills/bundled/onchainkit/SKILL.md +83 -0
- package/dist/skills/bundled/opinion/SKILL.md +87 -0
- package/dist/skills/bundled/opportunity/SKILL.md +308 -0
- package/dist/skills/bundled/orca/SKILL.md +28 -0
- package/dist/skills/bundled/orca/index.js +11 -7
- package/dist/skills/bundled/orca/index.js.map +1 -1
- package/dist/skills/bundled/pairing/SKILL.md +275 -0
- package/dist/skills/bundled/pancakeswap/SKILL.md +93 -0
- package/dist/skills/bundled/pancakeswap/index.d.ts +0 -3
- package/dist/skills/bundled/pancakeswap/index.js +0 -1
- package/dist/skills/bundled/pancakeswap/index.js.map +1 -1
- package/dist/skills/bundled/percolator/SKILL.md +22 -0
- package/dist/skills/bundled/permissions/SKILL.md +269 -0
- package/dist/skills/bundled/permissions/index.js +2 -2
- package/dist/skills/bundled/permissions/index.js.map +1 -1
- package/dist/skills/bundled/plugins/SKILL.md +263 -0
- package/dist/skills/bundled/plugins/index.js +2 -2
- package/dist/skills/bundled/plugins/index.js.map +1 -1
- package/dist/skills/bundled/portfolio/SKILL.md +161 -0
- package/dist/skills/bundled/portfolio/index.js +1 -1
- package/dist/skills/bundled/portfolio/index.js.map +1 -1
- package/dist/skills/bundled/portfolio-sync/SKILL.md +466 -0
- package/dist/skills/bundled/positions/SKILL.md +262 -0
- package/dist/skills/bundled/predictfun/SKILL.md +109 -0
- package/dist/skills/bundled/predictfun/index.js +1 -1
- package/dist/skills/bundled/predictfun/index.js.map +1 -1
- package/dist/skills/bundled/predictit/SKILL.md +66 -0
- package/dist/skills/bundled/predictit/index.js +4 -1
- package/dist/skills/bundled/predictit/index.js.map +1 -1
- package/dist/skills/bundled/presence/SKILL.md +217 -0
- package/dist/skills/bundled/presence/index.js +2 -2
- package/dist/skills/bundled/presence/index.js.map +1 -1
- package/dist/skills/bundled/processes/SKILL.md +254 -0
- package/dist/skills/bundled/pump-swarm/SKILL.md +309 -0
- package/dist/skills/bundled/pumpfun/SKILL.md +145 -0
- package/dist/skills/bundled/pumpfun/index.js +82 -8
- package/dist/skills/bundled/pumpfun/index.js.map +1 -1
- package/dist/skills/bundled/qmd/SKILL.md +129 -0
- package/dist/skills/bundled/qrcoin/SKILL.md +60 -0
- package/dist/skills/bundled/qrcoin/index.d.ts +0 -3
- package/dist/skills/bundled/qrcoin/index.js +0 -1
- package/dist/skills/bundled/qrcoin/index.js.map +1 -1
- package/dist/skills/bundled/raydium/SKILL.md +198 -0
- package/dist/skills/bundled/remote/SKILL.md +201 -0
- package/dist/skills/bundled/research/SKILL.md +83 -0
- package/dist/skills/bundled/research/index.js +2 -2
- package/dist/skills/bundled/research/index.js.map +1 -1
- package/dist/skills/bundled/risk/SKILL.md +323 -0
- package/dist/skills/bundled/router/SKILL.md +233 -0
- package/dist/skills/bundled/routing/SKILL.md +258 -0
- package/dist/skills/bundled/sandbox/SKILL.md +257 -0
- package/dist/skills/bundled/search-config/SKILL.md +257 -0
- package/dist/skills/bundled/search-config/index.js +2 -2
- package/dist/skills/bundled/search-config/index.js.map +1 -1
- package/dist/skills/bundled/sessions/SKILL.md +251 -0
- package/dist/skills/bundled/sessions/index.js +1 -1
- package/dist/skills/bundled/sessions/index.js.map +1 -1
- package/dist/skills/bundled/setup/SKILL.md +53 -0
- package/dist/skills/bundled/shield/SKILL.md +21 -0
- package/dist/skills/bundled/signals/SKILL.md +106 -0
- package/dist/skills/bundled/signals/index.d.ts +0 -3
- package/dist/skills/bundled/signals/index.js +3 -4
- package/dist/skills/bundled/signals/index.js.map +1 -1
- package/dist/skills/bundled/sizing/SKILL.md +238 -0
- package/dist/skills/bundled/slippage/SKILL.md +306 -0
- package/dist/skills/bundled/smarkets/SKILL.md +107 -0
- package/dist/skills/bundled/smarkets/index.js +3 -3
- package/dist/skills/bundled/smarkets/index.js.map +1 -1
- package/dist/skills/bundled/solend/SKILL.md +63 -0
- package/dist/skills/bundled/strategy/SKILL.md +266 -0
- package/dist/skills/bundled/streaming/SKILL.md +150 -0
- package/dist/skills/bundled/streaming/index.js +2 -2
- package/dist/skills/bundled/streaming/index.js.map +1 -1
- package/dist/skills/bundled/tailscale/SKILL.md +249 -0
- package/dist/skills/bundled/tailscale/index.js +2 -2
- package/dist/skills/bundled/tailscale/index.js.map +1 -1
- package/dist/skills/bundled/ticks/SKILL.md +61 -0
- package/dist/skills/bundled/token-security/SKILL.md +18 -0
- package/dist/skills/bundled/trading-evm/SKILL.md +329 -0
- package/dist/skills/bundled/trading-futures/SKILL.md +865 -0
- package/dist/skills/bundled/trading-kalshi/SKILL.md +629 -0
- package/dist/skills/bundled/trading-kalshi/index.js +2 -0
- package/dist/skills/bundled/trading-kalshi/index.js.map +1 -1
- package/dist/skills/bundled/trading-manifold/SKILL.md +387 -0
- package/dist/skills/bundled/trading-polymarket/SKILL.md +1080 -0
- package/dist/skills/bundled/trading-polymarket/index.js +28 -19
- package/dist/skills/bundled/trading-polymarket/index.js.map +1 -1
- package/dist/skills/bundled/trading-solana/SKILL.md +418 -0
- package/dist/skills/bundled/trading-solana/index.js +1 -1
- package/dist/skills/bundled/trading-solana/index.js.map +1 -1
- package/dist/skills/bundled/trading-system/SKILL.md +290 -0
- package/dist/skills/bundled/triggers/SKILL.md +433 -0
- package/dist/skills/bundled/tts/SKILL.md +220 -0
- package/dist/skills/bundled/tweet-ideas/SKILL.md +77 -0
- package/dist/skills/bundled/usage/SKILL.md +239 -0
- package/dist/skills/bundled/usage/index.js +2 -2
- package/dist/skills/bundled/usage/index.js.map +1 -1
- package/dist/skills/bundled/veil/SKILL.md +76 -0
- package/dist/skills/bundled/veil/index.d.ts +0 -3
- package/dist/skills/bundled/veil/index.js +0 -1
- package/dist/skills/bundled/veil/index.js.map +1 -1
- package/dist/skills/bundled/verify/SKILL.md +199 -0
- package/dist/skills/bundled/verify/index.d.ts +0 -3
- package/dist/skills/bundled/verify/index.js +0 -1
- package/dist/skills/bundled/verify/index.js.map +1 -1
- package/dist/skills/bundled/virtuals/SKILL.md +82 -0
- package/dist/skills/bundled/voice/SKILL.md +217 -0
- package/dist/skills/bundled/voice/index.js +2 -2
- package/dist/skills/bundled/voice/index.js.map +1 -1
- package/dist/skills/bundled/weather/SKILL.md +80 -0
- package/dist/skills/bundled/weather/index.js +3 -0
- package/dist/skills/bundled/weather/index.js.map +1 -1
- package/dist/skills/bundled/webhooks/SKILL.md +297 -0
- package/dist/skills/bundled/webhooks/index.js +2 -2
- package/dist/skills/bundled/webhooks/index.js.map +1 -1
- package/dist/skills/bundled/whale-tracking/SKILL.md +287 -0
- package/dist/skills/bundled/whale-tracking/index.js +2 -2
- package/dist/skills/bundled/whale-tracking/index.js.map +1 -1
- package/dist/skills/bundled/yoink/SKILL.md +54 -0
- package/dist/skills/bundled/yoink/index.d.ts +0 -3
- package/dist/skills/bundled/yoink/index.js +0 -1
- package/dist/skills/bundled/yoink/index.js.map +1 -1
- package/dist/skills/executor.js +5 -3
- package/dist/skills/executor.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: analytics
|
|
3
|
+
description: "Performance attribution, trade analytics, and strategy optimization"
|
|
4
|
+
emoji: "📊"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Analytics - Complete API Reference
|
|
8
|
+
|
|
9
|
+
Analyze trading performance with attribution by edge source, time-of-day analysis, and optimization insights.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Chat Commands
|
|
14
|
+
|
|
15
|
+
### Performance Overview
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
/analytics Performance summary
|
|
19
|
+
/analytics today Today's performance
|
|
20
|
+
/analytics week Weekly breakdown
|
|
21
|
+
/analytics month Monthly breakdown
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Attribution
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
/analytics attribution P&L by edge source
|
|
28
|
+
/analytics by-platform P&L by platform
|
|
29
|
+
/analytics by-category P&L by market category
|
|
30
|
+
/analytics by-strategy P&L by strategy
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Time Analysis
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
/analytics best-times Best trading hours
|
|
37
|
+
/analytics by-hour Hourly performance
|
|
38
|
+
/analytics by-day Day of week analysis
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Edge Analysis
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
/analytics edge-decay How edge decays over time
|
|
45
|
+
/analytics edge-buckets Performance by edge size
|
|
46
|
+
/analytics liquidity Performance by liquidity
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## TypeScript API Reference
|
|
52
|
+
|
|
53
|
+
### Create Analytics Service
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
import { createAnalyticsService } from 'clodds/analytics';
|
|
57
|
+
|
|
58
|
+
const analytics = createAnalyticsService({
|
|
59
|
+
// Data source
|
|
60
|
+
tradesDb: './trades.db',
|
|
61
|
+
|
|
62
|
+
// Time zone
|
|
63
|
+
timezone: 'America/New_York',
|
|
64
|
+
});
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Performance Summary
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
const summary = await analytics.getSummary({
|
|
71
|
+
period: 'month',
|
|
72
|
+
// or: from: '2024-01-01', to: '2024-01-31'
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
console.log('=== Performance ===');
|
|
76
|
+
console.log(`Total P&L: $${summary.totalPnl}`);
|
|
77
|
+
console.log(`Win Rate: ${summary.winRate}%`);
|
|
78
|
+
console.log(`Profit Factor: ${summary.profitFactor}`);
|
|
79
|
+
console.log(`Sharpe Ratio: ${summary.sharpeRatio}`);
|
|
80
|
+
console.log(`Total Trades: ${summary.totalTrades}`);
|
|
81
|
+
console.log(`Avg Trade: $${summary.avgTrade}`);
|
|
82
|
+
console.log(`Best Trade: $${summary.bestTrade}`);
|
|
83
|
+
console.log(`Worst Trade: $${summary.worstTrade}`);
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Attribution by Edge Source
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
const attribution = await analytics.getAttribution('edgeSource');
|
|
90
|
+
|
|
91
|
+
for (const source of attribution) {
|
|
92
|
+
console.log(`${source.name}:`);
|
|
93
|
+
console.log(` P&L: $${source.pnl}`);
|
|
94
|
+
console.log(` Trades: ${source.trades}`);
|
|
95
|
+
console.log(` Win Rate: ${source.winRate}%`);
|
|
96
|
+
console.log(` Contribution: ${source.contribution}%`);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Example sources:
|
|
100
|
+
// - price_lag (stale prices)
|
|
101
|
+
// - liquidity_gap (thin orderbooks)
|
|
102
|
+
// - information (news/events)
|
|
103
|
+
// - model_edge (external models)
|
|
104
|
+
// - combinatorial (arbitrage)
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Time-of-Day Analysis
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
const hourly = await analytics.getHourlyPerformance();
|
|
111
|
+
|
|
112
|
+
console.log('Best Hours:');
|
|
113
|
+
for (const hour of hourly.slice(0, 3)) {
|
|
114
|
+
console.log(` ${hour.hour}:00 - Win: ${hour.winRate}%, Avg: $${hour.avgPnl}`);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
console.log('Worst Hours:');
|
|
118
|
+
for (const hour of hourly.slice(-3)) {
|
|
119
|
+
console.log(` ${hour.hour}:00 - Win: ${hour.winRate}%, Avg: $${hour.avgPnl}`);
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Day-of-Week Analysis
|
|
124
|
+
|
|
125
|
+
```typescript
|
|
126
|
+
const daily = await analytics.getDayOfWeekPerformance();
|
|
127
|
+
|
|
128
|
+
for (const day of daily) {
|
|
129
|
+
console.log(`${day.name}: $${day.pnl} (${day.trades} trades, ${day.winRate}% win)`);
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Edge Decay Analysis
|
|
134
|
+
|
|
135
|
+
```typescript
|
|
136
|
+
const decay = await analytics.getEdgeDecay();
|
|
137
|
+
|
|
138
|
+
console.log('Edge Decay (how fast edge disappears):');
|
|
139
|
+
for (const bucket of decay) {
|
|
140
|
+
console.log(` ${bucket.holdTime}: ${bucket.avgReturn}% return`);
|
|
141
|
+
}
|
|
142
|
+
// Shows optimal hold time before edge decays
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Edge Size Buckets
|
|
146
|
+
|
|
147
|
+
```typescript
|
|
148
|
+
const edgeBuckets = await analytics.getEdgeBuckets();
|
|
149
|
+
|
|
150
|
+
for (const bucket of edgeBuckets) {
|
|
151
|
+
console.log(`Edge ${bucket.min}-${bucket.max}%:`);
|
|
152
|
+
console.log(` Trades: ${bucket.trades}`);
|
|
153
|
+
console.log(` Win Rate: ${bucket.winRate}%`);
|
|
154
|
+
console.log(` Avg P&L: $${bucket.avgPnl}`);
|
|
155
|
+
console.log(` Realized Edge: ${bucket.realizedEdge}%`);
|
|
156
|
+
}
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Liquidity Analysis
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
const liquidity = await analytics.getLiquidityAnalysis();
|
|
163
|
+
|
|
164
|
+
for (const bucket of liquidity) {
|
|
165
|
+
console.log(`${bucket.name} liquidity:`);
|
|
166
|
+
console.log(` Trades: ${bucket.trades}`);
|
|
167
|
+
console.log(` Avg Slippage: ${bucket.avgSlippage}%`);
|
|
168
|
+
console.log(` Fill Rate: ${bucket.fillRate}%`);
|
|
169
|
+
console.log(` Avg P&L: $${bucket.avgPnl}`);
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Execution Quality
|
|
174
|
+
|
|
175
|
+
```typescript
|
|
176
|
+
const execution = await analytics.getExecutionQuality();
|
|
177
|
+
|
|
178
|
+
console.log('=== Execution Quality ===');
|
|
179
|
+
console.log(`Avg Slippage: ${execution.avgSlippage}%`);
|
|
180
|
+
console.log(`Fill Rate: ${execution.fillRate}%`);
|
|
181
|
+
console.log(`Avg Fill Time: ${execution.avgFillTimeMs}ms`);
|
|
182
|
+
console.log(`Partial Fills: ${execution.partialFillRate}%`);
|
|
183
|
+
console.log(`Rejected Orders: ${execution.rejectionRate}%`);
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Platform Comparison
|
|
187
|
+
|
|
188
|
+
```typescript
|
|
189
|
+
const platforms = await analytics.getPlatformComparison();
|
|
190
|
+
|
|
191
|
+
for (const platform of platforms) {
|
|
192
|
+
console.log(`${platform.name}:`);
|
|
193
|
+
console.log(` P&L: $${platform.pnl}`);
|
|
194
|
+
console.log(` Win Rate: ${platform.winRate}%`);
|
|
195
|
+
console.log(` Avg Slippage: ${platform.avgSlippage}%`);
|
|
196
|
+
console.log(` Best For: ${platform.strengths.join(', ')}`);
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### Export Report
|
|
201
|
+
|
|
202
|
+
```typescript
|
|
203
|
+
// Generate PDF report
|
|
204
|
+
await analytics.exportReport({
|
|
205
|
+
format: 'pdf',
|
|
206
|
+
period: 'month',
|
|
207
|
+
include: ['summary', 'attribution', 'charts'],
|
|
208
|
+
outputPath: './reports/january-2024.pdf',
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
// Export raw data
|
|
212
|
+
await analytics.exportData({
|
|
213
|
+
format: 'csv',
|
|
214
|
+
period: 'month',
|
|
215
|
+
outputPath: './data/january-trades.csv',
|
|
216
|
+
});
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Attribution Categories
|
|
222
|
+
|
|
223
|
+
| Category | Description |
|
|
224
|
+
|----------|-------------|
|
|
225
|
+
| **Edge Source** | Where the edge came from |
|
|
226
|
+
| **Platform** | Which platform traded on |
|
|
227
|
+
| **Category** | Market category (politics, crypto) |
|
|
228
|
+
| **Strategy** | Which strategy generated trade |
|
|
229
|
+
| **Time** | Hour/day of trade |
|
|
230
|
+
| **Size** | Trade size bucket |
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Key Metrics
|
|
235
|
+
|
|
236
|
+
| Metric | Good Value | Description |
|
|
237
|
+
|--------|------------|-------------|
|
|
238
|
+
| **Win Rate** | > 50% | Percent of winning trades |
|
|
239
|
+
| **Profit Factor** | > 1.5 | Gross profit / gross loss |
|
|
240
|
+
| **Sharpe Ratio** | > 1.0 | Risk-adjusted returns |
|
|
241
|
+
| **Realized Edge** | > 0 | Actual vs expected edge |
|
|
242
|
+
| **Fill Rate** | > 95% | Orders fully filled |
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## Best Practices
|
|
247
|
+
|
|
248
|
+
1. **Review weekly** — Catch problems early
|
|
249
|
+
2. **Track attribution** — Know where profits come from
|
|
250
|
+
3. **Optimize timing** — Trade your best hours
|
|
251
|
+
4. **Monitor edge decay** — Don't hold too long
|
|
252
|
+
5. **Check execution** — Slippage kills edge
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/skills/bundled/analytics/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/skills/bundled/analytics/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: arbitrage
|
|
3
|
+
description: "Automated cross-platform arbitrage detection and monitoring"
|
|
4
|
+
emoji: "⚖️"
|
|
5
|
+
gates:
|
|
6
|
+
envs:
|
|
7
|
+
anyOf:
|
|
8
|
+
- POLY_API_KEY
|
|
9
|
+
- KALSHI_API_KEY
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Arbitrage Service - Complete API Reference
|
|
13
|
+
|
|
14
|
+
Automated detection and monitoring of arbitrage opportunities across prediction market platforms.
|
|
15
|
+
|
|
16
|
+
## Supported Platforms
|
|
17
|
+
|
|
18
|
+
- Polymarket
|
|
19
|
+
- Kalshi
|
|
20
|
+
- Manifold
|
|
21
|
+
- Metaculus
|
|
22
|
+
- PredictIt
|
|
23
|
+
- Drift
|
|
24
|
+
- Betfair
|
|
25
|
+
- Smarkets
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Chat Commands
|
|
30
|
+
|
|
31
|
+
### Monitoring Control
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
/arb start # Start arbitrage monitoring
|
|
35
|
+
/arb stop # Stop monitoring
|
|
36
|
+
/arb status # Check monitoring status
|
|
37
|
+
/arb config --interval 60 # Set check interval (seconds)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Manual Scanning
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
/arb check # Run one-time scan
|
|
44
|
+
/arb check "election" # Scan with keyword
|
|
45
|
+
/arb check --platforms poly,kalshi # Specific platforms
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Market Comparison
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
/arb compare <market-a> <market-b> # Compare two specific markets
|
|
52
|
+
/arb compare poly:12345 kalshi:TRUMP # By platform:id
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### View Opportunities
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
/arb opportunities # List current opportunities
|
|
59
|
+
/arb opportunities --min-spread 2 # Min 2% spread
|
|
60
|
+
/arb opportunities --format table # Table format
|
|
61
|
+
/arb opportunities --format detailed # Detailed view
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Market Linking
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
/arb link <market-a> <market-b> # Manually link markets
|
|
68
|
+
/arb unlink <market-a> <market-b> # Remove link
|
|
69
|
+
/arb links # View all links
|
|
70
|
+
/arb auto-match # Auto-detect matches
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Statistics
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
/arb stats # Arbitrage statistics
|
|
77
|
+
/arb stats --period 7d # Last 7 days
|
|
78
|
+
/arb history # Historical opportunities
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## TypeScript API Reference
|
|
84
|
+
|
|
85
|
+
### Create Arbitrage Service
|
|
86
|
+
|
|
87
|
+
```typescript
|
|
88
|
+
import { createArbitrageService } from 'clodds/arbitrage';
|
|
89
|
+
|
|
90
|
+
const arbService = createArbitrageService({
|
|
91
|
+
platforms: ['polymarket', 'kalshi', 'manifold', 'betfair'],
|
|
92
|
+
|
|
93
|
+
checkIntervalMs: 30000, // Check every 30 seconds
|
|
94
|
+
minSpread: 0.5, // 0.5% minimum spread
|
|
95
|
+
minLiquidity: 100, // $100 minimum
|
|
96
|
+
|
|
97
|
+
// Platform credentials
|
|
98
|
+
polymarket: { apiKey, apiSecret, passphrase },
|
|
99
|
+
kalshi: { apiKey },
|
|
100
|
+
});
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Start/Stop Monitoring
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
// Start continuous monitoring
|
|
107
|
+
await arbService.start();
|
|
108
|
+
|
|
109
|
+
// Event handlers
|
|
110
|
+
arbService.on('arbitrage', (opp) => {
|
|
111
|
+
console.log(`⚖️ Arbitrage found!`);
|
|
112
|
+
console.log(` ${opp.marketA.platform}: ${opp.marketA.price}`);
|
|
113
|
+
console.log(` ${opp.marketB.platform}: ${opp.marketB.price}`);
|
|
114
|
+
console.log(` Spread: ${opp.spread.toFixed(2)}%`);
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
arbService.on('arbitrageExpired', (opp) => {
|
|
118
|
+
console.log(`Arbitrage expired: ${opp.id}`);
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
// Check status
|
|
122
|
+
const isRunning = arbService.isRunning();
|
|
123
|
+
|
|
124
|
+
// Stop monitoring
|
|
125
|
+
await arbService.stop();
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### One-Time Check
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
// Run a single scan
|
|
132
|
+
const opportunities = await arbService.checkArbitrage({
|
|
133
|
+
query: 'trump',
|
|
134
|
+
platforms: ['polymarket', 'kalshi'],
|
|
135
|
+
minSpread: 1,
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
for (const opp of opportunities) {
|
|
139
|
+
console.log(`${opp.question}`);
|
|
140
|
+
console.log(` Buy on ${opp.buyPlatform} @ ${opp.buyPrice}`);
|
|
141
|
+
console.log(` Sell on ${opp.sellPlatform} @ ${opp.sellPrice}`);
|
|
142
|
+
console.log(` Spread: ${opp.spread.toFixed(2)}%`);
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Compare Specific Markets
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
// Compare two specific markets
|
|
150
|
+
const comparison = await arbService.compareMarkets(
|
|
151
|
+
{ platform: 'polymarket', id: 'market-123' },
|
|
152
|
+
{ platform: 'kalshi', id: 'TRUMP-WIN' }
|
|
153
|
+
);
|
|
154
|
+
|
|
155
|
+
if (comparison.hasArbitrage) {
|
|
156
|
+
console.log(`Arbitrage exists!`);
|
|
157
|
+
console.log(` Buy ${comparison.buySide} on ${comparison.buyPlatform}`);
|
|
158
|
+
console.log(` Sell ${comparison.sellSide} on ${comparison.sellPlatform}`);
|
|
159
|
+
console.log(` Spread: ${comparison.spread.toFixed(2)}%`);
|
|
160
|
+
} else {
|
|
161
|
+
console.log(`No arbitrage. Price difference: ${comparison.priceDiff.toFixed(2)}%`);
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Market Linking
|
|
166
|
+
|
|
167
|
+
```typescript
|
|
168
|
+
// Add a manual match
|
|
169
|
+
await arbService.addMatch(
|
|
170
|
+
{ platform: 'polymarket', id: 'market-123', question: 'Will Trump win?' },
|
|
171
|
+
{ platform: 'kalshi', id: 'TRUMP-WIN', question: 'Trump wins 2024' }
|
|
172
|
+
);
|
|
173
|
+
|
|
174
|
+
// Remove a match
|
|
175
|
+
await arbService.removeMatch('polymarket:market-123', 'kalshi:TRUMP-WIN');
|
|
176
|
+
|
|
177
|
+
// Auto-detect matches using question similarity
|
|
178
|
+
const autoMatches = await arbService.autoMatchMarkets({
|
|
179
|
+
minSimilarity: 0.85,
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
console.log(`Found ${autoMatches.length} auto-matches`);
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Get Opportunities
|
|
186
|
+
|
|
187
|
+
```typescript
|
|
188
|
+
// Get current opportunities
|
|
189
|
+
const opportunities = await arbService.getOpportunities({
|
|
190
|
+
minSpread: 1,
|
|
191
|
+
sortBy: 'spread', // 'spread' | 'liquidity' | 'confidence'
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
// Format for display
|
|
195
|
+
const formatted = await arbService.formatOpportunities(opportunities);
|
|
196
|
+
console.log(formatted);
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Statistics
|
|
200
|
+
|
|
201
|
+
```typescript
|
|
202
|
+
// Get arbitrage statistics
|
|
203
|
+
const stats = await arbService.getStats({
|
|
204
|
+
period: '30d',
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
console.log(`Total opportunities: ${stats.totalOpportunities}`);
|
|
208
|
+
console.log(`Avg spread: ${stats.avgSpread.toFixed(2)}%`);
|
|
209
|
+
console.log(`Max spread seen: ${stats.maxSpread.toFixed(2)}%`);
|
|
210
|
+
console.log(`By platform pair:`);
|
|
211
|
+
for (const [pair, count] of Object.entries(stats.byPlatformPair)) {
|
|
212
|
+
console.log(` ${pair}: ${count}`);
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## Arbitrage Types Detected
|
|
219
|
+
|
|
220
|
+
### 1. Cross-Platform Price Difference
|
|
221
|
+
|
|
222
|
+
```
|
|
223
|
+
Market: "Trump wins 2024"
|
|
224
|
+
Polymarket YES: 52¢
|
|
225
|
+
Kalshi YES: 55¢
|
|
226
|
+
|
|
227
|
+
Strategy: Buy Polymarket YES, Sell Kalshi YES
|
|
228
|
+
Spread: 3¢ (5.8%)
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### 2. Internal Arbitrage (Rebalancing)
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
Market: "Will X happen?"
|
|
235
|
+
YES: 45¢
|
|
236
|
+
NO: 52¢
|
|
237
|
+
Total: 97¢
|
|
238
|
+
|
|
239
|
+
Strategy: Buy both YES and NO
|
|
240
|
+
Guaranteed profit: 3¢ per $1
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### 3. Inverse Markets
|
|
244
|
+
|
|
245
|
+
```
|
|
246
|
+
Market A: "Trump wins" = 55¢
|
|
247
|
+
Market B: "Trump loses" = 48¢
|
|
248
|
+
Total: 103¢ (should be 100¢)
|
|
249
|
+
|
|
250
|
+
Strategy: Sell both, pocket 3¢
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## Configuration
|
|
256
|
+
|
|
257
|
+
```typescript
|
|
258
|
+
arbService.configure({
|
|
259
|
+
// Scanning
|
|
260
|
+
checkIntervalMs: 30000,
|
|
261
|
+
batchSize: 50,
|
|
262
|
+
|
|
263
|
+
// Filtering
|
|
264
|
+
minSpread: 0.5,
|
|
265
|
+
minLiquidity: 100,
|
|
266
|
+
minConfidence: 0.7,
|
|
267
|
+
|
|
268
|
+
// Matching
|
|
269
|
+
autoMatchEnabled: true,
|
|
270
|
+
minMatchSimilarity: 0.85,
|
|
271
|
+
|
|
272
|
+
// Alerts
|
|
273
|
+
alertOnNewArb: true,
|
|
274
|
+
alertThreshold: 2, // Alert on 2%+ spreads
|
|
275
|
+
});
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## Best Practices
|
|
281
|
+
|
|
282
|
+
1. **Verify matches manually** - Auto-matching can have false positives
|
|
283
|
+
2. **Check liquidity** - Ensure you can actually execute
|
|
284
|
+
3. **Account for fees** - Platform fees reduce spreads
|
|
285
|
+
4. **Move fast** - Arbitrage disappears quickly
|
|
286
|
+
5. **Use limit orders** - Avoid slippage
|
|
287
|
+
6. **Track all outcomes** - Build performance data
|
|
@@ -18,12 +18,17 @@
|
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
19
|
exports.execute = execute;
|
|
20
20
|
const index_1 = require("../../../arbitrage/index");
|
|
21
|
+
const logger_1 = require("../../../utils/logger");
|
|
21
22
|
const help_js_1 = require("../../help.js");
|
|
22
23
|
const errors_js_1 = require("../../errors.js");
|
|
23
24
|
let arbService = null;
|
|
24
25
|
function getService() {
|
|
25
26
|
if (!arbService) {
|
|
26
|
-
|
|
27
|
+
const providers = new Map();
|
|
28
|
+
// Providers are registered dynamically by the arbitrage service
|
|
29
|
+
// based on available feed configurations
|
|
30
|
+
arbService = (0, index_1.createArbitrageService)(providers);
|
|
31
|
+
logger_1.logger.info({ providerCount: providers.size }, 'Arbitrage service initialized');
|
|
27
32
|
}
|
|
28
33
|
return arbService;
|
|
29
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/skills/bundled/arbitrage/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/skills/bundled/arbitrage/index.ts"],"names":[],"mappings":"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"}
|