clodds 1.2.9 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/dist/skills/bundled/acp/SKILL.md +188 -0
  2. package/dist/skills/bundled/acp/index.d.ts +0 -3
  3. package/dist/skills/bundled/acp/index.js +1 -1
  4. package/dist/skills/bundled/acp/index.js.map +1 -1
  5. package/dist/skills/bundled/agentbets/SKILL.md +19 -0
  6. package/dist/skills/bundled/agentbets/index.js +1 -1
  7. package/dist/skills/bundled/agentbets/index.js.map +1 -1
  8. package/dist/skills/bundled/ai-strategy/SKILL.md +111 -0
  9. package/dist/skills/bundled/ai-strategy/index.js +1 -1
  10. package/dist/skills/bundled/ai-strategy/index.js.map +1 -1
  11. package/dist/skills/bundled/alerts/SKILL.md +87 -0
  12. package/dist/skills/bundled/analytics/SKILL.md +252 -0
  13. package/dist/skills/bundled/analytics/index.js +2 -2
  14. package/dist/skills/bundled/analytics/index.js.map +1 -1
  15. package/dist/skills/bundled/arbitrage/SKILL.md +287 -0
  16. package/dist/skills/bundled/arbitrage/index.js +6 -1
  17. package/dist/skills/bundled/arbitrage/index.js.map +1 -1
  18. package/dist/skills/bundled/auto-reply/SKILL.md +285 -0
  19. package/dist/skills/bundled/auto-reply/index.js +2 -2
  20. package/dist/skills/bundled/auto-reply/index.js.map +1 -1
  21. package/dist/skills/bundled/automation/SKILL.md +242 -0
  22. package/dist/skills/bundled/automation/index.js +2 -2
  23. package/dist/skills/bundled/automation/index.js.map +1 -1
  24. package/dist/skills/bundled/backtest/SKILL.md +225 -0
  25. package/dist/skills/bundled/bags/SKILL.md +131 -0
  26. package/dist/skills/bundled/bankr/SKILL.md +114 -0
  27. package/dist/skills/bundled/betfair/SKILL.md +113 -0
  28. package/dist/skills/bundled/binance-futures/SKILL.md +84 -0
  29. package/dist/skills/bundled/binance-futures/index.d.ts +0 -3
  30. package/dist/skills/bundled/binance-futures/index.js +1 -2
  31. package/dist/skills/bundled/binance-futures/index.js.map +1 -1
  32. package/dist/skills/bundled/botchan/SKILL.md +66 -0
  33. package/dist/skills/bundled/botchan/index.d.ts +0 -3
  34. package/dist/skills/bundled/botchan/index.js +0 -1
  35. package/dist/skills/bundled/botchan/index.js.map +1 -1
  36. package/dist/skills/bundled/bridge/SKILL.md +215 -0
  37. package/dist/skills/bundled/bridge/index.js +6 -0
  38. package/dist/skills/bundled/bridge/index.js.map +1 -1
  39. package/dist/skills/bundled/bybit-futures/SKILL.md +84 -0
  40. package/dist/skills/bundled/bybit-futures/index.d.ts +0 -3
  41. package/dist/skills/bundled/bybit-futures/index.js +0 -1
  42. package/dist/skills/bundled/bybit-futures/index.js.map +1 -1
  43. package/dist/skills/bundled/clanker/SKILL.md +125 -0
  44. package/dist/skills/bundled/clanker/index.d.ts +0 -3
  45. package/dist/skills/bundled/clanker/index.js +0 -1
  46. package/dist/skills/bundled/clanker/index.js.map +1 -1
  47. package/dist/skills/bundled/copy-trading/SKILL.md +285 -0
  48. package/dist/skills/bundled/copy-trading/index.js +15 -8
  49. package/dist/skills/bundled/copy-trading/index.js.map +1 -1
  50. package/dist/skills/bundled/copy-trading-solana/SKILL.md +66 -0
  51. package/dist/skills/bundled/credentials/SKILL.md +261 -0
  52. package/dist/skills/bundled/credentials/index.js +4 -0
  53. package/dist/skills/bundled/credentials/index.js.map +1 -1
  54. package/dist/skills/bundled/crypto-hft/SKILL.md +121 -0
  55. package/dist/skills/bundled/crypto-hft/index.js +18 -3
  56. package/dist/skills/bundled/crypto-hft/index.js.map +1 -1
  57. package/dist/skills/bundled/dca/SKILL.md +27 -0
  58. package/dist/skills/bundled/dex/SKILL.md +92 -0
  59. package/dist/skills/bundled/dex/index.js +77 -29
  60. package/dist/skills/bundled/dex/index.js.map +1 -1
  61. package/dist/skills/bundled/divergence/SKILL.md +83 -0
  62. package/dist/skills/bundled/doctor/SKILL.md +267 -0
  63. package/dist/skills/bundled/doctor/index.js +2 -8
  64. package/dist/skills/bundled/doctor/index.js.map +1 -1
  65. package/dist/skills/bundled/drift/SKILL.md +53 -0
  66. package/dist/skills/bundled/drift-sdk/SKILL.md +103 -0
  67. package/dist/skills/bundled/drift-sdk/index.d.ts +0 -3
  68. package/dist/skills/bundled/drift-sdk/index.js +0 -1
  69. package/dist/skills/bundled/drift-sdk/index.js.map +1 -1
  70. package/dist/skills/bundled/edge/SKILL.md +84 -0
  71. package/dist/skills/bundled/embeddings/SKILL.md +244 -0
  72. package/dist/skills/bundled/endaoment/SKILL.md +65 -0
  73. package/dist/skills/bundled/endaoment/index.d.ts +0 -3
  74. package/dist/skills/bundled/endaoment/index.js +0 -1
  75. package/dist/skills/bundled/endaoment/index.js.map +1 -1
  76. package/dist/skills/bundled/ens/SKILL.md +63 -0
  77. package/dist/skills/bundled/ens/index.d.ts +0 -3
  78. package/dist/skills/bundled/ens/index.js +0 -1
  79. package/dist/skills/bundled/ens/index.js.map +1 -1
  80. package/dist/skills/bundled/erc8004/SKILL.md +79 -0
  81. package/dist/skills/bundled/erc8004/index.d.ts +0 -3
  82. package/dist/skills/bundled/erc8004/index.js +0 -1
  83. package/dist/skills/bundled/erc8004/index.js.map +1 -1
  84. package/dist/skills/bundled/execution/SKILL.md +278 -0
  85. package/dist/skills/bundled/farcaster/SKILL.md +80 -0
  86. package/dist/skills/bundled/farcaster/index.js +12 -0
  87. package/dist/skills/bundled/farcaster/index.js.map +1 -1
  88. package/dist/skills/bundled/features/SKILL.md +20 -0
  89. package/dist/skills/bundled/feeds/SKILL.md +288 -0
  90. package/dist/skills/bundled/harden/SKILL.md +74 -0
  91. package/dist/skills/bundled/history/SKILL.md +257 -0
  92. package/dist/skills/bundled/hyperliquid/SKILL.md +200 -0
  93. package/dist/skills/bundled/hyperliquid/index.d.ts +0 -3
  94. package/dist/skills/bundled/hyperliquid/index.js +0 -1
  95. package/dist/skills/bundled/hyperliquid/index.js.map +1 -1
  96. package/dist/skills/bundled/identity/SKILL.md +228 -0
  97. package/dist/skills/bundled/identity/index.js +2 -2
  98. package/dist/skills/bundled/identity/index.js.map +1 -1
  99. package/dist/skills/bundled/integrations/SKILL.md +321 -0
  100. package/dist/skills/bundled/integrations/index.js +2 -2
  101. package/dist/skills/bundled/integrations/index.js.map +1 -1
  102. package/dist/skills/bundled/jupiter/SKILL.md +163 -0
  103. package/dist/skills/bundled/jupiter/index.js +2 -2
  104. package/dist/skills/bundled/kamino/SKILL.md +69 -0
  105. package/dist/skills/bundled/ledger/SKILL.md +20 -0
  106. package/dist/skills/bundled/lighter/SKILL.md +83 -0
  107. package/dist/skills/bundled/lighter/index.d.ts +0 -3
  108. package/dist/skills/bundled/lighter/index.js +0 -1
  109. package/dist/skills/bundled/lighter/index.js.map +1 -1
  110. package/dist/skills/bundled/marginfi/SKILL.md +62 -0
  111. package/dist/skills/bundled/market-index/SKILL.md +242 -0
  112. package/dist/skills/bundled/market-index/index.js +1 -3
  113. package/dist/skills/bundled/market-index/index.js.map +1 -1
  114. package/dist/skills/bundled/markets/SKILL.md +49 -0
  115. package/dist/skills/bundled/mcp/SKILL.md +235 -0
  116. package/dist/skills/bundled/mcp/index.js +1 -3
  117. package/dist/skills/bundled/mcp/index.js.map +1 -1
  118. package/dist/skills/bundled/memory/SKILL.md +209 -0
  119. package/dist/skills/bundled/metaculus/SKILL.md +62 -0
  120. package/dist/skills/bundled/metaculus/index.js +4 -1
  121. package/dist/skills/bundled/metaculus/index.js.map +1 -1
  122. package/dist/skills/bundled/meteora/SKILL.md +28 -0
  123. package/dist/skills/bundled/meteora-dbc/SKILL.md +25 -0
  124. package/dist/skills/bundled/metrics/SKILL.md +338 -0
  125. package/dist/skills/bundled/mev/SKILL.md +239 -0
  126. package/dist/skills/bundled/mev/index.js +2 -2
  127. package/dist/skills/bundled/mev/index.js.map +1 -1
  128. package/dist/skills/bundled/mexc-futures/SKILL.md +86 -0
  129. package/dist/skills/bundled/mexc-futures/index.d.ts +0 -3
  130. package/dist/skills/bundled/mexc-futures/index.js +0 -1
  131. package/dist/skills/bundled/mexc-futures/index.js.map +1 -1
  132. package/dist/skills/bundled/mm/SKILL.md +142 -0
  133. package/dist/skills/bundled/mm/index.js +28 -27
  134. package/dist/skills/bundled/mm/index.js.map +1 -1
  135. package/dist/skills/bundled/monitoring/SKILL.md +249 -0
  136. package/dist/skills/bundled/news/SKILL.md +95 -0
  137. package/dist/skills/bundled/news/index.js +1 -2
  138. package/dist/skills/bundled/news/index.js.map +1 -1
  139. package/dist/skills/bundled/onchainkit/SKILL.md +83 -0
  140. package/dist/skills/bundled/opinion/SKILL.md +87 -0
  141. package/dist/skills/bundled/opportunity/SKILL.md +308 -0
  142. package/dist/skills/bundled/orca/SKILL.md +28 -0
  143. package/dist/skills/bundled/orca/index.js +11 -7
  144. package/dist/skills/bundled/orca/index.js.map +1 -1
  145. package/dist/skills/bundled/pairing/SKILL.md +275 -0
  146. package/dist/skills/bundled/pancakeswap/SKILL.md +93 -0
  147. package/dist/skills/bundled/pancakeswap/index.d.ts +0 -3
  148. package/dist/skills/bundled/pancakeswap/index.js +0 -1
  149. package/dist/skills/bundled/pancakeswap/index.js.map +1 -1
  150. package/dist/skills/bundled/percolator/SKILL.md +22 -0
  151. package/dist/skills/bundled/permissions/SKILL.md +269 -0
  152. package/dist/skills/bundled/permissions/index.js +2 -2
  153. package/dist/skills/bundled/permissions/index.js.map +1 -1
  154. package/dist/skills/bundled/plugins/SKILL.md +263 -0
  155. package/dist/skills/bundled/plugins/index.js +2 -2
  156. package/dist/skills/bundled/plugins/index.js.map +1 -1
  157. package/dist/skills/bundled/portfolio/SKILL.md +161 -0
  158. package/dist/skills/bundled/portfolio/index.js +1 -1
  159. package/dist/skills/bundled/portfolio/index.js.map +1 -1
  160. package/dist/skills/bundled/portfolio-sync/SKILL.md +466 -0
  161. package/dist/skills/bundled/positions/SKILL.md +262 -0
  162. package/dist/skills/bundled/predictfun/SKILL.md +109 -0
  163. package/dist/skills/bundled/predictfun/index.js +1 -1
  164. package/dist/skills/bundled/predictfun/index.js.map +1 -1
  165. package/dist/skills/bundled/predictit/SKILL.md +66 -0
  166. package/dist/skills/bundled/predictit/index.js +4 -1
  167. package/dist/skills/bundled/predictit/index.js.map +1 -1
  168. package/dist/skills/bundled/presence/SKILL.md +217 -0
  169. package/dist/skills/bundled/presence/index.js +2 -2
  170. package/dist/skills/bundled/presence/index.js.map +1 -1
  171. package/dist/skills/bundled/processes/SKILL.md +254 -0
  172. package/dist/skills/bundled/pump-swarm/SKILL.md +309 -0
  173. package/dist/skills/bundled/pumpfun/SKILL.md +145 -0
  174. package/dist/skills/bundled/pumpfun/index.js +82 -8
  175. package/dist/skills/bundled/pumpfun/index.js.map +1 -1
  176. package/dist/skills/bundled/qmd/SKILL.md +129 -0
  177. package/dist/skills/bundled/qrcoin/SKILL.md +60 -0
  178. package/dist/skills/bundled/qrcoin/index.d.ts +0 -3
  179. package/dist/skills/bundled/qrcoin/index.js +0 -1
  180. package/dist/skills/bundled/qrcoin/index.js.map +1 -1
  181. package/dist/skills/bundled/raydium/SKILL.md +198 -0
  182. package/dist/skills/bundled/remote/SKILL.md +201 -0
  183. package/dist/skills/bundled/research/SKILL.md +83 -0
  184. package/dist/skills/bundled/research/index.js +2 -2
  185. package/dist/skills/bundled/research/index.js.map +1 -1
  186. package/dist/skills/bundled/risk/SKILL.md +323 -0
  187. package/dist/skills/bundled/router/SKILL.md +233 -0
  188. package/dist/skills/bundled/routing/SKILL.md +258 -0
  189. package/dist/skills/bundled/sandbox/SKILL.md +257 -0
  190. package/dist/skills/bundled/search-config/SKILL.md +257 -0
  191. package/dist/skills/bundled/search-config/index.js +2 -2
  192. package/dist/skills/bundled/search-config/index.js.map +1 -1
  193. package/dist/skills/bundled/sessions/SKILL.md +251 -0
  194. package/dist/skills/bundled/sessions/index.js +1 -1
  195. package/dist/skills/bundled/sessions/index.js.map +1 -1
  196. package/dist/skills/bundled/setup/SKILL.md +53 -0
  197. package/dist/skills/bundled/shield/SKILL.md +21 -0
  198. package/dist/skills/bundled/signals/SKILL.md +106 -0
  199. package/dist/skills/bundled/signals/index.d.ts +0 -3
  200. package/dist/skills/bundled/signals/index.js +3 -4
  201. package/dist/skills/bundled/signals/index.js.map +1 -1
  202. package/dist/skills/bundled/sizing/SKILL.md +238 -0
  203. package/dist/skills/bundled/slippage/SKILL.md +306 -0
  204. package/dist/skills/bundled/smarkets/SKILL.md +107 -0
  205. package/dist/skills/bundled/smarkets/index.js +3 -3
  206. package/dist/skills/bundled/smarkets/index.js.map +1 -1
  207. package/dist/skills/bundled/solend/SKILL.md +63 -0
  208. package/dist/skills/bundled/strategy/SKILL.md +266 -0
  209. package/dist/skills/bundled/streaming/SKILL.md +150 -0
  210. package/dist/skills/bundled/streaming/index.js +2 -2
  211. package/dist/skills/bundled/streaming/index.js.map +1 -1
  212. package/dist/skills/bundled/tailscale/SKILL.md +249 -0
  213. package/dist/skills/bundled/tailscale/index.js +2 -2
  214. package/dist/skills/bundled/tailscale/index.js.map +1 -1
  215. package/dist/skills/bundled/ticks/SKILL.md +61 -0
  216. package/dist/skills/bundled/token-security/SKILL.md +18 -0
  217. package/dist/skills/bundled/trading-evm/SKILL.md +329 -0
  218. package/dist/skills/bundled/trading-futures/SKILL.md +865 -0
  219. package/dist/skills/bundled/trading-kalshi/SKILL.md +629 -0
  220. package/dist/skills/bundled/trading-kalshi/index.js +2 -0
  221. package/dist/skills/bundled/trading-kalshi/index.js.map +1 -1
  222. package/dist/skills/bundled/trading-manifold/SKILL.md +387 -0
  223. package/dist/skills/bundled/trading-polymarket/SKILL.md +1080 -0
  224. package/dist/skills/bundled/trading-polymarket/index.js +28 -19
  225. package/dist/skills/bundled/trading-polymarket/index.js.map +1 -1
  226. package/dist/skills/bundled/trading-solana/SKILL.md +418 -0
  227. package/dist/skills/bundled/trading-solana/index.js +1 -1
  228. package/dist/skills/bundled/trading-solana/index.js.map +1 -1
  229. package/dist/skills/bundled/trading-system/SKILL.md +290 -0
  230. package/dist/skills/bundled/triggers/SKILL.md +433 -0
  231. package/dist/skills/bundled/tts/SKILL.md +220 -0
  232. package/dist/skills/bundled/tweet-ideas/SKILL.md +77 -0
  233. package/dist/skills/bundled/usage/SKILL.md +239 -0
  234. package/dist/skills/bundled/usage/index.js +2 -2
  235. package/dist/skills/bundled/usage/index.js.map +1 -1
  236. package/dist/skills/bundled/veil/SKILL.md +76 -0
  237. package/dist/skills/bundled/veil/index.d.ts +0 -3
  238. package/dist/skills/bundled/veil/index.js +0 -1
  239. package/dist/skills/bundled/veil/index.js.map +1 -1
  240. package/dist/skills/bundled/verify/SKILL.md +199 -0
  241. package/dist/skills/bundled/verify/index.d.ts +0 -3
  242. package/dist/skills/bundled/verify/index.js +0 -1
  243. package/dist/skills/bundled/verify/index.js.map +1 -1
  244. package/dist/skills/bundled/virtuals/SKILL.md +82 -0
  245. package/dist/skills/bundled/voice/SKILL.md +217 -0
  246. package/dist/skills/bundled/voice/index.js +2 -2
  247. package/dist/skills/bundled/voice/index.js.map +1 -1
  248. package/dist/skills/bundled/weather/SKILL.md +80 -0
  249. package/dist/skills/bundled/weather/index.js +3 -0
  250. package/dist/skills/bundled/weather/index.js.map +1 -1
  251. package/dist/skills/bundled/webhooks/SKILL.md +297 -0
  252. package/dist/skills/bundled/webhooks/index.js +2 -2
  253. package/dist/skills/bundled/webhooks/index.js.map +1 -1
  254. package/dist/skills/bundled/whale-tracking/SKILL.md +287 -0
  255. package/dist/skills/bundled/whale-tracking/index.js +2 -2
  256. package/dist/skills/bundled/whale-tracking/index.js.map +1 -1
  257. package/dist/skills/bundled/yoink/SKILL.md +54 -0
  258. package/dist/skills/bundled/yoink/index.d.ts +0 -3
  259. package/dist/skills/bundled/yoink/index.js +0 -1
  260. package/dist/skills/bundled/yoink/index.js.map +1 -1
  261. package/dist/skills/executor.js +5 -3
  262. package/dist/skills/executor.js.map +1 -1
  263. package/package.json +2 -2
