opencode-skills-collection 4.0.73 → 4.0.75
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/bundled-skills/.antigravity-install-manifest.json +16 -1
- package/bundled-skills/claude-api/SKILL.md +4 -4
- package/bundled-skills/claude-api/curl/examples.md +5 -5
- package/bundled-skills/claude-api/java/claude-api.md +1 -1
- package/bundled-skills/claude-api/php/claude-api.md +2 -2
- package/bundled-skills/claude-api/python/claude-api/README.md +13 -13
- package/bundled-skills/claude-api/python/claude-api/batches.md +3 -3
- package/bundled-skills/claude-api/python/claude-api/files-api.md +3 -3
- package/bundled-skills/claude-api/python/claude-api/streaming.md +6 -6
- package/bundled-skills/claude-api/python/claude-api/tool-use.md +19 -19
- package/bundled-skills/claude-api/ruby/claude-api.md +3 -3
- package/bundled-skills/claude-api/shared/error-codes.md +2 -2
- package/bundled-skills/claude-api/shared/live-sources.md +1 -1
- package/bundled-skills/claude-api/shared/models.md +4 -4
- package/bundled-skills/claude-api/shared/tool-use-concepts.md +2 -2
- package/bundled-skills/claude-api/typescript/claude-api/README.md +12 -12
- package/bundled-skills/claude-api/typescript/claude-api/batches.md +2 -2
- package/bundled-skills/claude-api/typescript/claude-api/files-api.md +1 -1
- package/bundled-skills/claude-api/typescript/claude-api/streaming.md +4 -4
- package/bundled-skills/claude-api/typescript/claude-api/tool-use.md +14 -14
- package/bundled-skills/electron-drive-skill/LICENSE +21 -0
- package/bundled-skills/electron-drive-skill/README.md +172 -0
- package/bundled-skills/electron-drive-skill/SKILL.md +237 -0
- package/bundled-skills/electron-drive-skill/drive.config.json.example +10 -0
- package/bundled-skills/electron-drive-skill/package.json +28 -0
- package/bundled-skills/electron-drive-skill/scripts/daemon.mjs +352 -0
- package/bundled-skills/electron-drive-skill/scripts/drive.mjs +250 -0
- package/bundled-skills/electron-drive-skill/scripts/lib.mjs +165 -0
- package/bundled-skills/electron-drive-skill/scripts/lib.test.mjs +56 -0
- package/bundled-skills/film-crew/SKILL.md +129 -0
- package/bundled-skills/film-crew/references/model-prompting.md +89 -0
- package/bundled-skills/film-crew/references/reroll-review.md +46 -0
- package/bundled-skills/film-crew/references/roles/director.md +38 -0
- package/bundled-skills/film-crew/references/roles/dp.md +28 -0
- package/bundled-skills/film-crew/references/roles/editor.md +34 -0
- package/bundled-skills/film-crew/references/roles/gaffer.md +30 -0
- package/bundled-skills/film-crew/references/roles/production-designer.md +43 -0
- package/bundled-skills/film-crew/references/roles/script-supervisor.md +35 -0
- package/bundled-skills/film-crew/references/roles/sound.md +23 -0
- package/bundled-skills/film-crew/references/templates/shot-list.md +38 -0
- package/bundled-skills/film-crew/references/unslop.md +29 -0
- package/bundled-skills/mcp-dependency-drift-audit/SKILL.md +169 -0
- package/bundled-skills/nexrad-mosaic-access/SKILL.md +297 -0
- package/bundled-skills/nexrad-mosaic-construction/SKILL.md +277 -0
- package/bundled-skills/nexrad-product-access/SKILL.md +258 -0
- package/bundled-skills/nexrad-radar-visualization/SKILL.md +318 -0
- package/bundled-skills/radar-satellite-analysis/SKILL.md +314 -0
- package/bundled-skills/testdriver-e2e-testing/SKILL.md +121 -0
- package/bundled-skills/traderspy-market-briefing/SKILL.md +132 -0
- package/bundled-skills/traderspy-market-screener/SKILL.md +182 -0
- package/bundled-skills/traderspy-market-screener/references/condition-cookbook.md +70 -0
- package/bundled-skills/traderspy-position-check/SKILL.md +130 -0
- package/bundled-skills/traderspy-position-check/references/risk-math.md +60 -0
- package/bundled-skills/traderspy-smart-money/SKILL.md +151 -0
- package/bundled-skills/traderspy-smart-money/references/exchange-notes.md +40 -0
- package/bundled-skills/traderspy-technical-analysis/SKILL.md +162 -0
- package/bundled-skills/traderspy-technical-analysis/references/derivatives-guide.md +57 -0
- package/bundled-skills/traderspy-technical-analysis/references/indicator-guide.md +47 -0
- package/bundled-skills/traderspy-trading-signals/SKILL.md +156 -0
- package/bundled-skills/traderspy-trading-signals/references/signal-fields.md +64 -0
- package/bundled-skills/unified-ai-gateway/SKILL.md +3 -3
- package/package.json +1 -1
- package/skills_index.json +499 -1
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: traderspy-market-screener
|
|
3
|
+
description: "Scan the most-traded crypto futures pairs for up to 3 technical conditions in one TraderSpy call, compare coins, and backtest what followed a condition. Use for \"which coins are oversold\"."
|
|
4
|
+
category: finance
|
|
5
|
+
risk: safe
|
|
6
|
+
source: "https://github.com/target1m/traderspy-mcp/tree/069aae5a84640d671f92705a2e3bc0b62efca1e0/skills/market-screener"
|
|
7
|
+
source_repo: target1m/traderspy-mcp
|
|
8
|
+
source_type: official
|
|
9
|
+
date_added: "2026-09-25"
|
|
10
|
+
author: target1m
|
|
11
|
+
tags: [traderspy, crypto, screener, backtesting, mcp]
|
|
12
|
+
tools: [claude, cursor, gemini]
|
|
13
|
+
license: MIT
|
|
14
|
+
license_source: "https://github.com/target1m/traderspy-mcp/blob/069aae5a84640d671f92705a2e3bc0b62efca1e0/LICENSE"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# TraderSpy Market Screener
|
|
18
|
+
|
|
19
|
+
Two tools, one vocabulary. `screen_symbols` evaluates up to three AND-ed conditions across the
|
|
20
|
+
most-traded pairs (or a list you give it) on one timeframe, in ONE quota unit. `backtest_condition`
|
|
21
|
+
takes the same conditions, one symbol and one timeframe, and reports what price did after every
|
|
22
|
+
past occurrence — with the unconditional baseline so the edge is separated from the tape's drift.
|
|
23
|
+
|
|
24
|
+
Together they answer the two questions traders actually ask: "what fits this pattern right now?"
|
|
25
|
+
and "has this pattern meant anything before?"
|
|
26
|
+
|
|
27
|
+
## When to Use
|
|
28
|
+
|
|
29
|
+
- Use when the user wants to find, filter, rank or compare several coins by technical conditions: "which coins are oversold on the 4h", "what is above its 200 EMA with rising volume", "show me Bollinger squeezes", "find me setups".
|
|
30
|
+
- Use for side-by-side comparison tables such as "compare BTC, ETH and SOL".
|
|
31
|
+
- Use when the user asks what happened after a condition in the past: "how did ETH do after RSI dropped below 30", "is a golden cross on BTC daily actually bullish".
|
|
32
|
+
- Never answer these by calling `get_technical_indicators` coin by coin. For a deep read of one coin use `@traderspy-technical-analysis`.
|
|
33
|
+
|
|
34
|
+
## The condition vocabulary
|
|
35
|
+
|
|
36
|
+
A condition is `{ metric, op, value, period?, period2? }`. `op` is `lt` / `gt` (latest value) or
|
|
37
|
+
`crossAbove` / `crossBelow` (a one-bar event: the previous bar was on the other side).
|
|
38
|
+
|
|
39
|
+
| Metric | Default period | Unit / meaning |
|
|
40
|
+
| --- | --- | --- |
|
|
41
|
+
| `rsi` | 14 | 0–100 |
|
|
42
|
+
| `stochastic` | 14, %D 3 | slow %K, 0–100 |
|
|
43
|
+
| `cci` | 20 | Commodity Channel Index (±100 typical bands) |
|
|
44
|
+
| `mfi` | 14 | 0–100, volume-weighted RSI |
|
|
45
|
+
| `williamsR` | 14 | −100…0 (−80 oversold, −20 overbought) |
|
|
46
|
+
| `adx` | 14 | trend strength; > 25 strong, < 20 absent |
|
|
47
|
+
| `roc` | 12 | rate of change, % |
|
|
48
|
+
| `macdHistogram` | 12, 26 (signal 9) | histogram in price units; `crossAbove 0` = bullish MACD cross |
|
|
49
|
+
| `atrPct` | 14 | ATR as % of price — volatility |
|
|
50
|
+
| `volumeRatio` | 20 | bar volume ÷ average of the previous N bars |
|
|
51
|
+
| `bbPercentB` | 20 (2σ) | 0 = lower band, 1 = upper band; < 0 or > 1 = outside |
|
|
52
|
+
| `bbWidthPct` | 20 | band width as % of the middle — small = squeeze |
|
|
53
|
+
| `priceVsEma` | 50 | % distance of close from EMA(period); > 0 above |
|
|
54
|
+
| `emaSpread` | 50, 200 | % of EMA(period) over EMA(period2); `crossAbove 0` = golden cross |
|
|
55
|
+
| `supertrend` | 10 (×3) | +1 up-trend, −1 down-trend |
|
|
56
|
+
| `changePct` | 24 | % change of close over the last N BARS (on 1h, 24 = one day) |
|
|
57
|
+
| `price` | — | close |
|
|
58
|
+
|
|
59
|
+
Periods clamp to 2–200. Conditions are AND-ed; there is no OR — run two scans for an OR and merge.
|
|
60
|
+
Unknown metrics are rejected, so stick to the table (the full recipe list is in
|
|
61
|
+
`references/condition-cookbook.md`).
|
|
62
|
+
|
|
63
|
+
## Screening (`screen_symbols`)
|
|
64
|
+
|
|
65
|
+
Arguments: `interval` (default 4h), `conditions` (≤ 3), `universe` (5–100 most-traded by 24h
|
|
66
|
+
volume, default 50) OR `symbols` (≤ 100, explicit), `limit` (≤ 50 rows), `sortBy` volume /
|
|
67
|
+
change24h / metric, `sortOrder`.
|
|
68
|
+
|
|
69
|
+
Choose the timeframe from the user's horizon: intraday → `1h` (or `15m`), swing → `4h`, position →
|
|
70
|
+
`1d`. Widen `universe` to 100 when the user wants small caps or the first scan matched little.
|
|
71
|
+
|
|
72
|
+
Every result row carries the metric values under their labels (`values["RSI(14)"]`), plus `price`,
|
|
73
|
+
`change24hPct`, `volume24hUsd`, `bias`, `trend`, `rsi14`, `adx14`, `atrPct`, `volumeRatio`,
|
|
74
|
+
`squeeze`. When `matched` > `returned`, say so and offer to raise `limit`.
|
|
75
|
+
|
|
76
|
+
**Comparison mode**: `symbols` with no `conditions` returns every listed symbol as a table — this is
|
|
77
|
+
how you answer "compare BTC, ETH and SOL" or "how do my five coins look on the daily".
|
|
78
|
+
|
|
79
|
+
**Translate intent to conditions before calling**, and say what you translated it to:
|
|
80
|
+
|
|
81
|
+
- "oversold" → `rsi lt 30` (or 35 for a wider net); "deeply oversold" add `bbPercentB lt 0`
|
|
82
|
+
- "overbought" → `rsi gt 70`
|
|
83
|
+
- "in an uptrend" → `priceVsEma gt 0 period 200` + `supertrend gt 0`
|
|
84
|
+
- "with rising volume" → `volumeRatio gt 1.5`
|
|
85
|
+
- "squeezing" → `bbWidthPct lt 4` on 4h (lower on 1h) — then sort by metric ascending
|
|
86
|
+
- "dumped today" → `changePct lt -5 period 24` on 1h, or `period 6` on 4h
|
|
87
|
+
- "golden cross" → `emaSpread crossAbove 0 period 50 period2 200` on 1d
|
|
88
|
+
|
|
89
|
+
## Backtesting (`backtest_condition`)
|
|
90
|
+
|
|
91
|
+
Arguments: `symbol`, `interval`, `conditions` (same vocabulary), `horizons` in bars (≤ 4; defaults
|
|
92
|
+
≈ 4h / 1d / 3d: 1h → [4, 24, 72], 4h → [6, 18, 42], 1d → [1, 3, 7]).
|
|
93
|
+
|
|
94
|
+
The study runs over the whole stored tape — up to 1000 candles, so roughly 41 days on 1h, 166
|
|
95
|
+
days on 4h, 3 years on 1d. An "occurrence" is the FIRST bar of each run where the condition held
|
|
96
|
+
(ten consecutive oversold bars are one episode). For each horizon you get `samples`,
|
|
97
|
+
`avgReturnPct`, `medianReturnPct`, `winRatePct`, `avgMaxUpPct` / `avgMaxDownPct` (average best and
|
|
98
|
+
worst excursion, wick-accurate), `bestPct` / `worstPct`, `baselineAvgReturnPct` (every bar on the
|
|
99
|
+
same tape) and `edgePct` = average − baseline. Also `activeNow`, `currentValues`, `lastOccurrence`,
|
|
100
|
+
and `recent[]` with the last five episodes and their realised returns.
|
|
101
|
+
|
|
102
|
+
How to read it honestly:
|
|
103
|
+
|
|
104
|
+
- **Edge and sample size travel together.** `edgePct +1.8 on 27 samples` is a statement;
|
|
105
|
+
`+6 on 4 samples` is an anecdote, and the tool says so in `warnings`. Never quote the edge alone.
|
|
106
|
+
- **Median vs average**: a positive average with a negative median means a few big winners carried
|
|
107
|
+
it. Say which.
|
|
108
|
+
- **Excursions are the risk picture**: `avgMaxDownPct −5.1` on a "bullish" setup means the average
|
|
109
|
+
episode went 5% against you before the horizon ended. That belongs next to the win rate.
|
|
110
|
+
- **Horizons that disagree** (positive at 1d, negative at 3d) usually mean a bounce that fades —
|
|
111
|
+
report the shape, do not pick the flattering horizon.
|
|
112
|
+
- Recent episodes newer than a horizon are excluded from that horizon (`null` in `recent`), never
|
|
113
|
+
counted as zero.
|
|
114
|
+
- Coverage limits what the study can see: 41 days of 1h data contains one market regime. A 1d
|
|
115
|
+
study is the only one that spans cycles.
|
|
116
|
+
|
|
117
|
+
## Workflows
|
|
118
|
+
|
|
119
|
+
**"What's oversold right now?"** → one `screen_symbols`. Present the table, then (optional, one more
|
|
120
|
+
call) `backtest_condition` the same condition on the top match so the answer carries "and here is
|
|
121
|
+
what that has meant on this coin before".
|
|
122
|
+
|
|
123
|
+
**"Find me setups" / "watchlist"** → decide the archetype with the user in one line (mean-reversion
|
|
124
|
+
vs trend-continuation vs breakout), run one scan per archetype (2–3 calls), and present each list
|
|
125
|
+
with the conditions it was built from. Do not promise an outcome for any row.
|
|
126
|
+
|
|
127
|
+
**"Is X actually bullish?"** → one `backtest_condition` on the coin and timeframe in question;
|
|
128
|
+
if the user names no coin, BTC on 1d is the most meaningful default and say why (longest tape).
|
|
129
|
+
|
|
130
|
+
**"Compare A, B, C"** → `screen_symbols` with `symbols`, no conditions, on the timeframe they care
|
|
131
|
+
about. Add `get_derivatives` (technical-analysis) only if the question includes funding or
|
|
132
|
+
positioning.
|
|
133
|
+
|
|
134
|
+
## Presenting
|
|
135
|
+
|
|
136
|
+
Screen: state the conditions in words and in the tool's labels, the timeframe, and the universe
|
|
137
|
+
("50 most-traded pairs"), then one row per symbol:
|
|
138
|
+
|
|
139
|
+
| Symbol | Price | 24h % | <metric labels…> | Bias | Trend | ADX | ATR% |
|
|
140
|
+
|
|
141
|
+
Backtest: one header line (symbol, timeframe, condition, occurrences, coverage), a horizon table —
|
|
142
|
+
|
|
143
|
+
| Horizon | Samples | Avg % | Median % | Win % | Avg best % | Avg worst % | Baseline % | Edge % |
|
|
144
|
+
|
|
145
|
+
— then the last episodes and whether the condition is active now. Close with the sample-size
|
|
146
|
+
caveat in your own words.
|
|
147
|
+
|
|
148
|
+
## Conduct
|
|
149
|
+
|
|
150
|
+
- A screen is a list of things that are true about the chart right now; a backtest is a sample of
|
|
151
|
+
what followed in the past. Neither is a recommendation. Present the evidence, note what would
|
|
152
|
+
invalidate the setup, and leave the trade — and the sizing — to the user.
|
|
153
|
+
- Never turn "70% win rate on 12 samples" into a forecast; historical stats describe their sample.
|
|
154
|
+
- Nothing in this connector trades — no order, close, transfer or withdrawal tool exists by design.
|
|
155
|
+
If asked to execute, say so plainly; the decision and the trade stay with the user.
|
|
156
|
+
- Quote only what the tools returned; when a symbol is missing from the universe say it was not
|
|
157
|
+
scanned rather than implying it failed the filter.
|
|
158
|
+
- When a specific trade idea is under discussion, end with one plain sentence that crypto
|
|
159
|
+
derivatives are high-risk and this is market information, not financial advice.
|
|
160
|
+
|
|
161
|
+
## Examples
|
|
162
|
+
|
|
163
|
+
```text
|
|
164
|
+
Which coins are oversold on the 4h?
|
|
165
|
+
Run the screener: RSI under 30 and ADX above 25 on the 4h, top 100 by volume.
|
|
166
|
+
Compare BTC, ETH and SOL on the daily.
|
|
167
|
+
Historically, what happened on SOLUSDT 4h after RSI crossed above 30? Compare it against the baseline over the same tape.
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Limitations
|
|
171
|
+
|
|
172
|
+
- Needs the hosted TraderSpy MCP server connected in the client (`https://mcp.traderspy.app/mcp`, Streamable HTTP), authorized with OAuth or a personal key from https://traderspy.app/mcp. A free TraderSpy account is enough. Without the server the skill has no data to work from.
|
|
173
|
+
- Tool calls are metered per day: 300 on the free tier, 5,000 on premium.
|
|
174
|
+
- Every tool is read-only. Nothing here places, closes or modifies an order, and there is no withdrawal or transfer tool.
|
|
175
|
+
- The output is market data and analysis for the user's own research, not investment advice.
|
|
176
|
+
- Conditions are AND-ed, at most three per scan, from the fixed metric list above. An OR needs two scans.
|
|
177
|
+
- A scan covers up to the 100 most-traded pairs or an explicit list of up to 100 symbols. A backtest sees at most 1000 stored candles, about 41 days on 1h.
|
|
178
|
+
|
|
179
|
+
## Related Skills
|
|
180
|
+
|
|
181
|
+
- `@traderspy-technical-analysis` (called `technical-analysis` in the text above, its upstream ID) - one coin in depth, and `get_derivatives` for funding and positioning
|
|
182
|
+
- `@traderspy-market-briefing` - a market overview that includes a movers scan
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Condition cookbook
|
|
2
|
+
|
|
3
|
+
Ready-made `conditions` arrays for the intents users actually voice. Combine at most three.
|
|
4
|
+
|
|
5
|
+
## Mean reversion
|
|
6
|
+
|
|
7
|
+
| Intent | Conditions |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| Oversold | `[{"metric":"rsi","op":"lt","value":30}]` |
|
|
10
|
+
| Oversold, wider net | `[{"metric":"rsi","op":"lt","value":35}]` |
|
|
11
|
+
| Deeply oversold (outside lower band) | `[{"metric":"rsi","op":"lt","value":30},{"metric":"bbPercentB","op":"lt","value":0}]` |
|
|
12
|
+
| Oversold in an uptrend (pullback) | `[{"metric":"rsi","op":"lt","value":40},{"metric":"priceVsEma","op":"gt","value":0,"period":200}]` |
|
|
13
|
+
| Overbought | `[{"metric":"rsi","op":"gt","value":70}]` |
|
|
14
|
+
| Overbought and stretched | `[{"metric":"rsi","op":"gt","value":70},{"metric":"bbPercentB","op":"gt","value":1}]` |
|
|
15
|
+
| Washed out on volume | `[{"metric":"williamsR","op":"lt","value":-90},{"metric":"volumeRatio","op":"gt","value":2}]` |
|
|
16
|
+
| Dumped 5%+ in a day (on 1h) | `[{"metric":"changePct","op":"lt","value":-5,"period":24}]` |
|
|
17
|
+
| Dumped 5%+ in a day (on 4h) | `[{"metric":"changePct","op":"lt","value":-5,"period":6}]` |
|
|
18
|
+
|
|
19
|
+
## Trend
|
|
20
|
+
|
|
21
|
+
| Intent | Conditions |
|
|
22
|
+
| --- | --- |
|
|
23
|
+
| Above the 200 EMA | `[{"metric":"priceVsEma","op":"gt","value":0,"period":200}]` |
|
|
24
|
+
| Strong uptrend | `[{"metric":"priceVsEma","op":"gt","value":0,"period":200},{"metric":"adx","op":"gt","value":25},{"metric":"supertrend","op":"gt","value":0}]` |
|
|
25
|
+
| Strong downtrend | `[{"metric":"priceVsEma","op":"lt","value":0,"period":200},{"metric":"adx","op":"gt","value":25},{"metric":"supertrend","op":"lt","value":0}]` |
|
|
26
|
+
| Golden cross (event) | `[{"metric":"emaSpread","op":"crossAbove","value":0,"period":50,"period2":200}]` |
|
|
27
|
+
| Death cross (event) | `[{"metric":"emaSpread","op":"crossBelow","value":0,"period":50,"period2":200}]` |
|
|
28
|
+
| Fast EMA stack turning up | `[{"metric":"emaSpread","op":"crossAbove","value":0,"period":9,"period2":21}]` |
|
|
29
|
+
| SuperTrend just flipped up | `[{"metric":"supertrend","op":"crossAbove","value":0}]` |
|
|
30
|
+
| Pullback to the 50 EMA in an uptrend | `[{"metric":"priceVsEma","op":"lt","value":1,"period":50},{"metric":"priceVsEma","op":"gt","value":-1,"period":50},{"metric":"priceVsEma","op":"gt","value":0,"period":200}]` |
|
|
31
|
+
|
|
32
|
+
## Momentum
|
|
33
|
+
|
|
34
|
+
| Intent | Conditions |
|
|
35
|
+
| --- | --- |
|
|
36
|
+
| MACD bullish cross (event) | `[{"metric":"macdHistogram","op":"crossAbove","value":0}]` |
|
|
37
|
+
| MACD bearish cross (event) | `[{"metric":"macdHistogram","op":"crossBelow","value":0}]` |
|
|
38
|
+
| Momentum burst | `[{"metric":"roc","op":"gt","value":5},{"metric":"volumeRatio","op":"gt","value":1.5}]` |
|
|
39
|
+
| Stochastic oversold cross up (event) | `[{"metric":"stochastic","op":"crossAbove","value":20}]` |
|
|
40
|
+
| Money flow drying up in an uptrend (divergence hint) | `[{"metric":"mfi","op":"lt","value":40},{"metric":"priceVsEma","op":"gt","value":0,"period":200}]` |
|
|
41
|
+
|
|
42
|
+
## Volatility
|
|
43
|
+
|
|
44
|
+
| Intent | Conditions |
|
|
45
|
+
| --- | --- |
|
|
46
|
+
| Bollinger squeeze (4h) | `[{"metric":"bbWidthPct","op":"lt","value":4}]` — sort by metric ascending |
|
|
47
|
+
| Bollinger squeeze (1h) | `[{"metric":"bbWidthPct","op":"lt","value":2.5}]` |
|
|
48
|
+
| Quiet, low-ATR names | `[{"metric":"atrPct","op":"lt","value":1.5}]` |
|
|
49
|
+
| High-ATR names | `[{"metric":"atrPct","op":"gt","value":5}]` |
|
|
50
|
+
| Volume spike right now | `[{"metric":"volumeRatio","op":"gt","value":3}]` |
|
|
51
|
+
|
|
52
|
+
## Price
|
|
53
|
+
|
|
54
|
+
| Intent | Conditions |
|
|
55
|
+
| --- | --- |
|
|
56
|
+
| Sub-dollar coins in an uptrend | `[{"metric":"price","op":"lt","value":1},{"metric":"priceVsEma","op":"gt","value":0,"period":200}]` |
|
|
57
|
+
|
|
58
|
+
## Backtest pairings that read well
|
|
59
|
+
|
|
60
|
+
- Oversold bounce: `rsi lt 30` on 4h, default horizons → answers "does buying the dip work here".
|
|
61
|
+
- Golden cross: `emaSpread crossAbove 0 (50,200)` on 1d, horizons `[5, 10, 20, 40]`.
|
|
62
|
+
- Capitulation day: `changePct lt -8 period 1` on 1d, horizons `[1, 3, 7, 14]`.
|
|
63
|
+
- Squeeze release: `bbWidthPct lt 3` on 4h — note that a squeeze predicts a move, not a
|
|
64
|
+
direction; expect small average returns with large excursions both ways.
|
|
65
|
+
|
|
66
|
+
## Reading `values`
|
|
67
|
+
|
|
68
|
+
Every row's `values` map is keyed by the tool's label (`RSI(14)`, `EMA spread(50,200)`,
|
|
69
|
+
`Price vs EMA(200)`), and the same labels appear in the `conditions` echo — use them in the table
|
|
70
|
+
header so the user can see exactly what was tested.
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: traderspy-position-check
|
|
3
|
+
description: "Health-check crypto futures positions the user describes, with TraderSpy data: liquidation and stop distance, multi-timeframe read, funding and top-trader side. Reports only; never tells the user to close or add."
|
|
4
|
+
category: finance
|
|
5
|
+
risk: safe
|
|
6
|
+
source: "https://github.com/target1m/traderspy-mcp/tree/069aae5a84640d671f92705a2e3bc0b62efca1e0/skills/position-check"
|
|
7
|
+
source_repo: target1m/traderspy-mcp
|
|
8
|
+
source_type: official
|
|
9
|
+
date_added: "2026-09-25"
|
|
10
|
+
author: target1m
|
|
11
|
+
tags: [traderspy, crypto, risk-management, futures, mcp]
|
|
12
|
+
tools: [claude, cursor, gemini]
|
|
13
|
+
license: MIT
|
|
14
|
+
license_source: "https://github.com/target1m/traderspy-mcp/blob/069aae5a84640d671f92705a2e3bc0b62efca1e0/LICENSE"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# TraderSpy Position Check
|
|
18
|
+
|
|
19
|
+
A position check answers, in order: how much room is left before this position is taken away
|
|
20
|
+
(liquidation), how much before the user's own plan says it is wrong (stop), what the chart and
|
|
21
|
+
the derivatives market are doing around it, and who else is positioned the same way. Report those
|
|
22
|
+
facts with numbers. The decision — hold, trim, close, add — belongs to the person whose money it
|
|
23
|
+
is.
|
|
24
|
+
|
|
25
|
+
## When to Use
|
|
26
|
+
|
|
27
|
+
- Use when the user asks "how's my position", "am I in trouble", "how far am I from liquidation", "should I hold or close" or "review my trades", or asks what you think of their long or short.
|
|
28
|
+
- Use when the user pastes or describes a position, for example "I'm long ETH from 2,400 at 10x".
|
|
29
|
+
- The skill reports and explains. It never tells the user to close, add, hedge or move a stop, and it cannot trade.
|
|
30
|
+
|
|
31
|
+
## Inputs
|
|
32
|
+
|
|
33
|
+
The position always comes from the user. TraderSpy has no account tool: it cannot read a balance
|
|
34
|
+
or an open position on any exchange, so never offer to "check the account".
|
|
35
|
+
|
|
36
|
+
Ask for whatever is missing among side, entry, leverage (and stop / target / the exchange's
|
|
37
|
+
liquidation price if they have them). Size is optional — the analysis works in percentages. The
|
|
38
|
+
current price is the `price` that `get_technical_indicators` returns.
|
|
39
|
+
|
|
40
|
+
Map the symbol to Binance naming for the data tools: `BTC` → `BTCUSDT`, `kPEPE` → `1000PEPEUSDT`,
|
|
41
|
+
`xyz:AVGO` → `AVGOUSDT`.
|
|
42
|
+
|
|
43
|
+
## Calls per position (keep it to what matters)
|
|
44
|
+
|
|
45
|
+
1. `get_technical_indicators` — `intervals: ["1h","4h","1d"]`, `indicators: ["rsi","macd","ema",
|
|
46
|
+
"atr","adx","supertrend","levels"]`. One call. This gives the trend on three timeframes, ATR
|
|
47
|
+
for stop sanity and the nearest levels.
|
|
48
|
+
2. `get_derivatives` — up to five coins in ONE call for all positions at once. Funding is a cost
|
|
49
|
+
or an income for this position; the OI regime says whether the move is being funded.
|
|
50
|
+
3. `get_positions` — `symbol`, `status: "open"`, `limit: 20`. Optional; skip on a tight quota.
|
|
51
|
+
Tells you whether tracked top traders are on the same side.
|
|
52
|
+
|
|
53
|
+
Three positions ≈ 3 + 1 (+3) calls. If the quota is tight, do derivatives for all coins first,
|
|
54
|
+
then technicals for the position with the smallest liquidation distance.
|
|
55
|
+
|
|
56
|
+
## The math (show it, briefly)
|
|
57
|
+
|
|
58
|
+
- P&L % on margin = (mark − entry) / entry × leverage, sign-flipped for shorts; P&L % on price =
|
|
59
|
+
the same without leverage. State both when leverage > 1.
|
|
60
|
+
- Distance to liquidation = |liq − mark| / mark. With no liquidation price from the user, approximate:
|
|
61
|
+
≈ 100 / leverage % minus a maintenance buffer (say it is approximate; cross margin makes the
|
|
62
|
+
real distance depend on the whole account).
|
|
63
|
+
- Distance to stop = |stop − mark| / mark, and stop distance in ATRs = |stop − mark| / ATR(14) on
|
|
64
|
+
the 4h. Under 1 ATR means the stop sits inside normal noise for that timeframe.
|
|
65
|
+
- Funding per day ≈ `funding.ratePct` × 3 on notional; positive rate costs longs and pays shorts.
|
|
66
|
+
|
|
67
|
+
Bands for the liquidation distance: ≤ 5% →
|
|
68
|
+
"at risk", ≤ 15% → "watch", above → "comfortable". These are labels for a distance, not
|
|
69
|
+
instructions.
|
|
70
|
+
|
|
71
|
+
## The report
|
|
72
|
+
|
|
73
|
+
ALWAYS use this template per position:
|
|
74
|
+
|
|
75
|
+
**<COIN> <SIDE> · <leverage>x · <marginMode>**
|
|
76
|
+
|
|
77
|
+
- Entry <entry> → mark <mark> (<±x.x%> on price, <±y%> on margin) · uPnL <$, when the size is known>
|
|
78
|
+
- Liquidation <liq> — <d%> away → **<at risk / watch / comfortable>**
|
|
79
|
+
- Stop <stop or "none stated"> — <d%> / <n> ATR(4h) away · Target <if any>
|
|
80
|
+
- Chart: 1h <bias, RSI, trend> · 4h <…> · 1d <…> · confluence <aligned / mixed>
|
|
81
|
+
- Nearest levels: support <price (d%)>, resistance <price (d%)>
|
|
82
|
+
- Derivatives: funding <label, annualized → cost or income for this side>, OI <regime>, top
|
|
83
|
+
traders <long %> (same side / opposite side)
|
|
84
|
+
- Thesis check: what the position needs to keep working, and the level or reading that would
|
|
85
|
+
say it has stopped working
|
|
86
|
+
- Scenarios: if price goes to <nearest level against> the position shows <P&L>; at <liquidation>
|
|
87
|
+
it is gone; at <nearest level for> it shows <P&L>
|
|
88
|
+
|
|
89
|
+
Then one line naming the position with the least room, and one plain sentence that crypto derivatives are high-risk and this is market information,
|
|
90
|
+
not financial advice.
|
|
91
|
+
|
|
92
|
+
Facts first, labels second, no verbs of instruction. "The stop sits 0.6 ATR away, inside normal 4h
|
|
93
|
+
noise" is a report; "move your stop" is not.
|
|
94
|
+
|
|
95
|
+
## Conduct
|
|
96
|
+
|
|
97
|
+
- Never tell the user to close, hold, add, hedge, move a stop or change leverage. Present
|
|
98
|
+
distances, scenarios and the invalidation level; the decision is theirs. If they ask "should I
|
|
99
|
+
close", lay out what supports staying in and what argues against, then hand it back.
|
|
100
|
+
- Distances and scenarios are arithmetic on current prices and levels the tools returned; they are
|
|
101
|
+
not predictions of where price will go.
|
|
102
|
+
- Nothing in this connector trades — no order, close, transfer or withdrawal tool exists, by
|
|
103
|
+
design. Say so when asked to act; the decision and any trade stay with the user.
|
|
104
|
+
- Position details the user shares stay in the conversation; do not restate them in later
|
|
105
|
+
unrelated answers.
|
|
106
|
+
- Quote only tool results and what the user told you; if a coin is not tracked, say so.
|
|
107
|
+
|
|
108
|
+
Formulas and worked examples: `references/risk-math.md`.
|
|
109
|
+
|
|
110
|
+
## Examples
|
|
111
|
+
|
|
112
|
+
```text
|
|
113
|
+
I'm short SOL from 180 at 5x, liquidation around 214. How far is it, and what do the 1h/4h/1d indicators say?
|
|
114
|
+
I'm long ETH from 2,400 at 10x with a stop at 2,250. How does it look?
|
|
115
|
+
Am I in trouble on my SOL short?
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Limitations
|
|
119
|
+
|
|
120
|
+
- Needs the hosted TraderSpy MCP server connected in the client (`https://mcp.traderspy.app/mcp`, Streamable HTTP), authorized with OAuth or a personal key from https://traderspy.app/mcp. A free TraderSpy account is enough. Without the server the skill has no data to work from.
|
|
121
|
+
- Tool calls are metered per day: 300 on the free tier, 5,000 on premium.
|
|
122
|
+
- Every tool is read-only. Nothing here places, closes or modifies an order, and there is no withdrawal or transfer tool.
|
|
123
|
+
- The output is market data and analysis for the user's own research, not investment advice.
|
|
124
|
+
- TraderSpy cannot see anyone's exchange or TraderSpy account, so every position has to be described or pasted in chat.
|
|
125
|
+
- Without a `liquidationPrice` the liquidation distance is an approximation; under cross margin it depends on the whole account.
|
|
126
|
+
|
|
127
|
+
## Related Skills
|
|
128
|
+
|
|
129
|
+
- `@traderspy-technical-analysis` - a full chart read on one of the coins
|
|
130
|
+
- `@traderspy-smart-money` - who else holds the same position
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Risk math for position checks
|
|
2
|
+
|
|
3
|
+
Entry, side and leverage come from the user; mark is the current `price` from the data tools.
|
|
4
|
+
|
|
5
|
+
## P&L
|
|
6
|
+
|
|
7
|
+
- Price move % = (mark − entry) / entry × 100, sign-flipped for a SHORT.
|
|
8
|
+
- Return on margin % ≈ price move % × leverage (isolated margin; for cross margin the same figure
|
|
9
|
+
describes the position, not the account).
|
|
10
|
+
- Unrealized P&L in USD needs the size; compute it only when the user gave one, and say so.
|
|
11
|
+
|
|
12
|
+
## Liquidation
|
|
13
|
+
|
|
14
|
+
- Exact: the liquidation price the user's exchange shows → distance % = |liq − mark| / mark × 100.
|
|
15
|
+
- Approximation when the user has none: distance % ≈ 100 / leverage − maintenance margin (assume ~0.5–1%
|
|
16
|
+
and say "approximately"). 10x → ~9%, 20x → ~4%, 40x → ~2%. Cross margin can be wider (the whole
|
|
17
|
+
account backs it) or tighter (other positions drain it); the exact figure is the exchange's.
|
|
18
|
+
|
|
19
|
+
Bands: ≤ 5% at risk · ≤ 15% watch · > 15% comfortable.
|
|
20
|
+
|
|
21
|
+
## Stop sanity
|
|
22
|
+
|
|
23
|
+
- Stop distance % = |stop − mark| / mark × 100.
|
|
24
|
+
- In ATRs = |stop − mark| / ATR(14) on the timeframe the user trades (use the 4h if unstated).
|
|
25
|
+
< 1 ATR: inside normal noise; 1–2 ATR: typical swing stop; > 3 ATR: wide.
|
|
26
|
+
- Reward-to-risk = |target − mark| / |stop − mark| from the CURRENT mark (the original R:R from
|
|
27
|
+
entry is history).
|
|
28
|
+
|
|
29
|
+
## Funding
|
|
30
|
+
|
|
31
|
+
- Per-day cost ≈ `funding.ratePct` × 3 (three 8h settlements) × notional; a positive rate is paid
|
|
32
|
+
by longs to shorts. Quote it as "≈ $x/day" or "≈ y% APR against / for this side".
|
|
33
|
+
- `avg3dPct` says whether today's rate is typical.
|
|
34
|
+
|
|
35
|
+
## Reading the chart against the position
|
|
36
|
+
|
|
37
|
+
- Same-side confluence (a LONG with 1h/4h/1d bullish) → the chart supports the position; the risk
|
|
38
|
+
is the distance to the stop and to liquidation, not the direction.
|
|
39
|
+
- Opposite-side confluence → the chart is against it; name the level that would have to reclaim.
|
|
40
|
+
- Mixed → identify which timeframe is the user's and lead with that one.
|
|
41
|
+
- Nearest level against the position vs stop: if the stop is beyond a well-touched support (for a
|
|
42
|
+
long), the plan has structure; if it sits above it, note that the level may be tested first.
|
|
43
|
+
|
|
44
|
+
## Worked example
|
|
45
|
+
|
|
46
|
+
LONG ETH 10x cross, entry 2,434, mark 2,534, liq 2,290, stop 2,380, ATR(4h) 62, funding
|
|
47
|
+
+0.002%/8h, OI regime `new_longs`, top traders 55% long.
|
|
48
|
+
|
|
49
|
+
- Price move +4.1%, on margin ≈ +41%.
|
|
50
|
+
- Liquidation 9.6% away → comfortable.
|
|
51
|
+
- Stop 6.1% / 2.5 ATR away → outside 4h noise.
|
|
52
|
+
- Funding ≈ 0.006%/day → negligible cost for a long (≈ 2% APR).
|
|
53
|
+
- Chart 4h bullish, 1d neutral → mixed; the 4h is doing the work.
|
|
54
|
+
- Derivatives: new longs entering; leaders lean long only mildly (55%).
|
|
55
|
+
- Thesis check: the position needs the 4h uptrend to hold; a 4h close below the nearest support
|
|
56
|
+
(say 2,470) would put the stop in play; above 2,600 resistance the next level is …
|
|
57
|
+
- Scenarios: at 2,470 → +1.5% on price (+15% on margin); at 2,380 (stop) → −2.2% / −22%; at 2,290
|
|
58
|
+
→ liquidated.
|
|
59
|
+
|
|
60
|
+
Reported as facts and scenarios — no instruction about what to do.
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: traderspy-smart-money
|
|
3
|
+
description: "Track what top crypto futures traders hold on Binance, Hyperliquid, Bybit and OKX with TraderSpy: elite leaderboard, positions, trader profiles and history. Use for \"what are whales doing\"."
|
|
4
|
+
category: finance
|
|
5
|
+
risk: safe
|
|
6
|
+
source: "https://github.com/target1m/traderspy-mcp/tree/069aae5a84640d671f92705a2e3bc0b62efca1e0/skills/smart-money"
|
|
7
|
+
source_repo: target1m/traderspy-mcp
|
|
8
|
+
source_type: official
|
|
9
|
+
date_added: "2026-09-25"
|
|
10
|
+
author: target1m
|
|
11
|
+
tags: [traderspy, crypto, smart-money, whale-tracking, mcp]
|
|
12
|
+
tools: [claude, cursor, gemini]
|
|
13
|
+
license: MIT
|
|
14
|
+
license_source: "https://github.com/target1m/traderspy-mcp/blob/069aae5a84640d671f92705a2e3bc0b62efca1e0/LICENSE"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# TraderSpy Smart Money
|
|
18
|
+
|
|
19
|
+
TraderSpy follows thousands of top-ranked accounts on four exchanges and records their positions as
|
|
20
|
+
they open, change and close. This skill turns that feed into answers about positioning and about
|
|
21
|
+
individual traders. Positions are observations of what other people did with their own money —
|
|
22
|
+
present them as evidence, never as instructions.
|
|
23
|
+
|
|
24
|
+
## When to Use
|
|
25
|
+
|
|
26
|
+
- Use when the user asks what whales or top traders are buying, shorting or holding, or whether big accounts are long or short a coin.
|
|
27
|
+
- Use when the user asks who ranks highest on an exchange or across exchanges, or wants to research one trader's record and open positions.
|
|
28
|
+
- Use for "smart money", "whale watch" or "what are the pros doing".
|
|
29
|
+
- Not for funding rate, open interest or long/short ratios of the whole market (`@traderspy-technical-analysis`), and not for AI signals (`@traderspy-trading-signals`).
|
|
30
|
+
|
|
31
|
+
## Tools
|
|
32
|
+
|
|
33
|
+
| Tool | Use it for | Key arguments |
|
|
34
|
+
| --- | --- | --- |
|
|
35
|
+
| `get_elite_leaderboard` | The cross-exchange top 10 by smart score, with the scoring rationale | none |
|
|
36
|
+
| `get_top_traders` | Ranked traders per exchange and window | `source` all / binance / hyperliquid / bybit / okx, `timeRange` 24h / 3D / 7D / 30D, `rankingType` ROI / PNL, `sortBy` ROI / PNL / SCORE, `limit` ≤ 200 |
|
|
37
|
+
| `get_positions` | The position feed | `status` open / closed / all, `source`, `symbol`, `limit` ≤ 50, `offset` |
|
|
38
|
+
| `get_trader_profile` | One trader: metrics + latest positions | `traderId` AND `source` (see below), `timeRange`, `rankingType` |
|
|
39
|
+
| `get_trader_position_history` | One trader's closed trades, paged | `traderId`, `source`, `page`, `limit` ≤ 50 |
|
|
40
|
+
| `get_market_stats` | Aggregate counts and PnL across all tracked positions | `source`, `period` 4h / 8h / 24h / 7d |
|
|
41
|
+
| `get_exchanges` | Which exchanges are currently tracked | none |
|
|
42
|
+
|
|
43
|
+
**Always pass `source` with a trader id.** `get_trader_profile` and `get_trader_position_history`
|
|
44
|
+
default to Binance; a Hyperliquid address (`0x…`) or an OKX id looked up on the wrong exchange
|
|
45
|
+
returns nothing. Take `source` from the row you got the id from.
|
|
46
|
+
|
|
47
|
+
## Reading the data
|
|
48
|
+
|
|
49
|
+
**Symbols differ per exchange.** Hyperliquid rows use bare coins (`BTC`, `ZEC`) and prefix
|
|
50
|
+
tokenized stocks with `xyz:` (`xyz:AVGO`); Binance, Bybit and OKX rows use `BTCUSDT`. When the
|
|
51
|
+
user asks about "BTC positions", pass `symbol: "BTC"` — the filter matches both `BTC` and
|
|
52
|
+
`BTCUSDT` exactly — and read the `symbol` field before summing anything. Tokenized stocks
|
|
53
|
+
(`xyz:AVGO`) are not reachable through the filter; fetch without `symbol` and pick them out.
|
|
54
|
+
|
|
55
|
+
**Position rows**: `side` LONG / SHORT, `size` in coins, `entryPrice`, `markPrice`, `leverage`,
|
|
56
|
+
`unrealizedPnl` (open rows) or `pnl` + `roi` (closed rows), `openTime` / `closeTime`, `isOpen`,
|
|
57
|
+
`lastEvent` (`increase`, `partial_close`, or null when the last change was the open itself). Notional ≈ `size × markPrice`; use
|
|
58
|
+
notional, not row count, when you say "whales are net long".
|
|
59
|
+
|
|
60
|
+
**Freshness.** Binance and Bybit snapshots refresh every 5–15 minutes, Hyperliquid every 15 minutes
|
|
61
|
+
plus live fills, OKX every 10–60 minutes. On a free-tier key the feed is delayed 15 minutes — if
|
|
62
|
+
`get_positions` returns nothing newer than that, say the feed is delayed rather than "no activity".
|
|
63
|
+
|
|
64
|
+
**Leaderboard rows** (`get_top_traders`) carry the exchange's own ranking snapshot: `roi`, `pnl`,
|
|
65
|
+
`assets` (account size), `winRate` (null on Hyperliquid — the exchange does not publish it),
|
|
66
|
+
`rankings[]` with the same trader across every window, and `smartScore` when TraderSpy has scored
|
|
67
|
+
them. `traderName` is a shortened address when the account has no public name. A trader who is
|
|
68
|
+
#1 on 30-day ROI with `assets` of $5k is a different animal from #19 with $3.4M — quote both.
|
|
69
|
+
|
|
70
|
+
**Smart score** (`get_elite_leaderboard`, 0–100, recomputed daily): realized PnL 30% (all-time
|
|
71
|
+
blended with the last 30 days), effective win rate 22%, ROI edge 18%, consistency 14%, longevity
|
|
72
|
+
10%, trade depth 6%, plus a recency bonus (up to +9) and a staleness penalty (down to −12 after
|
|
73
|
+
about three weeks idle). `scoreBreakdown` shows each part, `rationale[]` is a ready-made
|
|
74
|
+
plain-language justification, `metrics` has the raw counts (`closedTrades`, `profitFactor`,
|
|
75
|
+
`realizedPnl30d`, `openPositionCount`, `worstDayPnl`). `reliabilityMultiplier` below 1 means a
|
|
76
|
+
short history dragged the score down — say so when a 6-day-old account ranks top-5.
|
|
77
|
+
|
|
78
|
+
**Market stats** aggregate every tracked position, thousands of them, so `realizedPnl` can be a
|
|
79
|
+
large negative number even when the leaders are winning; the tracked universe includes traders
|
|
80
|
+
who fell off the leaderboard. Use it for counts and the exchange split, not as "smart money is
|
|
81
|
+
losing".
|
|
82
|
+
|
|
83
|
+
## Workflows
|
|
84
|
+
|
|
85
|
+
**"What are whales doing in SOL?"** → `get_positions` with `symbol`, `status: open`, `limit` 50.
|
|
86
|
+
Sum notional by side, name the largest two or three accounts with entry and leverage, and note
|
|
87
|
+
how recent the newest entries are. If open rows are few, add `status: closed` for the last day to
|
|
88
|
+
show whether they have been exiting.
|
|
89
|
+
|
|
90
|
+
**"Who are the best traders right now?"** → `get_elite_leaderboard` first (it is cross-exchange
|
|
91
|
+
and score-based), then `get_top_traders` for a specific exchange or window if the user wants raw
|
|
92
|
+
ROI/PnL. Explain that 7-day ROI rankings reward one lucky week; the smart score is built to
|
|
93
|
+
penalise exactly that.
|
|
94
|
+
|
|
95
|
+
**"Should I copy trader X?" / "Research this trader"** → `get_trader_profile` + one or two pages of
|
|
96
|
+
`get_trader_position_history`. From the history compute what the user actually needs: win rate
|
|
97
|
+
from closed rows, typical hold time (`closeTime − openTime`), typical leverage, how concentrated
|
|
98
|
+
in one coin, worst single trade, and whether the recent month looks like the all-time record.
|
|
99
|
+
Present it as a profile. Copying is the user's decision — this connector cannot follow anyone.
|
|
100
|
+
|
|
101
|
+
**"Are the pros long or short?" (whole market)** → `get_positions` `status: open` on the majors
|
|
102
|
+
plus `get_market_stats`; for exchange-wide long/short ratios of ALL accounts use
|
|
103
|
+
`get_derivatives` from technical-analysis instead, which answers that directly.
|
|
104
|
+
|
|
105
|
+
## Presenting
|
|
106
|
+
|
|
107
|
+
Positions: one row per position —
|
|
108
|
+
|
|
109
|
+
| Trader | Exchange | Side | Size (notional) | Entry | Mark | Lev | uPnL | Opened |
|
|
110
|
+
|
|
111
|
+
Traders: name, exchange, score or rank, window, ROI, PnL, account size, win rate (or "n/a" on
|
|
112
|
+
Hyperliquid), then the two-line rationale. Lead with the number that answers the question, keep
|
|
113
|
+
addresses shortened as returned, and always say which window a ROI belongs to.
|
|
114
|
+
|
|
115
|
+
## Conduct
|
|
116
|
+
|
|
117
|
+
- Positions are what other traders did, with their capital, their hedges and their exits, which
|
|
118
|
+
you cannot see in full. Present them as evidence about positioning, never as a recommendation to
|
|
119
|
+
mirror them; a leader's long can be one leg of a hedge.
|
|
120
|
+
- Past ROI and win rates describe a past sample — do not present a leaderboard as a forecast of
|
|
121
|
+
who will win next. Point out short histories and small samples.
|
|
122
|
+
- Nothing in this connector trades or copies. There is no order, follow, transfer or withdrawal
|
|
123
|
+
tool, by design. If asked to copy or execute a trade, say so plainly; the decision and the trade stay
|
|
124
|
+
with the user.
|
|
125
|
+
- Quote only what the tools returned; say when data is delayed or a field is null.
|
|
126
|
+
- When the answer is about a specific trade idea, end with one plain sentence that crypto
|
|
127
|
+
derivatives are high-risk and this is market information, not financial advice.
|
|
128
|
+
|
|
129
|
+
For exchange-specific quirks and refresh cadences read `references/exchange-notes.md`.
|
|
130
|
+
|
|
131
|
+
## Examples
|
|
132
|
+
|
|
133
|
+
```text
|
|
134
|
+
What are the top traders long and short right now?
|
|
135
|
+
What are whales doing in SOL?
|
|
136
|
+
Who is at the top of the Hyperliquid leaderboard right now, and what are they positioned in? Then show me the position history of the top one.
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Limitations
|
|
140
|
+
|
|
141
|
+
- Needs the hosted TraderSpy MCP server connected in the client (`https://mcp.traderspy.app/mcp`, Streamable HTTP), authorized with OAuth or a personal key from https://traderspy.app/mcp. A free TraderSpy account is enough. Without the server the skill has no data to work from.
|
|
142
|
+
- Tool calls are metered per day: 300 on the free tier, 5,000 on premium.
|
|
143
|
+
- Every tool is read-only. Nothing here places, closes or modifies an order, and there is no withdrawal or transfer tool.
|
|
144
|
+
- The output is market data and analysis for the user's own research, not investment advice.
|
|
145
|
+
- On a free key, position rows are delayed 15 minutes. Leaderboards, profiles and stats are not delayed.
|
|
146
|
+
- It sees only the accounts TraderSpy tracks on Binance, Hyperliquid, Bybit and OKX, not what the same traders hold elsewhere, so a tracked long can be one leg of a hedge.
|
|
147
|
+
|
|
148
|
+
## Related Skills
|
|
149
|
+
|
|
150
|
+
- `@traderspy-technical-analysis` (called `technical-analysis` in the text above, its upstream ID) - `get_derivatives` for exchange-wide funding, open interest and long/short ratios
|
|
151
|
+
- `@traderspy-trading-signals` - AI signals rather than trader positions
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Exchange notes for the smart-money feed
|
|
2
|
+
|
|
3
|
+
| Exchange | `source` | Trader id looks like | Symbols | Refresh | Notes |
|
|
4
|
+
| --- | --- | --- | --- | --- | --- |
|
|
5
|
+
| Binance | `binance` | opaque leaderboard id | `BTCUSDT` | positions every 5–10 min | Largest tracked set (~5k positions); leaderboard is opt-in, so it is the traders who chose to be public |
|
|
6
|
+
| Hyperliquid | `hyperliquid` | `0x` EVM address | bare coin `BTC`, `kPEPE`-style 1000x coins, `xyz:AVGO` for tokenized stocks | fills live via WebSocket, snapshots every 15 min | Fully on-chain, so positions are exact; `winRate` is null because the venue does not publish it |
|
|
7
|
+
| Bybit | `bybit` | opaque id | `BTCUSDT` | every 10–15 min | Smaller tracked set |
|
|
8
|
+
| OKX | `okx` | 16-hex id | `BTCUSDT` | every 10 min – 1 h | Copy-trade leaders; names and avatars are public; many high-frequency scalpers with 90%+ win rates and tiny per-trade ROI |
|
|
9
|
+
|
|
10
|
+
## Elite leaderboard (`get_elite_leaderboard`)
|
|
11
|
+
|
|
12
|
+
- Recomputed daily (00:10 Europe/Istanbul); `lastRunAt` says when. Not intraday.
|
|
13
|
+
- `tier` is the exchange's own badge where one exists (OKX leaders show Silver / Bronze / Regular);
|
|
14
|
+
null on venues without badges.
|
|
15
|
+
- `algorithmDetails[]` in the response documents every weight — quote it when the user asks how
|
|
16
|
+
the score works instead of paraphrasing from memory.
|
|
17
|
+
- `summary.totalTrackedTraders` vs `tradersWithClosedTrades` tells you how many accounts actually
|
|
18
|
+
have a closed-trade record behind their score.
|
|
19
|
+
- A trader can top the score with a negative `effectiveRoi` if their realized PnL is huge — the
|
|
20
|
+
score rewards money made, not percentage. Say which when the two disagree.
|
|
21
|
+
|
|
22
|
+
## Reading a trader's history for a "should I copy" profile
|
|
23
|
+
|
|
24
|
+
From `get_trader_position_history` rows (`symbol, side, size, entryPrice, closePrice, leverage,
|
|
25
|
+
pnl, roi, openTime, closeTime`):
|
|
26
|
+
|
|
27
|
+
- win rate = rows with `pnl > 0` ÷ rows
|
|
28
|
+
- average hold = mean of `closeTime − openTime`, expressed in hours or days
|
|
29
|
+
- concentration = share of rows (or of |pnl|) in the single most-traded symbol
|
|
30
|
+
- worst trade = min `pnl`; compare it with the median win to show the shape of the distribution
|
|
31
|
+
- leverage habit = median `leverage`; flag anything ≥ 20× explicitly
|
|
32
|
+
- recency = share of rows in the last 30 days; a great all-time record with nothing recent is a
|
|
33
|
+
dormant account
|
|
34
|
+
|
|
35
|
+
Two pages of 50 rows are plenty for a profile. State the sample size.
|
|
36
|
+
|
|
37
|
+
## Free tier
|
|
38
|
+
|
|
39
|
+
Position rows are filtered to those older than 15 minutes on a free key. Leaderboards, profiles and
|
|
40
|
+
stats are not delayed.
|