polly-gamba 1.0.27 → 1.0.31
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/claude-trader.js +18 -3
- package/dist/mcp-server.js +21 -1
- package/dist/position-monitor.js +22 -10
- package/package.json +1 -1
- package/service.log +802 -0
- package/src/claude-trader.ts +18 -3
- package/src/mcp-server.ts +21 -1
- package/src/position-monitor.ts +23 -10
package/dist/claude-trader.js
CHANGED
|
@@ -103,7 +103,7 @@ class ClaudeTrader {
|
|
|
103
103
|
role: 'user',
|
|
104
104
|
content: `You are a Polymarket ${PAPER_MODE ? 'PAPER TRADING (no real money)' : 'paper'} trader running a high-volume moneyball strategy. Your job is to place paper trades on EVERY market where you have ANY opinion on fair value — even slight.
|
|
105
105
|
${PAPER_MODE ? '\n⚠️ PAPER MODE: This is a test environment. Be AGGRESSIVE — trade more, skip less. Lower your threshold to 3% edge for any market resolving within 6 months.\n' : ''}
|
|
106
|
-
TOOLS: place_order, skip_all, get_budget_status
|
|
106
|
+
TOOLS: place_order, skip_all, get_budget_status, get_positions
|
|
107
107
|
RULES:
|
|
108
108
|
- Output ONLY tool calls. Zero prose.
|
|
109
109
|
- For EVERY market in the list: if current price differs from your estimated fair probability by more than ${PAPER_MODE ? '3%' : '5%'}, place a trade.
|
|
@@ -117,7 +117,7 @@ RULES:
|
|
|
117
117
|
- Max $100 per market (20% of $500 budget). The MCP enforces this — don't fight it.
|
|
118
118
|
- To add to an existing position with the SAME outcome: (1) you MUST cite a specific new catalyst (news published in last 24h, not price movement), AND (2) the current price must be ≥20% below your last entry price (e.g. if you bought YES at 0.15, new entry only valid at ≤0.12). The MCP enforces this — attempts at a smaller discount will be rejected. Price dipping alone is NOT a catalyst. New information is a catalyst.
|
|
119
119
|
- exit_trigger is required on every trade. Be specific: "Exit when price hits 0.X" or "Exit when [specific news event]" — not "when narrative converges."
|
|
120
|
-
- Call get_budget_status at the start of each scan to know available capital.`
|
|
120
|
+
- Call get_budget_status AND get_positions at the start of each scan to know available capital and your current open positions. get_positions returns {"positions": [...], "closed_markets": [...]}. You MUST review BOTH before trading to apply concentration AND closed-market discipline correctly.`
|
|
121
121
|
}
|
|
122
122
|
}));
|
|
123
123
|
this.ready = true;
|
|
@@ -213,7 +213,21 @@ ${m.description ? `- Description: ${m.description.slice(0, 200)}` : ''}`).join('
|
|
|
213
213
|
- Similarly: "Will Orbán be PM" and "Will Magyar be PM" are both the Hungary 2026 election — treat as same theme (you may hold both as a hedge pair, but do not add a third Hungary position).
|
|
214
214
|
- If you're uncertain whether a market correlates to an existing theme, assume it does and skip.
|
|
215
215
|
|
|
216
|
-
|
|
216
|
+
## CLOSED MARKET DISCIPLINE (absolute rule — never override):
|
|
217
|
+
- get_positions returns a JSON object with two keys: "positions" (open) and "closed_markets" (previously exited).
|
|
218
|
+
- NEVER place a new order for any market_id+outcome combination that appears in closed_markets. This is enforced server-side and will be rejected anyway.
|
|
219
|
+
- The reason: re-entering a market you already exited is a sign of anchoring bias. If the thesis was wrong once, sportsbook odds movement is not sufficient justification. Accept the loss and redeploy capital elsewhere.
|
|
220
|
+
|
|
221
|
+
## SPORTSBOOK CROSS-CHECK DISCIPLINE (apply when estimating fair value):
|
|
222
|
+
- Sportsbooks measure betting DEMAND, not calibrated probability. Polymarket is often better calibrated on liquid markets (>$50k volume).
|
|
223
|
+
- When fair value is primarily derived from sportsbook lines (e.g. "DraftKings has X at +225 implying 30%"), apply a 50% haircut to the apparent cross-market edge. Example: sportsbooks imply 30%, Polymarket shows 15% → effective edge = (30%×0.8 − 15%) = 9pp, not 15pp.
|
|
224
|
+
- Sportsbook-derived estimates MUST exceed the horizon threshold AFTER the 50% haircut. Do not enter based purely on sportsbook arbitrage at small gaps.
|
|
225
|
+
- Anchor fair value on base rates and world knowledge first; use sportsbooks to adjust by ±5pp only. If you cannot defend the estimate without the sportsbook line, the edge is too speculative.
|
|
226
|
+
- Exception: if both Polymarket AND sportsbooks agree with your base-rate analysis, the convergence strengthens the thesis.
|
|
227
|
+
|
|
228
|
+
STEP 1: Call get_positions to see your current open positions AND closed_markets — required before evaluating any market.
|
|
229
|
+
STEP 2: For each market, apply horizon discipline, concentration discipline, AND closed market discipline (using the data from step 1).
|
|
230
|
+
STEP 3: If price differs from your fair probability by the required edge (accounting for sportsbook haircut if applicable), place a trade ($10 USDC). Call skip_all only if you have zero opinion on all markets.`;
|
|
217
231
|
const msg = JSON.stringify({
|
|
218
232
|
type: 'user',
|
|
219
233
|
message: { role: 'user', content: prompt }
|
|
@@ -295,6 +309,7 @@ CLOSE RULES — apply ALL that match, no thesis override allowed:
|
|
|
295
309
|
4. Position is down >50% — HARD CLOSE regardless of thesis. Cut losses. No exceptions.
|
|
296
310
|
5. You have 2+ open positions in the SAME market with the SAME outcome — close the NEWER entry (higher ts value) regardless of P&L. Duplicate same-outcome positions double exposure without incremental edge. Keep the original entry.
|
|
297
311
|
6. Position is UP >25% from entry AND has been held >48h — CLOSE to lock in profits. The market has moved significantly in your favor; gains are now vulnerable to reversion. Use take_profit reason. Exception: if the resolution event is within 7 days AND the position is still clearly on the right side, you may hold until resolution.
|
|
312
|
+
7. STALE POSITION: Position held >7 days AND price has moved <5% from entry AND resolution event is >30 days away — CLOSE to redeploy capital. A position that doesn't move over 7 days means the mispricing wasn't as large as estimated. Cut it, accept the small loss/gain, and redeploy to markets with active price movement.
|
|
298
313
|
|
|
299
314
|
HOLD RULES: If NONE of the close rules apply and exit trigger NOT triggered, do nothing (no output needed).`;
|
|
300
315
|
const msg = JSON.stringify({
|
package/dist/mcp-server.js
CHANGED
|
@@ -126,6 +126,12 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (req) => {
|
|
|
126
126
|
return false;
|
|
127
127
|
return !closedIds.has(`${p.market_id}_${p.outcome}_${p.ts}`);
|
|
128
128
|
});
|
|
129
|
+
// Block re-entry into previously closed market+outcome combos
|
|
130
|
+
const marketOutcomePrefix = `${a.market_id}_${a.outcome}_`;
|
|
131
|
+
const wasClosedBefore = Array.from(closedIds).some(id => id.startsWith(marketOutcomePrefix));
|
|
132
|
+
if (wasClosedBefore) {
|
|
133
|
+
return { content: [{ type: 'text', text: `Error: Re-entry blocked. This market+outcome (${a.market_id} ${a.outcome}) was previously closed. Polly-gamba does not re-enter previously exited positions to prevent repeated losses on the same bet.` }] };
|
|
134
|
+
}
|
|
129
135
|
// Validate using extracted business logic (includes input validation + budget checks)
|
|
130
136
|
const validationError = (0, paper_trade_1.validatePlaceOrder)({ market_id: a.market_id, outcome: a.outcome, size_usdc: a.size_usdc, price: a.price, new_catalyst: a.new_catalyst }, openPositions);
|
|
131
137
|
if (validationError) {
|
|
@@ -191,8 +197,22 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (req) => {
|
|
|
191
197
|
const key = `${p.market_id}_${p.outcome}_${p.ts}`;
|
|
192
198
|
return !closedIds.has(key);
|
|
193
199
|
});
|
|
200
|
+
// Expose previously-closed market+outcome combos so Claude can avoid re-entry
|
|
201
|
+
const closedMarkets = Array.from(closedIds).map(key => {
|
|
202
|
+
const parts = key.split('_');
|
|
203
|
+
return { market_id: parts[0], outcome: parts[1] };
|
|
204
|
+
});
|
|
205
|
+
// Deduplicate
|
|
206
|
+
const seen = new Set();
|
|
207
|
+
const uniqueClosedMarkets = closedMarkets.filter(m => {
|
|
208
|
+
const k = `${m.market_id}_${m.outcome}`;
|
|
209
|
+
if (seen.has(k))
|
|
210
|
+
return false;
|
|
211
|
+
seen.add(k);
|
|
212
|
+
return true;
|
|
213
|
+
});
|
|
194
214
|
return {
|
|
195
|
-
content: [{ type: 'text', text: JSON.stringify(positions, null, 2) }]
|
|
215
|
+
content: [{ type: 'text', text: JSON.stringify({ positions, closed_markets: uniqueClosedMarkets }, null, 2) }]
|
|
196
216
|
};
|
|
197
217
|
}
|
|
198
218
|
if (name === 'close_position') {
|
package/dist/position-monitor.js
CHANGED
|
@@ -52,15 +52,23 @@ class PositionMonitor {
|
|
|
52
52
|
return;
|
|
53
53
|
}
|
|
54
54
|
// Deduplicate market fetches keyed by marketId_outcome
|
|
55
|
+
// Throttle to 5 concurrent fetches to avoid Gamma API rate limiting
|
|
55
56
|
const marketPriceCache = new Map();
|
|
56
57
|
const uniqueKeys = [...new Set(toCheck.map(p => `${p.market_id}|${p.outcome}`))];
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
58
|
+
const BATCH_SIZE = 5;
|
|
59
|
+
for (let i = 0; i < uniqueKeys.length; i += BATCH_SIZE) {
|
|
60
|
+
const batch = uniqueKeys.slice(i, i + BATCH_SIZE);
|
|
61
|
+
await Promise.all(batch.map(async (key) => {
|
|
62
|
+
const sep = key.indexOf('|');
|
|
63
|
+
const marketId = key.slice(0, sep);
|
|
64
|
+
const outcome = key.slice(sep + 1);
|
|
65
|
+
const result = await this.fetchCurrentPrice(marketId, outcome).catch(() => null);
|
|
66
|
+
marketPriceCache.set(key, result);
|
|
67
|
+
}));
|
|
68
|
+
if (i + BATCH_SIZE < uniqueKeys.length) {
|
|
69
|
+
await new Promise(resolve => setTimeout(resolve, 200));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
64
72
|
// Build review candidates with current price data for Claude
|
|
65
73
|
const reviewCandidates = [];
|
|
66
74
|
for (const pos of toCheck) {
|
|
@@ -72,8 +80,10 @@ class PositionMonitor {
|
|
|
72
80
|
const entryPrice = pos.price;
|
|
73
81
|
const gain = (currentPrice.price - entryPrice) / entryPrice;
|
|
74
82
|
const hoursToEnd = (new Date(currentPrice.endDate).getTime() - Date.now()) / (1000 * 60 * 60);
|
|
75
|
-
|
|
76
|
-
|
|
83
|
+
const hoursHeld = (Date.now() - pos.ts) / (1000 * 60 * 60);
|
|
84
|
+
const isStale = hoursHeld >= 168 && Math.abs(gain) < 0.05; // held >7d with <5% movement
|
|
85
|
+
// Send to Claude if: moved >5% either way, <72h to expiry, or stale (>7d no movement)
|
|
86
|
+
if (Math.abs(gain) >= 0.05 || hoursToEnd <= 72 || isStale) {
|
|
77
87
|
reviewCandidates.push({
|
|
78
88
|
market_id: pos.market_id,
|
|
79
89
|
market_question: pos.market_question,
|
|
@@ -147,7 +157,9 @@ class PositionMonitor {
|
|
|
147
157
|
}
|
|
148
158
|
async fetchCurrentPrice(marketId, outcome) {
|
|
149
159
|
try {
|
|
150
|
-
const res = await fetch(`https://gamma-api.polymarket.com/markets/${marketId}
|
|
160
|
+
const res = await fetch(`https://gamma-api.polymarket.com/markets/${marketId}`, {
|
|
161
|
+
headers: { 'User-Agent': 'Mozilla/5.0 (compatible; polly-gamba/1.0)' }
|
|
162
|
+
});
|
|
151
163
|
if (!res.ok)
|
|
152
164
|
return null;
|
|
153
165
|
const data = await res.json();
|
package/package.json
CHANGED
package/service.log
ADDED
|
@@ -0,0 +1,802 @@
|
|
|
1
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
2
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
3
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
4
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
5
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
6
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
7
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
8
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
9
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
10
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
11
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
12
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
13
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
14
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
15
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
16
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
17
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
18
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
19
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
20
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
21
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
22
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
23
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
24
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
25
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
26
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
27
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
28
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
29
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
30
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
31
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
32
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
33
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
34
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
35
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
36
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
37
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
38
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
39
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
40
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
41
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
42
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
43
|
+
npm warn deprecated prebuild-install@7.1.3: No longer maintained. Please contact the author of the relevant native addon; alternatives are available.
|
|
44
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
45
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
46
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
47
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
48
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
49
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
50
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
51
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
52
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
53
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
54
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
55
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
56
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
57
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
58
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
59
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
60
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
61
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
62
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
63
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
64
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
65
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
66
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
67
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
68
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
69
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
70
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
71
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
72
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
73
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
74
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 1: use strict: command not found
|
|
75
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: syntax error near unexpected token `('
|
|
76
|
+
/Users/feral/.npm/_npx/fe561c72834ff84d/node_modules/.bin/polly-gamba: line 2: `var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {'
|
|
77
|
+
npm warn deprecated prebuild-install@7.1.3: No longer maintained. Please contact the author of the relevant native addon; alternatives are available.
|
|
78
|
+
[polly-gamba] Starting paper trading service
|
|
79
|
+
[polly-gamba] Claude cwd: /Users/feral/polly-gamba
|
|
80
|
+
[polly-gamba] Expiring trader cwd: /Users/feral/polly-gamba-expiring
|
|
81
|
+
[coinbase-ws] Connecting to wss://ws-feed.exchange.coinbase.com
|
|
82
|
+
[polly-gamba] Listening for BTC/ETH price signals (threshold: 0.5% in 60s)...
|
|
83
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
84
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
85
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
86
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
87
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
88
|
+
[expiring] 0 expiring markets for review
|
|
89
|
+
[expiring] no expiring markets found this cycle
|
|
90
|
+
[coinbase-ws] Connected
|
|
91
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
92
|
+
[scan] 16 high-quality markets for autonomous review
|
|
93
|
+
[claude-trader:anthropic] ready
|
|
94
|
+
[claude-trader:ollama] ready
|
|
95
|
+
[claude-trader:expiring] ready
|
|
96
|
+
[position-monitor] checked=25 review_candidates=8 (moved>5% or <72h expiry)
|
|
97
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
98
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
99
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
100
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
101
|
+
[position-monitor] checked=25 review_candidates=8 (moved>5% or <72h expiry)
|
|
102
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
103
|
+
[expiring] 0 expiring markets for review
|
|
104
|
+
[expiring] no expiring markets found this cycle
|
|
105
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
106
|
+
[scan] 16 high-quality markets for autonomous review
|
|
107
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
108
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
109
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
110
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
111
|
+
[position-monitor] checked=25 review_candidates=7 (moved>5% or <72h expiry)
|
|
112
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
113
|
+
[expiring] 0 expiring markets for review
|
|
114
|
+
[expiring] no expiring markets found this cycle
|
|
115
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
116
|
+
[scan] 16 high-quality markets for autonomous review
|
|
117
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
118
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
119
|
+
[position-monitor] checked=25 review_candidates=8 (moved>5% or <72h expiry)
|
|
120
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
121
|
+
[scan] 16 high-quality markets for autonomous review
|
|
122
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
123
|
+
[expiring] 0 expiring markets for review
|
|
124
|
+
[expiring] no expiring markets found this cycle
|
|
125
|
+
[polly-gamba] Starting paper trading service
|
|
126
|
+
[polly-gamba] Claude cwd: /Users/feral/polly-gamba
|
|
127
|
+
[polly-gamba] Expiring trader cwd: /Users/feral/polly-gamba-expiring
|
|
128
|
+
[coinbase-ws] Connecting to wss://ws-feed.exchange.coinbase.com
|
|
129
|
+
[polly-gamba] Listening for BTC/ETH price signals (threshold: 0.5% in 60s)...
|
|
130
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
131
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
132
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
133
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
134
|
+
[coinbase-ws] Connected
|
|
135
|
+
[position-monitor] checked=25 review_candidates=8 (moved>5% or <72h expiry)
|
|
136
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
137
|
+
[scan] 16 high-quality markets for autonomous review
|
|
138
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
139
|
+
[expiring] 0 expiring markets for review
|
|
140
|
+
[expiring] no expiring markets found this cycle
|
|
141
|
+
[claude-trader:anthropic] ready
|
|
142
|
+
[claude-trader:ollama] ready
|
|
143
|
+
[claude-trader:expiring] ready
|
|
144
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
145
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
146
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
147
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
148
|
+
[position-monitor] checked=25 review_candidates=8 (moved>5% or <72h expiry)
|
|
149
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
150
|
+
[scan] 16 high-quality markets for autonomous review
|
|
151
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
152
|
+
[expiring] 0 expiring markets for review
|
|
153
|
+
[expiring] no expiring markets found this cycle
|
|
154
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
155
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
156
|
+
[position-monitor] checked=25 review_candidates=8 (moved>5% or <72h expiry)
|
|
157
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
158
|
+
[scan] 16 high-quality markets for autonomous review
|
|
159
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
160
|
+
[expiring] 0 expiring markets for review
|
|
161
|
+
[expiring] no expiring markets found this cycle
|
|
162
|
+
[position-monitor] checked=25 review_candidates=8 (moved>5% or <72h expiry)
|
|
163
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
164
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
165
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
166
|
+
[scan] 16 high-quality markets for autonomous review
|
|
167
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
168
|
+
[expiring] 0 expiring markets for review
|
|
169
|
+
[expiring] no expiring markets found this cycle
|
|
170
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
171
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
172
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
173
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
174
|
+
[position-monitor] checked=24 review_candidates=7 (moved>5% or <72h expiry)
|
|
175
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
176
|
+
[scan] 16 high-quality markets for autonomous review
|
|
177
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
178
|
+
[expiring] 0 expiring markets for review
|
|
179
|
+
[expiring] no expiring markets found this cycle
|
|
180
|
+
[polly-gamba] Starting paper trading service
|
|
181
|
+
[polly-gamba] Claude cwd: /Users/feral/polly-gamba
|
|
182
|
+
[polly-gamba] Expiring trader cwd: /Users/feral/polly-gamba-expiring
|
|
183
|
+
[coinbase-ws] Connecting to wss://ws-feed.exchange.coinbase.com
|
|
184
|
+
[polly-gamba] Listening for BTC/ETH price signals (threshold: 0.5% in 60s)...
|
|
185
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
186
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
187
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
188
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
189
|
+
[coinbase-ws] Connected
|
|
190
|
+
[position-monitor] checked=24 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
191
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
192
|
+
[expiring] 0 expiring markets for review
|
|
193
|
+
[expiring] no expiring markets found this cycle
|
|
194
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
195
|
+
[scan] 16 high-quality markets for autonomous review
|
|
196
|
+
[claude-trader:anthropic] ready
|
|
197
|
+
[claude-trader:ollama] ready
|
|
198
|
+
[claude-trader:expiring] ready
|
|
199
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
200
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
201
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
202
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
203
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
204
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
205
|
+
[expiring] 0 expiring markets for review
|
|
206
|
+
[expiring] no expiring markets found this cycle
|
|
207
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
208
|
+
[scan] 16 high-quality markets for autonomous review
|
|
209
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
210
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
211
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
212
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
213
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
214
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
215
|
+
[scan] 16 high-quality markets for autonomous review
|
|
216
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
217
|
+
[expiring] 0 expiring markets for review
|
|
218
|
+
[expiring] no expiring markets found this cycle
|
|
219
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
220
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
221
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
222
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
223
|
+
[scan] 16 high-quality markets for autonomous review
|
|
224
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
225
|
+
[expiring] 0 expiring markets for review
|
|
226
|
+
[expiring] no expiring markets found this cycle
|
|
227
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
228
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
229
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
230
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
231
|
+
[scan] 16 high-quality markets for autonomous review
|
|
232
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
233
|
+
[expiring] 0 expiring markets for review
|
|
234
|
+
[expiring] no expiring markets found this cycle
|
|
235
|
+
[polly-gamba] Starting paper trading service
|
|
236
|
+
[polly-gamba] Claude cwd: /Users/feral/polly-gamba
|
|
237
|
+
[polly-gamba] Expiring trader cwd: /Users/feral/polly-gamba-expiring
|
|
238
|
+
[coinbase-ws] Connecting to wss://ws-feed.exchange.coinbase.com
|
|
239
|
+
[polly-gamba] Listening for BTC/ETH price signals (threshold: 0.5% in 60s)...
|
|
240
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
241
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
242
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
243
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
244
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
245
|
+
[expiring] 0 expiring markets for review
|
|
246
|
+
[expiring] no expiring markets found this cycle
|
|
247
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
248
|
+
[scan] 16 high-quality markets for autonomous review
|
|
249
|
+
[coinbase-ws] Connected
|
|
250
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
251
|
+
[claude-trader:anthropic] ready
|
|
252
|
+
[claude-trader:ollama] ready
|
|
253
|
+
[claude-trader:expiring] ready
|
|
254
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
255
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
256
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
257
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
258
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
259
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
260
|
+
[expiring] 0 expiring markets for review
|
|
261
|
+
[expiring] no expiring markets found this cycle
|
|
262
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
263
|
+
[scan] 16 high-quality markets for autonomous review
|
|
264
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
265
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
266
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
267
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
268
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
269
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
270
|
+
[scan] 16 high-quality markets for autonomous review
|
|
271
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
272
|
+
[expiring] 0 expiring markets for review
|
|
273
|
+
[expiring] no expiring markets found this cycle
|
|
274
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
275
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
276
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
277
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
278
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
279
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
280
|
+
[scan] 16 high-quality markets for autonomous review
|
|
281
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
282
|
+
[expiring] 0 expiring markets for review
|
|
283
|
+
[expiring] no expiring markets found this cycle
|
|
284
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
285
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
286
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
287
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
288
|
+
[scan] 16 high-quality markets for autonomous review
|
|
289
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
290
|
+
[expiring] 0 expiring markets for review
|
|
291
|
+
[expiring] no expiring markets found this cycle
|
|
292
|
+
[polly-gamba] Starting paper trading service
|
|
293
|
+
[polly-gamba] Claude cwd: /Users/feral/polly-gamba
|
|
294
|
+
[polly-gamba] Expiring trader cwd: /Users/feral/polly-gamba-expiring
|
|
295
|
+
[coinbase-ws] Connecting to wss://ws-feed.exchange.coinbase.com
|
|
296
|
+
[polly-gamba] Listening for BTC/ETH price signals (threshold: 0.5% in 60s)...
|
|
297
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
298
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
299
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
300
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
301
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
302
|
+
[scan] 16 high-quality markets for autonomous review
|
|
303
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
304
|
+
[expiring] 0 expiring markets for review
|
|
305
|
+
[expiring] no expiring markets found this cycle
|
|
306
|
+
[coinbase-ws] Connected
|
|
307
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
308
|
+
[claude-trader:anthropic] ready
|
|
309
|
+
[claude-trader:ollama] ready
|
|
310
|
+
[claude-trader:expiring] ready
|
|
311
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
312
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
313
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
314
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
315
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
316
|
+
[scan] 16 high-quality markets for autonomous review
|
|
317
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
318
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
319
|
+
[expiring] 0 expiring markets for review
|
|
320
|
+
[expiring] no expiring markets found this cycle
|
|
321
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
322
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
323
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
324
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
325
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
326
|
+
[scan] 17 high-quality markets for autonomous review
|
|
327
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
328
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
329
|
+
[expiring] 0 expiring markets for review
|
|
330
|
+
[expiring] no expiring markets found this cycle
|
|
331
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
332
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
333
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
334
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
335
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
336
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
337
|
+
[scan] 16 high-quality markets for autonomous review
|
|
338
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
339
|
+
[expiring] 0 expiring markets for review
|
|
340
|
+
[expiring] no expiring markets found this cycle
|
|
341
|
+
[polly-gamba] Starting paper trading service
|
|
342
|
+
[polly-gamba] Claude cwd: /Users/feral/polly-gamba
|
|
343
|
+
[polly-gamba] Expiring trader cwd: /Users/feral/polly-gamba-expiring
|
|
344
|
+
[coinbase-ws] Connecting to wss://ws-feed.exchange.coinbase.com
|
|
345
|
+
[polly-gamba] Listening for BTC/ETH price signals (threshold: 0.5% in 60s)...
|
|
346
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
347
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
348
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
349
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
350
|
+
[coinbase-ws] Connected
|
|
351
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
352
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
353
|
+
[expiring] 0 expiring markets for review
|
|
354
|
+
[expiring] no expiring markets found this cycle
|
|
355
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
356
|
+
[scan] 17 high-quality markets for autonomous review
|
|
357
|
+
[claude-trader:anthropic] ready
|
|
358
|
+
[claude-trader:ollama] ready
|
|
359
|
+
[claude-trader:expiring] ready
|
|
360
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
361
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
362
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
363
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
364
|
+
[position-monitor] checked=24 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
365
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
366
|
+
[scan] 16 high-quality markets for autonomous review
|
|
367
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
368
|
+
[expiring] 0 expiring markets for review
|
|
369
|
+
[expiring] no expiring markets found this cycle
|
|
370
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
371
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
372
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
373
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
374
|
+
[position-monitor] checked=24 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
375
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
376
|
+
[expiring] 0 expiring markets for review
|
|
377
|
+
[expiring] no expiring markets found this cycle
|
|
378
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
379
|
+
[scan] 15 high-quality markets for autonomous review
|
|
380
|
+
[position-monitor] checked=24 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
381
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
382
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
383
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
384
|
+
[scan] 16 high-quality markets for autonomous review
|
|
385
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
386
|
+
[expiring] 0 expiring markets for review
|
|
387
|
+
[expiring] no expiring markets found this cycle
|
|
388
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
389
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
390
|
+
[position-monitor] checked=24 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
391
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
392
|
+
[scan] 16 high-quality markets for autonomous review
|
|
393
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
394
|
+
[expiring] 0 expiring markets for review
|
|
395
|
+
[expiring] no expiring markets found this cycle
|
|
396
|
+
[polly-gamba] Starting paper trading service
|
|
397
|
+
[polly-gamba] Claude cwd: /Users/feral/polly-gamba
|
|
398
|
+
[polly-gamba] Expiring trader cwd: /Users/feral/polly-gamba-expiring
|
|
399
|
+
[coinbase-ws] Connecting to wss://ws-feed.exchange.coinbase.com
|
|
400
|
+
[polly-gamba] Listening for BTC/ETH price signals (threshold: 0.5% in 60s)...
|
|
401
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
402
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
403
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
404
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
405
|
+
[coinbase-ws] Connected
|
|
406
|
+
[position-monitor] checked=24 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
407
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
408
|
+
[scan] 16 high-quality markets for autonomous review
|
|
409
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
410
|
+
[expiring] 0 expiring markets for review
|
|
411
|
+
[expiring] no expiring markets found this cycle
|
|
412
|
+
[claude-trader:anthropic] ready
|
|
413
|
+
[claude-trader:ollama] ready
|
|
414
|
+
[claude-trader:expiring] ready
|
|
415
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
416
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
417
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
418
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
419
|
+
[position-monitor] checked=24 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
420
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
421
|
+
[expiring] 0 expiring markets for review
|
|
422
|
+
[expiring] no expiring markets found this cycle
|
|
423
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
424
|
+
[scan] 16 high-quality markets for autonomous review
|
|
425
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
426
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
427
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
428
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
429
|
+
[position-monitor] checked=24 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
430
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
431
|
+
[expiring] 0 expiring markets for review
|
|
432
|
+
[expiring] no expiring markets found this cycle
|
|
433
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
434
|
+
[scan] 16 high-quality markets for autonomous review
|
|
435
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
436
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
437
|
+
[scan] failed to fetch markets: fetch failed
|
|
438
|
+
[position-monitor] checked=24 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
439
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
440
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
441
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
442
|
+
[expiring] 0 expiring markets for review
|
|
443
|
+
[expiring] no expiring markets found this cycle
|
|
444
|
+
[polly-gamba] Starting paper trading service
|
|
445
|
+
[polly-gamba] Claude cwd: /Users/feral/polly-gamba
|
|
446
|
+
[polly-gamba] Expiring trader cwd: /Users/feral/polly-gamba-expiring
|
|
447
|
+
[coinbase-ws] Connecting to wss://ws-feed.exchange.coinbase.com
|
|
448
|
+
[polly-gamba] Listening for BTC/ETH price signals (threshold: 0.5% in 60s)...
|
|
449
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
450
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
451
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
452
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
453
|
+
[coinbase-ws] Connected
|
|
454
|
+
[position-monitor] checked=24 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
455
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
456
|
+
[expiring] 0 expiring markets for review
|
|
457
|
+
[expiring] no expiring markets found this cycle
|
|
458
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
459
|
+
[scan] 16 high-quality markets for autonomous review
|
|
460
|
+
[claude-trader:anthropic] ready
|
|
461
|
+
[claude-trader:ollama] ready
|
|
462
|
+
[claude-trader:expiring] ready
|
|
463
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
464
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
465
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
466
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
467
|
+
[position-monitor] checked=24 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
468
|
+
[gamma] Loaded 497 markets (filtered from 500)
|
|
469
|
+
[scan] 16 high-quality markets for autonomous review
|
|
470
|
+
[gamma] Loaded 497 markets (filtered from 500)
|
|
471
|
+
[expiring] 0 expiring markets for review
|
|
472
|
+
[expiring] no expiring markets found this cycle
|
|
473
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
474
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
475
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
476
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
477
|
+
[position-monitor] checked=24 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
478
|
+
[gamma] Loaded 497 markets (filtered from 500)
|
|
479
|
+
[expiring] 0 expiring markets for review
|
|
480
|
+
[expiring] no expiring markets found this cycle
|
|
481
|
+
[gamma] Loaded 497 markets (filtered from 500)
|
|
482
|
+
[scan] 15 high-quality markets for autonomous review
|
|
483
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
484
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
485
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
486
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
487
|
+
[position-monitor] checked=24 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
488
|
+
[gamma] Loaded 497 markets (filtered from 500)
|
|
489
|
+
[expiring] 0 expiring markets for review
|
|
490
|
+
[expiring] no expiring markets found this cycle
|
|
491
|
+
[gamma] Loaded 497 markets (filtered from 500)
|
|
492
|
+
[scan] 15 high-quality markets for autonomous review
|
|
493
|
+
[polly-gamba] Starting paper trading service
|
|
494
|
+
[polly-gamba] Claude cwd: /Users/feral/polly-gamba
|
|
495
|
+
[polly-gamba] Expiring trader cwd: /Users/feral/polly-gamba-expiring
|
|
496
|
+
[coinbase-ws] Connecting to wss://ws-feed.exchange.coinbase.com
|
|
497
|
+
[polly-gamba] Listening for BTC/ETH price signals (threshold: 0.5% in 60s)...
|
|
498
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
499
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
500
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
501
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
502
|
+
[gamma] Loaded 497 markets (filtered from 500)
|
|
503
|
+
[scan] 15 high-quality markets for autonomous review
|
|
504
|
+
[gamma] Loaded 497 markets (filtered from 500)
|
|
505
|
+
[expiring] 0 expiring markets for review
|
|
506
|
+
[expiring] no expiring markets found this cycle
|
|
507
|
+
[coinbase-ws] Connected
|
|
508
|
+
[position-monitor] checked=24 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
509
|
+
[claude-trader:anthropic] ready
|
|
510
|
+
[claude-trader:ollama] ready
|
|
511
|
+
[claude-trader:expiring] ready
|
|
512
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
513
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
514
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
515
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
516
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
517
|
+
[gamma] Loaded 497 markets (filtered from 500)
|
|
518
|
+
[scan] 15 high-quality markets for autonomous review
|
|
519
|
+
[gamma] Loaded 497 markets (filtered from 500)
|
|
520
|
+
[expiring] 0 expiring markets for review
|
|
521
|
+
[expiring] no expiring markets found this cycle
|
|
522
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
523
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
524
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
525
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
526
|
+
[scan] 15 high-quality markets for autonomous review
|
|
527
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
528
|
+
[expiring] 0 expiring markets for review
|
|
529
|
+
[expiring] no expiring markets found this cycle
|
|
530
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
531
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
532
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
533
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
534
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
535
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
536
|
+
[expiring] 0 expiring markets for review
|
|
537
|
+
[expiring] no expiring markets found this cycle
|
|
538
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
539
|
+
[scan] 14 high-quality markets for autonomous review
|
|
540
|
+
[signal] ETH down -0.51% @ $2,072.35 over 61s
|
|
541
|
+
[signal] ETH down 0.51% @ $2,072.35
|
|
542
|
+
[match] 20 markets for ETH signal
|
|
543
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
544
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
545
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
546
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
547
|
+
[scan] failed to fetch markets: fetch failed
|
|
548
|
+
[expiring] failed to fetch markets: fetch failed
|
|
549
|
+
[position-monitor] checked=25 review_candidates=6 hard_stops=0 (moved>5% or <72h expiry)
|
|
550
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
551
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
552
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
553
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
554
|
+
[expiring] failed to fetch markets: fetch failed
|
|
555
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
556
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
557
|
+
[scan] 14 high-quality markets for autonomous review
|
|
558
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
559
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
560
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
561
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
562
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
563
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
564
|
+
[scan] 14 high-quality markets for autonomous review
|
|
565
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
566
|
+
[expiring] 0 expiring markets for review
|
|
567
|
+
[expiring] no expiring markets found this cycle
|
|
568
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
569
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
570
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
571
|
+
[scan] 14 high-quality markets for autonomous review
|
|
572
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
573
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
574
|
+
[expiring] 0 expiring markets for review
|
|
575
|
+
[expiring] no expiring markets found this cycle
|
|
576
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
577
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
578
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
579
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
580
|
+
[scan] 15 high-quality markets for autonomous review
|
|
581
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
582
|
+
[expiring] 0 expiring markets for review
|
|
583
|
+
[expiring] no expiring markets found this cycle
|
|
584
|
+
[polly-gamba] Starting paper trading service
|
|
585
|
+
[polly-gamba] Claude cwd: /Users/feral/polly-gamba
|
|
586
|
+
[polly-gamba] Expiring trader cwd: /Users/feral/polly-gamba-expiring
|
|
587
|
+
[coinbase-ws] Connecting to wss://ws-feed.exchange.coinbase.com
|
|
588
|
+
[polly-gamba] Listening for BTC/ETH price signals (threshold: 0.5% in 60s)...
|
|
589
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
590
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
591
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
592
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
593
|
+
[coinbase-ws] Connected
|
|
594
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
595
|
+
[scan] 15 high-quality markets for autonomous review
|
|
596
|
+
[claude-trader:anthropic] ready
|
|
597
|
+
[claude-trader:ollama] ready
|
|
598
|
+
[claude-trader:expiring] ready
|
|
599
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
600
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
601
|
+
[expiring] 0 expiring markets for review
|
|
602
|
+
[expiring] no expiring markets found this cycle
|
|
603
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
604
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
605
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
606
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
607
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
608
|
+
[expiring] 0 expiring markets for review
|
|
609
|
+
[expiring] no expiring markets found this cycle
|
|
610
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
611
|
+
[scan] 15 high-quality markets for autonomous review
|
|
612
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
613
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
614
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
615
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
616
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
617
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
618
|
+
[gamma] Loaded 497 markets (filtered from 500)
|
|
619
|
+
[scan] 16 high-quality markets for autonomous review
|
|
620
|
+
[gamma] Loaded 497 markets (filtered from 500)
|
|
621
|
+
[expiring] 0 expiring markets for review
|
|
622
|
+
[expiring] no expiring markets found this cycle
|
|
623
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
624
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
625
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
626
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
627
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
628
|
+
[gamma] Loaded 497 markets (filtered from 500)
|
|
629
|
+
[scan] 16 high-quality markets for autonomous review
|
|
630
|
+
[gamma] Loaded 497 markets (filtered from 500)
|
|
631
|
+
[expiring] 0 expiring markets for review
|
|
632
|
+
[expiring] no expiring markets found this cycle
|
|
633
|
+
[polly-gamba] Starting paper trading service
|
|
634
|
+
[polly-gamba] Claude cwd: /Users/feral/polly-gamba
|
|
635
|
+
[polly-gamba] Expiring trader cwd: /Users/feral/polly-gamba-expiring
|
|
636
|
+
[coinbase-ws] Connecting to wss://ws-feed.exchange.coinbase.com
|
|
637
|
+
[polly-gamba] Listening for BTC/ETH price signals (threshold: 0.5% in 60s)...
|
|
638
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
639
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
640
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
641
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
642
|
+
[gamma] Loaded 497 markets (filtered from 500)
|
|
643
|
+
[expiring] 0 expiring markets for review
|
|
644
|
+
[expiring] no expiring markets found this cycle
|
|
645
|
+
[gamma] Loaded 497 markets (filtered from 500)
|
|
646
|
+
[scan] 16 high-quality markets for autonomous review
|
|
647
|
+
[coinbase-ws] Connected
|
|
648
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
649
|
+
[claude-trader:anthropic] ready
|
|
650
|
+
[claude-trader:ollama] ready
|
|
651
|
+
[claude-trader:expiring] ready
|
|
652
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
653
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
654
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
655
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
656
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
657
|
+
[gamma] Loaded 497 markets (filtered from 500)
|
|
658
|
+
[expiring] 0 expiring markets for review
|
|
659
|
+
[expiring] no expiring markets found this cycle
|
|
660
|
+
[gamma] Loaded 497 markets (filtered from 500)
|
|
661
|
+
[scan] 18 high-quality markets for autonomous review
|
|
662
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
663
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
664
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
665
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
666
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
667
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
668
|
+
[expiring] 0 expiring markets for review
|
|
669
|
+
[expiring] no expiring markets found this cycle
|
|
670
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
671
|
+
[scan] 17 high-quality markets for autonomous review
|
|
672
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
673
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
674
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
675
|
+
[gamma] Loaded 496 markets (filtered from 500)
|
|
676
|
+
[scan] 17 high-quality markets for autonomous review
|
|
677
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
678
|
+
[expiring] 0 expiring markets for review
|
|
679
|
+
[expiring] no expiring markets found this cycle
|
|
680
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
681
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
682
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
683
|
+
[gamma] Loaded 495 markets (filtered from 500)
|
|
684
|
+
[scan] 17 high-quality markets for autonomous review
|
|
685
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
686
|
+
[expiring] 0 expiring markets for review
|
|
687
|
+
[expiring] no expiring markets found this cycle
|
|
688
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
689
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
690
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
691
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
692
|
+
[expiring] failed to fetch markets: fetch failed
|
|
693
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
694
|
+
[gamma] Loaded 495 markets (filtered from 500)
|
|
695
|
+
[scan] 17 high-quality markets for autonomous review
|
|
696
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
697
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
698
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
699
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
700
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
701
|
+
[gamma] Loaded 495 markets (filtered from 500)
|
|
702
|
+
[scan] 17 high-quality markets for autonomous review
|
|
703
|
+
[gamma] Loaded 495 markets (filtered from 500)
|
|
704
|
+
[expiring] 0 expiring markets for review
|
|
705
|
+
[expiring] no expiring markets found this cycle
|
|
706
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
707
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
708
|
+
[scan] failed to fetch markets: fetch failed
|
|
709
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
710
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
711
|
+
[position-monitor] WARNING: no price data for 562187 YES — skipping review (market may be resolved or delisted)
|
|
712
|
+
[position-monitor] checked=25 review_candidates=6 hard_stops=0 (moved>5% or <72h expiry)
|
|
713
|
+
[gamma] Loaded 495 markets (filtered from 500)
|
|
714
|
+
[expiring] 0 expiring markets for review
|
|
715
|
+
[expiring] no expiring markets found this cycle
|
|
716
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
717
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
718
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
719
|
+
[gamma] Loaded 495 markets (filtered from 500)
|
|
720
|
+
[scan] 17 high-quality markets for autonomous review
|
|
721
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
722
|
+
[expiring] 0 expiring markets for review
|
|
723
|
+
[expiring] no expiring markets found this cycle
|
|
724
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
725
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
726
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
727
|
+
[gamma] Loaded 495 markets (filtered from 500)
|
|
728
|
+
[scan] 16 high-quality markets for autonomous review
|
|
729
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
730
|
+
[expiring] 0 expiring markets for review
|
|
731
|
+
[expiring] no expiring markets found this cycle
|
|
732
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
733
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
734
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
735
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
736
|
+
[scan] failed to fetch markets: fetch failed
|
|
737
|
+
[position-monitor] WARNING: no price data for 567560 YES — skipping review (market may be resolved or delisted)
|
|
738
|
+
[position-monitor] WARNING: no price data for 567687 NO — skipping review (market may be resolved or delisted)
|
|
739
|
+
[position-monitor] WARNING: no price data for 562187 YES — skipping review (market may be resolved or delisted)
|
|
740
|
+
[position-monitor] checked=25 review_candidates=5 hard_stops=0 (moved>5% or <72h expiry)
|
|
741
|
+
[gamma] Loaded 495 markets (filtered from 500)
|
|
742
|
+
[expiring] 0 expiring markets for review
|
|
743
|
+
[expiring] no expiring markets found this cycle
|
|
744
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
745
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
746
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
747
|
+
[gamma] Loaded 495 markets (filtered from 500)
|
|
748
|
+
[scan] 16 high-quality markets for autonomous review
|
|
749
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
750
|
+
[expiring] 0 expiring markets for review
|
|
751
|
+
[expiring] no expiring markets found this cycle
|
|
752
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
753
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
754
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
755
|
+
[gamma] Loaded 495 markets (filtered from 500)
|
|
756
|
+
[scan] 16 high-quality markets for autonomous review
|
|
757
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
758
|
+
[expiring] 0 expiring markets for review
|
|
759
|
+
[expiring] no expiring markets found this cycle
|
|
760
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
761
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
762
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
763
|
+
[gamma] Loaded 495 markets (filtered from 500)
|
|
764
|
+
[scan] 16 high-quality markets for autonomous review
|
|
765
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
766
|
+
[expiring] 0 expiring markets for review
|
|
767
|
+
[expiring] no expiring markets found this cycle
|
|
768
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
769
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
770
|
+
[position-monitor] WARNING: no price data for 561974 YES — skipping review (market may be resolved or delisted)
|
|
771
|
+
[position-monitor] WARNING: no price data for 567561 NO — skipping review (market may be resolved or delisted)
|
|
772
|
+
[position-monitor] WARNING: no price data for 567560 YES — skipping review (market may be resolved or delisted)
|
|
773
|
+
[position-monitor] WARNING: no price data for 567687 NO — skipping review (market may be resolved or delisted)
|
|
774
|
+
[position-monitor] WARNING: no price data for 562187 YES — skipping review (market may be resolved or delisted)
|
|
775
|
+
[position-monitor] checked=25 review_candidates=4 hard_stops=0 (moved>5% or <72h expiry)
|
|
776
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
777
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
778
|
+
[gamma] Loaded 495 markets (filtered from 500)
|
|
779
|
+
[scan] 16 high-quality markets for autonomous review
|
|
780
|
+
[gamma] Loaded 495 markets (filtered from 500)
|
|
781
|
+
[expiring] 0 expiring markets for review
|
|
782
|
+
[expiring] no expiring markets found this cycle
|
|
783
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
784
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
785
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
786
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
787
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
788
|
+
[gamma] Loaded 495 markets (filtered from 500)
|
|
789
|
+
[expiring] 0 expiring markets for review
|
|
790
|
+
[expiring] no expiring markets found this cycle
|
|
791
|
+
[gamma] Loaded 495 markets (filtered from 500)
|
|
792
|
+
[scan] 17 high-quality markets for autonomous review
|
|
793
|
+
[scan] fetching high-quality markets (vol24h>$50k, liq>$50k, price 0.10-0.90)
|
|
794
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
795
|
+
[expiring] fetching expiring markets (closing within 72h, vol24h>$10k, liq>$10k, price 0.05-0.95)
|
|
796
|
+
[gamma] Fetching active markets from https://gamma-api.polymarket.com/markets?active=true&closed=false&limit=500
|
|
797
|
+
[position-monitor] checked=25 review_candidates=7 hard_stops=0 (moved>5% or <72h expiry)
|
|
798
|
+
[gamma] Loaded 495 markets (filtered from 500)
|
|
799
|
+
[scan] 17 high-quality markets for autonomous review
|
|
800
|
+
[gamma] Loaded 495 markets (filtered from 500)
|
|
801
|
+
[expiring] 0 expiring markets for review
|
|
802
|
+
[expiring] no expiring markets found this cycle
|
package/src/claude-trader.ts
CHANGED
|
@@ -120,7 +120,7 @@ export class ClaudeTrader {
|
|
|
120
120
|
role: 'user',
|
|
121
121
|
content: `You are a Polymarket ${PAPER_MODE ? 'PAPER TRADING (no real money)' : 'paper'} trader running a high-volume moneyball strategy. Your job is to place paper trades on EVERY market where you have ANY opinion on fair value — even slight.
|
|
122
122
|
${PAPER_MODE ? '\n⚠️ PAPER MODE: This is a test environment. Be AGGRESSIVE — trade more, skip less. Lower your threshold to 3% edge for any market resolving within 6 months.\n' : ''}
|
|
123
|
-
TOOLS: place_order, skip_all, get_budget_status
|
|
123
|
+
TOOLS: place_order, skip_all, get_budget_status, get_positions
|
|
124
124
|
RULES:
|
|
125
125
|
- Output ONLY tool calls. Zero prose.
|
|
126
126
|
- For EVERY market in the list: if current price differs from your estimated fair probability by more than ${PAPER_MODE ? '3%' : '5%'}, place a trade.
|
|
@@ -134,7 +134,7 @@ RULES:
|
|
|
134
134
|
- Max $100 per market (20% of $500 budget). The MCP enforces this — don't fight it.
|
|
135
135
|
- To add to an existing position with the SAME outcome: (1) you MUST cite a specific new catalyst (news published in last 24h, not price movement), AND (2) the current price must be ≥20% below your last entry price (e.g. if you bought YES at 0.15, new entry only valid at ≤0.12). The MCP enforces this — attempts at a smaller discount will be rejected. Price dipping alone is NOT a catalyst. New information is a catalyst.
|
|
136
136
|
- exit_trigger is required on every trade. Be specific: "Exit when price hits 0.X" or "Exit when [specific news event]" — not "when narrative converges."
|
|
137
|
-
- Call get_budget_status at the start of each scan to know available capital.`
|
|
137
|
+
- Call get_budget_status AND get_positions at the start of each scan to know available capital and your current open positions. get_positions returns {"positions": [...], "closed_markets": [...]}. You MUST review BOTH before trading to apply concentration AND closed-market discipline correctly.`
|
|
138
138
|
}
|
|
139
139
|
}))
|
|
140
140
|
this.ready = true
|
|
@@ -241,7 +241,21 @@ ${m.description ? `- Description: ${m.description.slice(0, 200)}` : ''}`).join('
|
|
|
241
241
|
- Similarly: "Will Orbán be PM" and "Will Magyar be PM" are both the Hungary 2026 election — treat as same theme (you may hold both as a hedge pair, but do not add a third Hungary position).
|
|
242
242
|
- If you're uncertain whether a market correlates to an existing theme, assume it does and skip.
|
|
243
243
|
|
|
244
|
-
|
|
244
|
+
## CLOSED MARKET DISCIPLINE (absolute rule — never override):
|
|
245
|
+
- get_positions returns a JSON object with two keys: "positions" (open) and "closed_markets" (previously exited).
|
|
246
|
+
- NEVER place a new order for any market_id+outcome combination that appears in closed_markets. This is enforced server-side and will be rejected anyway.
|
|
247
|
+
- The reason: re-entering a market you already exited is a sign of anchoring bias. If the thesis was wrong once, sportsbook odds movement is not sufficient justification. Accept the loss and redeploy capital elsewhere.
|
|
248
|
+
|
|
249
|
+
## SPORTSBOOK CROSS-CHECK DISCIPLINE (apply when estimating fair value):
|
|
250
|
+
- Sportsbooks measure betting DEMAND, not calibrated probability. Polymarket is often better calibrated on liquid markets (>$50k volume).
|
|
251
|
+
- When fair value is primarily derived from sportsbook lines (e.g. "DraftKings has X at +225 implying 30%"), apply a 50% haircut to the apparent cross-market edge. Example: sportsbooks imply 30%, Polymarket shows 15% → effective edge = (30%×0.8 − 15%) = 9pp, not 15pp.
|
|
252
|
+
- Sportsbook-derived estimates MUST exceed the horizon threshold AFTER the 50% haircut. Do not enter based purely on sportsbook arbitrage at small gaps.
|
|
253
|
+
- Anchor fair value on base rates and world knowledge first; use sportsbooks to adjust by ±5pp only. If you cannot defend the estimate without the sportsbook line, the edge is too speculative.
|
|
254
|
+
- Exception: if both Polymarket AND sportsbooks agree with your base-rate analysis, the convergence strengthens the thesis.
|
|
255
|
+
|
|
256
|
+
STEP 1: Call get_positions to see your current open positions AND closed_markets — required before evaluating any market.
|
|
257
|
+
STEP 2: For each market, apply horizon discipline, concentration discipline, AND closed market discipline (using the data from step 1).
|
|
258
|
+
STEP 3: If price differs from your fair probability by the required edge (accounting for sportsbook haircut if applicable), place a trade ($10 USDC). Call skip_all only if you have zero opinion on all markets.`
|
|
245
259
|
|
|
246
260
|
const msg = JSON.stringify({
|
|
247
261
|
type: 'user',
|
|
@@ -347,6 +361,7 @@ CLOSE RULES — apply ALL that match, no thesis override allowed:
|
|
|
347
361
|
4. Position is down >50% — HARD CLOSE regardless of thesis. Cut losses. No exceptions.
|
|
348
362
|
5. You have 2+ open positions in the SAME market with the SAME outcome — close the NEWER entry (higher ts value) regardless of P&L. Duplicate same-outcome positions double exposure without incremental edge. Keep the original entry.
|
|
349
363
|
6. Position is UP >25% from entry AND has been held >48h — CLOSE to lock in profits. The market has moved significantly in your favor; gains are now vulnerable to reversion. Use take_profit reason. Exception: if the resolution event is within 7 days AND the position is still clearly on the right side, you may hold until resolution.
|
|
364
|
+
7. STALE POSITION: Position held >7 days AND price has moved <5% from entry AND resolution event is >30 days away — CLOSE to redeploy capital. A position that doesn't move over 7 days means the mispricing wasn't as large as estimated. Cut it, accept the small loss/gain, and redeploy to markets with active price movement.
|
|
350
365
|
|
|
351
366
|
HOLD RULES: If NONE of the close rules apply and exit trigger NOT triggered, do nothing (no output needed).`
|
|
352
367
|
|
package/src/mcp-server.ts
CHANGED
|
@@ -126,6 +126,13 @@ server.setRequestHandler(CallToolRequestSchema, async (req) => {
|
|
|
126
126
|
return !closedIds.has(`${p.market_id}_${p.outcome}_${p.ts}`)
|
|
127
127
|
})
|
|
128
128
|
|
|
129
|
+
// Block re-entry into previously closed market+outcome combos
|
|
130
|
+
const marketOutcomePrefix = `${a.market_id}_${a.outcome}_`
|
|
131
|
+
const wasClosedBefore = Array.from(closedIds).some(id => id.startsWith(marketOutcomePrefix))
|
|
132
|
+
if (wasClosedBefore) {
|
|
133
|
+
return { content: [{ type: 'text', text: `Error: Re-entry blocked. This market+outcome (${a.market_id} ${a.outcome}) was previously closed. Polly-gamba does not re-enter previously exited positions to prevent repeated losses on the same bet.` }] }
|
|
134
|
+
}
|
|
135
|
+
|
|
129
136
|
// Validate using extracted business logic (includes input validation + budget checks)
|
|
130
137
|
const validationError = validatePlaceOrder(
|
|
131
138
|
{ market_id: a.market_id, outcome: a.outcome, size_usdc: a.size_usdc, price: a.price, new_catalyst: a.new_catalyst },
|
|
@@ -192,8 +199,21 @@ server.setRequestHandler(CallToolRequestSchema, async (req) => {
|
|
|
192
199
|
const key = `${p.market_id}_${p.outcome}_${p.ts}`
|
|
193
200
|
return !closedIds.has(key)
|
|
194
201
|
})
|
|
202
|
+
// Expose previously-closed market+outcome combos so Claude can avoid re-entry
|
|
203
|
+
const closedMarkets = Array.from(closedIds).map(key => {
|
|
204
|
+
const parts = key.split('_')
|
|
205
|
+
return { market_id: parts[0], outcome: parts[1] }
|
|
206
|
+
})
|
|
207
|
+
// Deduplicate
|
|
208
|
+
const seen = new Set<string>()
|
|
209
|
+
const uniqueClosedMarkets = closedMarkets.filter(m => {
|
|
210
|
+
const k = `${m.market_id}_${m.outcome}`
|
|
211
|
+
if (seen.has(k)) return false
|
|
212
|
+
seen.add(k)
|
|
213
|
+
return true
|
|
214
|
+
})
|
|
195
215
|
return {
|
|
196
|
-
content: [{ type: 'text', text: JSON.stringify(positions, null, 2) }]
|
|
216
|
+
content: [{ type: 'text', text: JSON.stringify({ positions, closed_markets: uniqueClosedMarkets }, null, 2) }]
|
|
197
217
|
}
|
|
198
218
|
}
|
|
199
219
|
|
package/src/position-monitor.ts
CHANGED
|
@@ -73,15 +73,23 @@ export class PositionMonitor {
|
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
// Deduplicate market fetches keyed by marketId_outcome
|
|
76
|
+
// Throttle to 5 concurrent fetches to avoid Gamma API rate limiting
|
|
76
77
|
const marketPriceCache = new Map<string, MarketPrice | null>()
|
|
77
78
|
const uniqueKeys = [...new Set(toCheck.map(p => `${p.market_id}|${p.outcome}`))]
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
79
|
+
const BATCH_SIZE = 5
|
|
80
|
+
for (let i = 0; i < uniqueKeys.length; i += BATCH_SIZE) {
|
|
81
|
+
const batch = uniqueKeys.slice(i, i + BATCH_SIZE)
|
|
82
|
+
await Promise.all(batch.map(async (key) => {
|
|
83
|
+
const sep = key.indexOf('|')
|
|
84
|
+
const marketId = key.slice(0, sep)
|
|
85
|
+
const outcome = key.slice(sep + 1)
|
|
86
|
+
const result = await this.fetchCurrentPrice(marketId, outcome).catch(() => null)
|
|
87
|
+
marketPriceCache.set(key, result)
|
|
88
|
+
}))
|
|
89
|
+
if (i + BATCH_SIZE < uniqueKeys.length) {
|
|
90
|
+
await new Promise(resolve => setTimeout(resolve, 200))
|
|
91
|
+
}
|
|
92
|
+
}
|
|
85
93
|
|
|
86
94
|
// Build review candidates with current price data for Claude
|
|
87
95
|
const reviewCandidates: Array<{
|
|
@@ -109,8 +117,11 @@ export class PositionMonitor {
|
|
|
109
117
|
const gain = (currentPrice.price - entryPrice) / entryPrice
|
|
110
118
|
const hoursToEnd = (new Date(currentPrice.endDate).getTime() - Date.now()) / (1000 * 60 * 60)
|
|
111
119
|
|
|
112
|
-
|
|
113
|
-
|
|
120
|
+
const hoursHeld = (Date.now() - pos.ts) / (1000 * 60 * 60)
|
|
121
|
+
const isStale = hoursHeld >= 168 && Math.abs(gain) < 0.05 // held >7d with <5% movement
|
|
122
|
+
|
|
123
|
+
// Send to Claude if: moved >5% either way, <72h to expiry, or stale (>7d no movement)
|
|
124
|
+
if (Math.abs(gain) >= 0.05 || hoursToEnd <= 72 || isStale) {
|
|
114
125
|
reviewCandidates.push({
|
|
115
126
|
market_id: pos.market_id,
|
|
116
127
|
market_question: pos.market_question,
|
|
@@ -199,7 +210,9 @@ export class PositionMonitor {
|
|
|
199
210
|
|
|
200
211
|
private async fetchCurrentPrice(marketId: string, outcome: string): Promise<MarketPrice | null> {
|
|
201
212
|
try {
|
|
202
|
-
const res = await fetch(`https://gamma-api.polymarket.com/markets/${marketId}
|
|
213
|
+
const res = await fetch(`https://gamma-api.polymarket.com/markets/${marketId}`, {
|
|
214
|
+
headers: { 'User-Agent': 'Mozilla/5.0 (compatible; polly-gamba/1.0)' }
|
|
215
|
+
})
|
|
203
216
|
if (!res.ok) return null
|
|
204
217
|
const data = await res.json() as any
|
|
205
218
|
|