@@ -0,0 +1,323 @@
1
+ ---
2
+ name: risk
3
+ description: "Unified risk engine with VaR, stress testing, volatility regimes, and automated controls"
4
+ emoji: "🛑"
5
+ ---
6
+
7
+ # Risk - Complete API Reference
8
+
9
+ Full risk management engine: circuit breakers, loss limits, Value-at-Risk, volatility regime detection, stress testing, and kill switches.
10
+
11
+ ---
12
+
13
+ ## Chat Commands
14
+
15
+ ### View Risk Status
16
+
17
+ ```
18
+ /risk Current risk status
19
+ /risk status Detailed status with portfolio metrics
20
+ /risk limits View all limits
21
+ /risk dashboard Real-time risk metrics (VaR, regime, HHI, etc.)
22
+ ```
23
+
24
+ ### Risk Analytics
25
+
26
+ ```
27
+ /risk var Value-at-Risk and CVaR numbers
28
+ /risk regime Current volatility regime and size multiplier
29
+ /risk stress [scenario] Run stress test (flash_crash, black_swan, etc.)
30
+ ```
31
+
32
+ **Available stress scenarios:** `flash_crash`, `liquidity_crunch`, `platform_down`, `correlation_spike`, `black_swan`
33
+
34
+ ### Configure Limits
35
+
36
+ ```
37
+ /risk set max-loss 1000 Max daily loss ($)
38
+ /risk set max-loss-pct 10 Max daily loss (%)
39
+ /risk set max-drawdown 20 Max drawdown (%)
40
+ /risk set max-position 25 Max single position (%)
41
+ /risk set max-trades 50 Max trades per day
42
+ /risk set consecutive-losses 5 Stop after N losses
43
+ ```
44
+
45
+ ### Circuit Breaker
46
+
47
+ ```
48
+ /risk trip "manual stop" Manually trip breaker
49
+ /risk reset Reset after cooldown
50
+ /risk kill Emergency stop all trading
51
+ /risk check 500 Check if a $500 trade is allowed
52
+ ```
53
+
54
+ ---
55
+
56
+ ## TypeScript API Reference
57
+
58
+ ### Unified Risk Engine
59
+
60
+ The risk engine is the single entry point for all pre-trade validation. It orchestrates 10 checks in order:
61
+
62
+ 1. Kill switch (SafetyManager)
63
+ 2. Circuit breaker (execution-level)
64
+ 3. Max order size
65
+ 4. Exposure limits
66
+ 5. Daily loss limit
67
+ 6. Max drawdown
68
+ 7. Position concentration
69
+ 8. VaR limit
70
+ 9. Volatility regime
71
+ 10. Kelly sizing recommendation
72
+
73
+ ```typescript
74
+ import { createRiskEngine } from 'clodds/risk';
75
+
76
+ const engine = createRiskEngine(
77
+ {
78
+ varLimit: 500, // Reject trades if portfolio VaR > $500
79
+ varConfidence: 0.95,
80
+ varWindowSize: 100,
81
+ volatilityConfig: {
82
+ lookbackWindow: 30,
83
+ haltOnExtreme: true, // Stop trading in extreme volatility
84
+ },
85
+ },
86
+ {
87
+ riskContext, // From trading/risk.ts
88
+ safetyManager, // From trading/safety.ts
89
+ circuitBreaker, // From execution/circuit-breaker.ts
90
+ kellyCalculator, // From trading/kelly.ts
91
+ getPositions: () => positions,
92
+ getPositionValues: () => positions.map(p => p.value),
93
+ }
94
+ );
95
+ ```
96
+
97
+ ### Validate a Trade
98
+
99
+ ```typescript
100
+ const decision = engine.validateTrade({
101
+ userId: 'user-123',
102
+ platform: 'polymarket',
103
+ marketId: 'market-456',
104
+ outcome: 'YES',
105
+ side: 'buy',
106
+ size: 500,
107
+ price: 0.65,
108
+ estimatedEdge: 0.05, // 5% edge
109
+ confidence: 0.8,
110
+ category: 'politics',
111
+ });
112
+
113
+ if (decision.approved) {
114
+ // Use adjustedSize — may be smaller than requested (Kelly + regime)
115
+ await executeTrade(decision.adjustedSize);
116
+ console.log(`Regime: ${decision.regime}`);
117
+ console.log(`Warnings: ${decision.warnings}`);
118
+ } else {
119
+ console.log(`Blocked: ${decision.reason}`);
120
+ // Check which step failed:
121
+ for (const check of decision.checks) {
122
+ console.log(` ${check.name}: ${check.passed ? 'PASS' : 'FAIL'} — ${check.message}`);
123
+ }
124
+ }
125
+ ```
126
+
127
+ ### Record Trade P&L (feeds VaR + volatility)
128
+
129
+ ```typescript
130
+ engine.recordPnL({
131
+ pnlUsd: -45.20,
132
+ pnlPct: -0.09,
133
+ positionId: 'polymarket:market-456:YES',
134
+ timestamp: new Date(),
135
+ });
136
+ ```
137
+
138
+ ### Portfolio Risk Snapshot
139
+
140
+ ```typescript
141
+ const risk = engine.getPortfolioRisk();
142
+ console.log(`Total value: $${risk.totalValue}`);
143
+ console.log(`VaR (95%): $${risk.var95}`);
144
+ console.log(`VaR (99%): $${risk.var99}`);
145
+ console.log(`CVaR (95%): $${risk.cvar95}`);
146
+ console.log(`Regime: ${risk.regime}`);
147
+ console.log(`Drawdown: ${risk.drawdownPct}%`);
148
+ ```
149
+
150
+ ### Value-at-Risk
151
+
152
+ ```typescript
153
+ import { createVaRCalculator, calculateVaR, calculateCVaR } from 'clodds/risk';
154
+
155
+ // Full calculator with rolling window
156
+ const calc = createVaRCalculator({ windowSize: 100, confidenceLevel: 0.95 });
157
+ calc.addObservation({ pnlUsd: -50, pnlPct: -0.05, timestamp: new Date() });
158
+ const result = calc.calculateAt(0.99);
159
+ console.log(`VaR (99%): $${result.historicalVaR}`);
160
+ console.log(`CVaR (99%): $${result.cvar}`);
161
+
162
+ // Quick one-liners
163
+ const var95 = calculateVaR(pnlArray, 0.95);
164
+ const cvar95 = calculateCVaR(pnlArray, 0.95);
165
+ ```
166
+
167
+ ### Volatility Regime Detection
168
+
169
+ ```typescript
170
+ import { createVolatilityDetector, detectRegime } from 'clodds/risk';
171
+
172
+ const detector = createVolatilityDetector({
173
+ lookbackWindow: 30,
174
+ haltOnExtreme: false,
175
+ regimeMultipliers: { low: 1.2, normal: 1.0, high: 0.5, extreme: 0.25 },
176
+ });
177
+
178
+ detector.addObservation(0.03); // 3% P&L
179
+ const snapshot = detector.detect();
180
+ console.log(`Regime: ${snapshot.regime}`); // 'low' | 'normal' | 'high' | 'extreme'
181
+ console.log(`Size multiplier: ${snapshot.sizeMultiplier}x`);
182
+ console.log(`Should halt: ${snapshot.shouldHalt}`);
183
+
184
+ // One-shot from array
185
+ const regime = detectRegime(recentPnLPcts);
186
+ ```
187
+
188
+ ### Stress Testing
189
+
190
+ ```typescript
191
+ import { runStressTest, runAllScenarios, getAvailableScenarios } from 'clodds/risk';
192
+
193
+ const result = runStressTest(positions, 'flash_crash');
194
+ console.log(`Estimated loss: $${result.estimatedLoss} (${result.estimatedLossPct}%)`);
195
+ console.log(`Severity: ${result.severity}`);
196
+ console.log(`Recommendations: ${result.recommendations.join(', ')}`);
197
+
198
+ // Run all scenarios at once
199
+ const all = runAllScenarios(positions); // sorted by severity
200
+
201
+ // Override scenario parameters
202
+ const custom = runStressTest(positions, 'flash_crash', {
203
+ scenarios: { flash_crash: { lossPct: 30, description: 'Severe crash' } },
204
+ });
205
+ ```
206
+
207
+ ### Risk Dashboard
208
+
209
+ ```typescript
210
+ import { getRiskDashboard } from 'clodds/risk';
211
+
212
+ const dashboard = engine.getDashboard();
213
+ console.log(`VaR (95%): $${dashboard.portfolioVaR95}`);
214
+ console.log(`Regime: ${dashboard.regime} (${dashboard.regimeSizeMultiplier}x)`);
215
+ console.log(`Daily P&L: $${dashboard.dailyPnL} / $${dashboard.dailyLossLimit}`);
216
+ console.log(`Drawdown: ${dashboard.currentDrawdown}% / ${dashboard.maxDrawdown}%`);
217
+ console.log(`Concentration HHI: ${dashboard.concentrationHHI}`);
218
+ console.log(`Kill switch: ${dashboard.killSwitchActive}`);
219
+ console.log(`Warnings: ${dashboard.warnings}`);
220
+ ```
221
+
222
+ ### Circuit Breaker (Standalone)
223
+
224
+ ```typescript
225
+ import { createCircuitBreaker, MODERATE_CONFIG } from 'clodds/risk';
226
+
227
+ // Feature-engineering circuit breaker (market-condition-aware)
228
+ const breaker = createCircuitBreaker(MODERATE_CONFIG);
229
+ breaker.startMonitoring();
230
+
231
+ if (!breaker.canTrade('polymarket', marketId)) {
232
+ return; // Trading halted
233
+ }
234
+
235
+ breaker.recordTrade({ success: true, pnl: 2.5 });
236
+ ```
237
+
238
+ ### Kill Switch
239
+
240
+ ```typescript
241
+ // Emergency stop via SafetyManager — no auto-resume
242
+ safetyManager.killSwitch('Market anomaly detected');
243
+
244
+ // Resume manually after review
245
+ safetyManager.resumeTrading();
246
+ ```
247
+
248
+ ---
249
+
250
+ ## Risk Engine Checks
251
+
252
+ | # | Check | Module | Blocks Trade? |
253
+ |---|-------|--------|---------------|
254
+ | 1 | Kill switch | SafetyManager | Yes |
255
+ | 2 | Circuit breaker | CircuitBreaker | Yes |
256
+ | 3 | Max order size | trading/risk | Yes |
257
+ | 4 | Exposure limits | trading/risk | Yes |
258
+ | 5 | Daily loss limit | SafetyManager | Yes |
259
+ | 6 | Max drawdown | SafetyManager | Yes |
260
+ | 7 | Concentration | SafetyManager | Yes |
261
+ | 8 | VaR limit | VaRCalculator | Yes (if configured) |
262
+ | 9 | Volatility regime | VolatilityDetector | Yes (if extreme + halt) |
263
+ | 10 | Kelly sizing | DynamicKelly | No (adjusts size) |
264
+
265
+ ## Circuit Breaker Triggers
266
+
267
+ | Trigger | Default | Description |
268
+ |---------|---------|-------------|
269
+ | **Daily loss (USD)** | $1,000 | Absolute loss limit |
270
+ | **Daily loss (%)** | 10% | Percentage of capital |
271
+ | **Drawdown** | 20% | Peak-to-trough |
272
+ | **Consecutive losses** | 5 | Losses in a row |
273
+ | **Error rate** | 50% | Failed order rate |
274
+ | **Max trades** | 50 | Trades per day |
275
+
276
+ ## Volatility Regimes
277
+
278
+ | Regime | Size Multiplier | Description |
279
+ |--------|----------------|-------------|
280
+ | `low` | 1.2x | Calm markets, slightly larger positions |
281
+ | `normal` | 1.0x | Baseline conditions |
282
+ | `high` | 0.5x | Elevated volatility, half size |
283
+ | `extreme` | 0.25x | Crisis — quarter size or halt trading |
284
+
285
+ ## Stress Test Scenarios
286
+
287
+ | Scenario | Loss | Description |
288
+ |----------|------|-------------|
289
+ | `flash_crash` | 20% | All positions lose value instantly |
290
+ | `liquidity_crunch` | 10% | Slippage doubles, partial fills |
291
+ | `platform_down` | 15% | Primary platform offline |
292
+ | `correlation_spike` | 25% | All positions move together |
293
+ | `black_swan` | 40% | 3-sigma tail event |
294
+
295
+ ## Status Levels
296
+
297
+ | Status | Description |
298
+ |--------|-------------|
299
+ | `armed` | Normal, trading allowed |
300
+ | `warning` | Approaching limits (80%) |
301
+ | `tripped` | Limit exceeded, trading stopped |
302
+ | `killed` | Emergency stop, manual reset required |
303
+
304
+ ---
305
+
306
+ ## Recovery Process
307
+
308
+ 1. **Auto-reset**: Next day at midnight (daily counters)
309
+ 2. **Cooldown**: Circuit breaker auto-resets after cooldown period
310
+ 3. **Manual reset**: `/risk reset` to re-arm
311
+ 4. **Kill recovery**: `/risk reset` after manual review (no auto-resume)
312
+
313
+ ---
314
+
315
+ ## Best Practices
316
+
317
+ 1. **Start conservative** — Lower limits while learning
318
+ 2. **Don't override** — Respect the circuit breaker
319
+ 3. **Review trips** — Understand why limits were hit
320
+ 4. **Monitor VaR** — Use `/risk var` and `/risk dashboard` regularly
321
+ 5. **Run stress tests** — Use `/risk stress` before large position changes
322
+ 6. **Watch regime** — Use `/risk regime` to understand current volatility
323
+ 7. **Adjust limits** — Based on strategy performance and regime
@@ -0,0 +1,233 @@
1
+ ---
2
+ name: router
3
+ description: "Smart order routing for best price, liquidity, and execution"
4
+ emoji: "🔀"
5
+ ---
6
+
7
+ # Router - Complete API Reference
8
+
9
+ Route orders to the best platform based on price, liquidity, fees, and execution quality.
10
+
11
+ ---
12
+
13
+ ## Chat Commands
14
+
15
+ ### Route Order
16
+
17
+ ```
18
+ /route "Trump 2028" YES 1000 Find best route for $1000
19
+ /route BTCUSDT long 0.5 Route futures order
20
+ /route --mode best-price "Fed" YES Optimize for price
21
+ /route --mode best-liquidity ... Optimize for fills
22
+ ```
23
+
24
+ ### Compare Routes
25
+
26
+ ```
27
+ /route compare "Trump" YES 1000 Compare all platforms
28
+ /route fees "Trump" Compare fee structures
29
+ /route liquidity "Trump" Compare orderbook depth
30
+ ```
31
+
32
+ ### Execution
33
+
34
+ ```
35
+ /route execute <route-id> Execute routed order
36
+ /route split "Trump" YES 5000 Split across platforms
37
+ ```
38
+
39
+ ---
40
+
41
+ ## TypeScript API Reference
42
+
43
+ ### Create Smart Router
44
+
45
+ ```typescript
46
+ import { createSmartRouter } from 'clodds/router';
47
+
48
+ const router = createSmartRouter({
49
+ // Supported platforms
50
+ platforms: ['polymarket', 'kalshi', 'manifold'],
51
+
52
+ // Default mode
53
+ defaultMode: 'balanced',
54
+
55
+ // Fee structures
56
+ fees: {
57
+ polymarket: { maker: -0.005, taker: 0.01 },
58
+ kalshi: { maker: 0, taker: 0.01 },
59
+ manifold: { maker: 0, taker: 0 },
60
+ },
61
+ });
62
+ ```
63
+
64
+ ### Find Best Route
65
+
66
+ ```typescript
67
+ const route = await router.findBestRoute({
68
+ market: 'trump-win-2028',
69
+ side: 'YES',
70
+ size: 1000,
71
+ mode: 'best-price', // 'best-price' | 'best-liquidity' | 'lowest-fee' | 'balanced'
72
+ });
73
+
74
+ console.log(`Best platform: ${route.platform}`);
75
+ console.log(`Expected price: ${route.expectedPrice}`);
76
+ console.log(`Expected slippage: ${route.expectedSlippage}%`);
77
+ console.log(`Fees: $${route.fees}`);
78
+ console.log(`Net cost: $${route.netCost}`);
79
+ console.log(`Fill probability: ${route.fillProbability}%`);
80
+ ```
81
+
82
+ ### Compare All Platforms
83
+
84
+ ```typescript
85
+ const comparison = await router.compare({
86
+ market: 'trump-win-2028',
87
+ side: 'YES',
88
+ size: 1000,
89
+ });
90
+
91
+ console.log('Platform Comparison:');
92
+ for (const platform of comparison) {
93
+ console.log(`\n${platform.name}:`);
94
+ console.log(` Price: ${platform.price}`);
95
+ console.log(` Liquidity: $${platform.liquidity}`);
96
+ console.log(` Slippage: ${platform.slippage}%`);
97
+ console.log(` Fees: $${platform.fees}`);
98
+ console.log(` Net cost: $${platform.netCost}`);
99
+ console.log(` Score: ${platform.score}`);
100
+ }
101
+ ```
102
+
103
+ ### Split Order Across Platforms
104
+
105
+ ```typescript
106
+ // Large orders split for better execution
107
+ const split = await router.splitOrder({
108
+ market: 'trump-win-2028',
109
+ side: 'YES',
110
+ size: 10000,
111
+ maxSlippage: 0.02,
112
+ });
113
+
114
+ console.log('Order Split:');
115
+ for (const leg of split.legs) {
116
+ console.log(` ${leg.platform}: $${leg.size} @ ${leg.price}`);
117
+ }
118
+ console.log(`Total slippage: ${split.totalSlippage}%`);
119
+ console.log(`Avg price: ${split.avgPrice}`);
120
+ ```
121
+
122
+ ### Execute Route
123
+
124
+ ```typescript
125
+ // Execute the routed order
126
+ const result = await router.execute(route);
127
+
128
+ console.log(`Order ID: ${result.orderId}`);
129
+ console.log(`Platform: ${result.platform}`);
130
+ console.log(`Fill price: ${result.fillPrice}`);
131
+ console.log(`Slippage: ${result.actualSlippage}%`);
132
+ console.log(`Fees: $${result.fees}`);
133
+ ```
134
+
135
+ ### Routing Modes
136
+
137
+ ```typescript
138
+ // Best price - minimize price paid
139
+ const priceRoute = await router.findBestRoute({
140
+ ...order,
141
+ mode: 'best-price',
142
+ });
143
+
144
+ // Best liquidity - maximize fill probability
145
+ const liquidityRoute = await router.findBestRoute({
146
+ ...order,
147
+ mode: 'best-liquidity',
148
+ });
149
+
150
+ // Lowest fees - minimize transaction costs
151
+ const feeRoute = await router.findBestRoute({
152
+ ...order,
153
+ mode: 'lowest-fee',
154
+ });
155
+
156
+ // Balanced - weighted optimization
157
+ const balancedRoute = await router.findBestRoute({
158
+ ...order,
159
+ mode: 'balanced',
160
+ weights: {
161
+ price: 0.4,
162
+ liquidity: 0.3,
163
+ fees: 0.3,
164
+ },
165
+ });
166
+ ```
167
+
168
+ ### Fee Analysis
169
+
170
+ ```typescript
171
+ const fees = await router.analyzeFees({
172
+ market: 'trump-win-2028',
173
+ side: 'YES',
174
+ size: 1000,
175
+ });
176
+
177
+ for (const platform of fees) {
178
+ console.log(`${platform.name}:`);
179
+ console.log(` Maker fee: ${platform.makerFee}%`);
180
+ console.log(` Taker fee: ${platform.takerFee}%`);
181
+ console.log(` For this order: $${platform.totalFee}`);
182
+ console.log(` Rebate available: ${platform.hasRebate}`);
183
+ }
184
+ ```
185
+
186
+ ### Liquidity Analysis
187
+
188
+ ```typescript
189
+ const liquidity = await router.analyzeLiquidity({
190
+ market: 'trump-win-2028',
191
+ side: 'YES',
192
+ });
193
+
194
+ for (const platform of liquidity) {
195
+ console.log(`${platform.name}:`);
196
+ console.log(` Best bid: ${platform.bestBid}`);
197
+ console.log(` Best ask: ${platform.bestAsk}`);
198
+ console.log(` Spread: ${platform.spread}%`);
199
+ console.log(` Depth at 1%: $${platform.depth1Pct}`);
200
+ console.log(` Depth at 2%: $${platform.depth2Pct}`);
201
+ }
202
+ ```
203
+
204
+ ---
205
+
206
+ ## Routing Modes
207
+
208
+ | Mode | Optimizes For | Best When |
209
+ |------|---------------|-----------|
210
+ | `best-price` | Lowest price | Small orders |
211
+ | `best-liquidity` | Fill probability | Large orders |
212
+ | `lowest-fee` | Minimize fees | High frequency |
213
+ | `balanced` | Weighted combo | Default choice |
214
+
215
+ ---
216
+
217
+ ## Platform Comparison
218
+
219
+ | Platform | Maker Fee | Taker Fee | Notes |
220
+ |----------|-----------|-----------|-------|
221
+ | **Polymarket** | 0% | 0% | Zero fees on most markets; 15-min crypto markets have dynamic fees |
222
+ | **Kalshi** | ~0.17% | ~1.2% | Formula-based fees, capped at ~2% |
223
+ | **Manifold** | 0% | 0% | Play money |
224
+
225
+ ---
226
+
227
+ ## Best Practices
228
+
229
+ 1. **Compare before trading** — Always check alternatives
230
+ 2. **Use maker orders** — Pay no fees on Polymarket (vs dynamic fees on 15-min crypto markets)
231
+ 3. **Split large orders** — Reduce slippage
232
+ 4. **Check liquidity** — Don't trade thin markets
233
+ 5. **Account for fees** — Polymarket: 0% most markets; Kalshi: ~1.2% average