veto-sdk 2.2.1 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +933 -57
- package/dist/admin/client.d.ts +93 -0
- package/dist/admin/client.d.ts.map +1 -0
- package/dist/admin/client.js +365 -0
- package/dist/admin/client.js.map +1 -0
- package/dist/admin/types.d.ts +206 -0
- package/dist/admin/types.d.ts.map +1 -0
- package/dist/admin/types.js +2 -0
- package/dist/admin/types.js.map +1 -0
- package/dist/audit/chain.d.ts +13 -0
- package/dist/audit/chain.d.ts.map +1 -0
- package/dist/audit/chain.js +32 -0
- package/dist/audit/chain.js.map +1 -0
- package/dist/browser/types.d.ts +1 -1
- package/dist/browser/types.d.ts.map +1 -1
- package/dist/browser/veto.d.ts.map +1 -1
- package/dist/browser/veto.js +24 -2
- package/dist/browser/veto.js.map +1 -1
- package/dist/cli/compile.d.ts.map +1 -1
- package/dist/cli/compile.js +6 -5
- package/dist/cli/compile.js.map +1 -1
- package/dist/cli/repl-generate.js +1 -1
- package/dist/cli/repl-generate.js.map +1 -1
- package/dist/cli/runner.d.ts.map +1 -1
- package/dist/cli/runner.js +129 -8
- package/dist/cli/runner.js.map +1 -1
- package/dist/cli/templates.d.ts +1 -1
- package/dist/cli/templates.d.ts.map +1 -1
- package/dist/cli/templates.js +1 -1
- package/dist/core/history.d.ts +14 -0
- package/dist/core/history.d.ts.map +1 -1
- package/dist/core/history.js +73 -13
- package/dist/core/history.js.map +1 -1
- package/dist/core/tool-pack-heuristics.d.ts.map +1 -1
- package/dist/core/tool-pack-heuristics.js +33 -0
- package/dist/core/tool-pack-heuristics.js.map +1 -1
- package/dist/core/validator.d.ts +4 -0
- package/dist/core/validator.d.ts.map +1 -1
- package/dist/core/validator.js +119 -97
- package/dist/core/validator.js.map +1 -1
- package/dist/core/veto.d.ts +53 -2
- package/dist/core/veto.d.ts.map +1 -1
- package/dist/core/veto.js +137 -7
- package/dist/core/veto.js.map +1 -1
- package/dist/custom/types.d.ts +1 -1
- package/dist/custom/types.d.ts.map +1 -1
- package/dist/deterministic/types.d.ts +2 -0
- package/dist/deterministic/types.d.ts.map +1 -1
- package/dist/index.d.ts +11 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/integrations/langchain/middleware.d.ts +1 -1
- package/dist/integrations/langchain/middleware.js +1 -1
- package/dist/integrations/openclaw/hooks.d.ts +30 -0
- package/dist/integrations/openclaw/hooks.d.ts.map +1 -0
- package/dist/integrations/openclaw/hooks.js +130 -0
- package/dist/integrations/openclaw/hooks.js.map +1 -0
- package/dist/integrations/openclaw/index.d.ts +3 -0
- package/dist/integrations/openclaw/index.d.ts.map +1 -0
- package/dist/integrations/openclaw/index.js +2 -0
- package/dist/integrations/openclaw/index.js.map +1 -0
- package/dist/integrations/vercel-ai/middleware.d.ts +1 -1
- package/dist/integrations/vercel-ai/middleware.js +1 -1
- package/dist/observability/otel.d.ts +29 -0
- package/dist/observability/otel.d.ts.map +1 -0
- package/dist/observability/otel.js +43 -0
- package/dist/observability/otel.js.map +1 -0
- package/dist/proxy/anthropic-interceptor.d.ts +51 -0
- package/dist/proxy/anthropic-interceptor.d.ts.map +1 -0
- package/dist/proxy/anthropic-interceptor.js +132 -0
- package/dist/proxy/anthropic-interceptor.js.map +1 -0
- package/dist/proxy/interceptor.d.ts +55 -0
- package/dist/proxy/interceptor.d.ts.map +1 -0
- package/dist/proxy/interceptor.js +111 -0
- package/dist/proxy/interceptor.js.map +1 -0
- package/dist/proxy/server.d.ts +21 -0
- package/dist/proxy/server.d.ts.map +1 -0
- package/dist/proxy/server.js +545 -0
- package/dist/proxy/server.js.map +1 -0
- package/dist/proxy/types.d.ts +18 -0
- package/dist/proxy/types.d.ts.map +1 -0
- package/dist/proxy/types.js +7 -0
- package/dist/proxy/types.js.map +1 -0
- package/dist/rate-limiting/evaluator.d.ts +17 -0
- package/dist/rate-limiting/evaluator.d.ts.map +1 -0
- package/dist/rate-limiting/evaluator.js +48 -0
- package/dist/rate-limiting/evaluator.js.map +1 -0
- package/dist/rate-limiting/redis-store.d.ts +36 -0
- package/dist/rate-limiting/redis-store.d.ts.map +1 -0
- package/dist/rate-limiting/redis-store.js +68 -0
- package/dist/rate-limiting/redis-store.js.map +1 -0
- package/dist/rate-limiting/store.d.ts +8 -0
- package/dist/rate-limiting/store.d.ts.map +1 -0
- package/dist/rate-limiting/store.js +60 -0
- package/dist/rate-limiting/store.js.map +1 -0
- package/dist/rate-limiting/types.d.ts +9 -0
- package/dist/rate-limiting/types.d.ts.map +1 -0
- package/dist/rate-limiting/types.js +2 -0
- package/dist/rate-limiting/types.js.map +1 -0
- package/dist/rules/condition-evaluator.d.ts.map +1 -1
- package/dist/rules/condition-evaluator.js +29 -0
- package/dist/rules/condition-evaluator.js.map +1 -1
- package/dist/rules/loader.d.ts.map +1 -1
- package/dist/rules/loader.js +5 -0
- package/dist/rules/loader.js.map +1 -1
- package/dist/rules/local-evaluator.d.ts.map +1 -1
- package/dist/rules/local-evaluator.js +9 -1
- package/dist/rules/local-evaluator.js.map +1 -1
- package/dist/rules/policy-ir-schema.d.ts +145 -4
- package/dist/rules/policy-ir-schema.d.ts.map +1 -1
- package/dist/rules/policy-ir-schema.js +122 -3
- package/dist/rules/policy-ir-schema.js.map +1 -1
- package/dist/rules/policy-packs.d.ts.map +1 -1
- package/dist/rules/policy-packs.js +1 -0
- package/dist/rules/policy-packs.js.map +1 -1
- package/dist/rules/types.d.ts +29 -2
- package/dist/rules/types.d.ts.map +1 -1
- package/dist/rules/types.js.map +1 -1
- package/dist/testing/runner.d.ts +21 -0
- package/dist/testing/runner.d.ts.map +1 -0
- package/dist/testing/runner.js +239 -0
- package/dist/testing/runner.js.map +1 -0
- package/dist/testing/types.d.ts +39 -0
- package/dist/testing/types.d.ts.map +1 -0
- package/dist/testing/types.js +7 -0
- package/dist/testing/types.js.map +1 -0
- package/dist/types/config.d.ts +1 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js.map +1 -1
- package/package.json +24 -14
- package/packs/crypto-trading.yaml +320 -0
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
version: "1.0"
|
|
2
|
+
name: "@veto/crypto-trading"
|
|
3
|
+
description: >
|
|
4
|
+
Production-grade guardrails for AI trading agents. Covers crypto exchanges
|
|
5
|
+
(Binance, Bybit, OKX), prediction markets (Polymarket, Manifold), and
|
|
6
|
+
general financial instruments. Conservative defaults safe for first-timers.
|
|
7
|
+
One line to safe trading: extends: "@veto/crypto-trading"
|
|
8
|
+
|
|
9
|
+
rules:
|
|
10
|
+
# --- Layer 1: Read-only (always allow) ---
|
|
11
|
+
- id: crypto-allow-reads
|
|
12
|
+
name: Allow all read operations
|
|
13
|
+
description: Market data, portfolio, prices, positions, history — always safe
|
|
14
|
+
enabled: true
|
|
15
|
+
action: allow
|
|
16
|
+
tools:
|
|
17
|
+
- get_price
|
|
18
|
+
- get_portfolio
|
|
19
|
+
- get_balance
|
|
20
|
+
- get_orderbook
|
|
21
|
+
- get_funding_rate
|
|
22
|
+
- get_positions
|
|
23
|
+
- get_open_orders
|
|
24
|
+
- get_trade_history
|
|
25
|
+
- get_ticker
|
|
26
|
+
- get_klines
|
|
27
|
+
- get_market_info
|
|
28
|
+
- get_account_info
|
|
29
|
+
- get_markets
|
|
30
|
+
- get_market_details
|
|
31
|
+
- get_market_odds
|
|
32
|
+
- get_bets
|
|
33
|
+
- get_bet_history
|
|
34
|
+
- get_portfolio_positions
|
|
35
|
+
- get_market_activity
|
|
36
|
+
- get_leaderboard
|
|
37
|
+
- web_search
|
|
38
|
+
- web_fetch
|
|
39
|
+
- get_news
|
|
40
|
+
- get_sentiment
|
|
41
|
+
- get_on_chain_data
|
|
42
|
+
|
|
43
|
+
# --- Layer 2: Hard blocks (non-negotiable) ---
|
|
44
|
+
- id: crypto-max-leverage
|
|
45
|
+
name: Maximum leverage limit
|
|
46
|
+
description: >
|
|
47
|
+
Hard cap on leverage. Even if the agent or user begs, this won't budge
|
|
48
|
+
without manually editing the config. Prevents liquidation cascades.
|
|
49
|
+
enabled: true
|
|
50
|
+
severity: critical
|
|
51
|
+
action: block
|
|
52
|
+
tools: [change_leverage, set_leverage, update_leverage]
|
|
53
|
+
conditions:
|
|
54
|
+
- field: arguments.leverage
|
|
55
|
+
operator: greater_than
|
|
56
|
+
value: 5 # Adjust: your absolute max leverage (conservative: 2, moderate: 5, aggressive: 10)
|
|
57
|
+
|
|
58
|
+
- id: crypto-max-position
|
|
59
|
+
name: Maximum single position size
|
|
60
|
+
description: No single trade can exceed this USD value
|
|
61
|
+
enabled: true
|
|
62
|
+
severity: critical
|
|
63
|
+
action: block
|
|
64
|
+
tools: [place_order, create_order, submit_order, open_position]
|
|
65
|
+
conditions:
|
|
66
|
+
- field: arguments.quote_quantity
|
|
67
|
+
operator: greater_than
|
|
68
|
+
value: 2000 # Adjust: your max single trade in USD (conservative: 500, moderate: 2000, aggressive: 10000)
|
|
69
|
+
|
|
70
|
+
- id: crypto-max-bet
|
|
71
|
+
name: Maximum prediction market bet
|
|
72
|
+
description: No single prediction market bet can exceed this USD value
|
|
73
|
+
enabled: true
|
|
74
|
+
severity: critical
|
|
75
|
+
action: block
|
|
76
|
+
tools: [place_bet, create_bet, buy_shares, buy_outcome]
|
|
77
|
+
conditions:
|
|
78
|
+
- field: arguments.amount
|
|
79
|
+
operator: greater_than
|
|
80
|
+
value: 500 # Adjust: your max single bet in USD (conservative: 100, moderate: 500, aggressive: 2000)
|
|
81
|
+
|
|
82
|
+
- id: crypto-block-withdrawals
|
|
83
|
+
name: Block all withdrawals
|
|
84
|
+
description: Agent can never move funds off-exchange. Period.
|
|
85
|
+
enabled: true
|
|
86
|
+
severity: critical
|
|
87
|
+
action: block
|
|
88
|
+
tools:
|
|
89
|
+
- withdraw
|
|
90
|
+
- withdraw_funds
|
|
91
|
+
- create_withdrawal
|
|
92
|
+
- transfer_out
|
|
93
|
+
- bridge_funds
|
|
94
|
+
|
|
95
|
+
- id: crypto-block-margin-borrow
|
|
96
|
+
name: Block margin borrowing
|
|
97
|
+
description: Agent cannot borrow margin or take loans
|
|
98
|
+
enabled: true
|
|
99
|
+
severity: critical
|
|
100
|
+
action: block
|
|
101
|
+
tools: [borrow_margin, margin_borrow, cross_margin_borrow, take_loan]
|
|
102
|
+
|
|
103
|
+
- id: crypto-block-remove-stop-loss
|
|
104
|
+
name: Block stop-loss removal
|
|
105
|
+
description: Never allow removing a stop-loss without replacing it
|
|
106
|
+
enabled: true
|
|
107
|
+
severity: critical
|
|
108
|
+
action: block
|
|
109
|
+
tools: [cancel_order, cancel_stop_loss, remove_stop_loss]
|
|
110
|
+
conditions:
|
|
111
|
+
- field: arguments.order_type
|
|
112
|
+
operator: equals
|
|
113
|
+
value: "STOP_LOSS"
|
|
114
|
+
|
|
115
|
+
# --- Layer 3: Auto-allow small trades ---
|
|
116
|
+
- id: crypto-allow-small-trades
|
|
117
|
+
name: Auto-allow small trades
|
|
118
|
+
description: Trades under $200 go through without approval — learning money
|
|
119
|
+
enabled: true
|
|
120
|
+
action: allow
|
|
121
|
+
tools: [place_order, create_order, submit_order, open_position]
|
|
122
|
+
conditions:
|
|
123
|
+
- field: arguments.quote_quantity
|
|
124
|
+
operator: less_than_or_equal
|
|
125
|
+
value: 200 # Adjust: your no-approval-needed trade threshold in USD (conservative: 50, moderate: 200, aggressive: 1000)
|
|
126
|
+
|
|
127
|
+
- id: crypto-allow-small-bets
|
|
128
|
+
name: Auto-allow small bets
|
|
129
|
+
description: Prediction market bets under $50 go through without approval
|
|
130
|
+
enabled: true
|
|
131
|
+
action: allow
|
|
132
|
+
tools: [place_bet, create_bet, buy_shares, buy_outcome]
|
|
133
|
+
conditions:
|
|
134
|
+
- field: arguments.amount
|
|
135
|
+
operator: less_than_or_equal
|
|
136
|
+
value: 50 # Adjust: your no-approval-needed bet threshold in USD (conservative: 25, moderate: 50, aggressive: 250)
|
|
137
|
+
|
|
138
|
+
# --- Layer 4: Approval gates ---
|
|
139
|
+
- id: crypto-approve-trades
|
|
140
|
+
name: Approve trades above threshold
|
|
141
|
+
description: >
|
|
142
|
+
Medium-sized trades need your OK. Your phone pings, you see the details,
|
|
143
|
+
you tap approve or deny. Takes 5 seconds, saves you from impulse trades.
|
|
144
|
+
enabled: true
|
|
145
|
+
severity: high
|
|
146
|
+
action: require_approval
|
|
147
|
+
tools: [place_order, create_order, submit_order, open_position]
|
|
148
|
+
conditions:
|
|
149
|
+
- field: arguments.quote_quantity
|
|
150
|
+
operator: greater_than
|
|
151
|
+
value: 200 # Adjust: matches your no-approval-needed trade threshold in USD (conservative: 50, moderate: 200, aggressive: 1000)
|
|
152
|
+
message: "🔔 Trade approval: {arguments.side} {arguments.symbol} — ${arguments.quote_quantity}"
|
|
153
|
+
|
|
154
|
+
- id: crypto-approve-bets
|
|
155
|
+
name: Approve prediction market bets
|
|
156
|
+
description: Bets above the small threshold need approval
|
|
157
|
+
enabled: true
|
|
158
|
+
severity: high
|
|
159
|
+
action: require_approval
|
|
160
|
+
tools: [place_bet, create_bet, buy_shares, buy_outcome]
|
|
161
|
+
conditions:
|
|
162
|
+
- field: arguments.amount
|
|
163
|
+
operator: greater_than
|
|
164
|
+
value: 50 # Adjust: matches your no-approval-needed bet threshold in USD (conservative: 25, moderate: 50, aggressive: 250)
|
|
165
|
+
message: "🔔 Bet approval: {arguments.market} — ${arguments.amount} on {arguments.outcome}"
|
|
166
|
+
|
|
167
|
+
- id: crypto-approve-leverage-change
|
|
168
|
+
name: Approve all leverage changes
|
|
169
|
+
description: Any leverage change pings you — no exceptions
|
|
170
|
+
enabled: true
|
|
171
|
+
severity: high
|
|
172
|
+
action: require_approval
|
|
173
|
+
tools: [change_leverage, set_leverage, update_leverage]
|
|
174
|
+
message: "⚠️ Leverage change: {arguments.symbol} → {arguments.leverage}x"
|
|
175
|
+
|
|
176
|
+
- id: crypto-approve-close-position
|
|
177
|
+
name: Approve position closure
|
|
178
|
+
description: Closing positions pings you — prevents premature panic exits
|
|
179
|
+
enabled: true
|
|
180
|
+
severity: medium
|
|
181
|
+
action: require_approval
|
|
182
|
+
tools: [close_position, close_all_positions, sell_all]
|
|
183
|
+
message: "📤 Close position: {arguments.symbol}"
|
|
184
|
+
|
|
185
|
+
- id: crypto-approve-cancel-all
|
|
186
|
+
name: Approve mass cancellation
|
|
187
|
+
description: Canceling all orders needs explicit OK
|
|
188
|
+
enabled: true
|
|
189
|
+
severity: medium
|
|
190
|
+
action: require_approval
|
|
191
|
+
tools: [cancel_all_orders]
|
|
192
|
+
message: "🗑️ Cancel ALL open orders — confirm?"
|
|
193
|
+
|
|
194
|
+
- id: crypto-approve-transfers
|
|
195
|
+
name: Approve internal transfers
|
|
196
|
+
description: Moving funds between accounts needs approval
|
|
197
|
+
enabled: true
|
|
198
|
+
severity: high
|
|
199
|
+
action: require_approval
|
|
200
|
+
tools: [transfer_between_accounts, internal_transfer, universal_transfer]
|
|
201
|
+
message: "💸 Transfer ${arguments.amount} from {arguments.from_account} → {arguments.to_account}"
|
|
202
|
+
|
|
203
|
+
- id: crypto-approve-redeem
|
|
204
|
+
name: Approve prediction market redemptions
|
|
205
|
+
description: Redeeming winning positions needs approval
|
|
206
|
+
enabled: true
|
|
207
|
+
severity: medium
|
|
208
|
+
action: require_approval
|
|
209
|
+
tools: [redeem_shares, claim_winnings, redeem_position]
|
|
210
|
+
message: "💰 Redeem {arguments.market} — {arguments.shares} shares"
|
|
211
|
+
|
|
212
|
+
# --- Layer 5: Risk management ---
|
|
213
|
+
- id: crypto-warn-no-stop-loss
|
|
214
|
+
name: Warn on trades without stop-loss
|
|
215
|
+
description: Log a warning when opening leveraged positions without protection
|
|
216
|
+
enabled: true
|
|
217
|
+
severity: medium
|
|
218
|
+
action: warn
|
|
219
|
+
tools: [place_order, create_order, open_position]
|
|
220
|
+
conditions:
|
|
221
|
+
- field: arguments.stop_loss
|
|
222
|
+
operator: not_exists
|
|
223
|
+
message: "⚠️ No stop-loss set on {arguments.symbol} — high risk"
|
|
224
|
+
|
|
225
|
+
# --- Layer 6: Research before action ---
|
|
226
|
+
- id: crypto-research-before-trade
|
|
227
|
+
name: Must research before trading
|
|
228
|
+
description: >
|
|
229
|
+
Agent must check price and portfolio before placing any order.
|
|
230
|
+
This is the "10 seconds of friction" that prevents impulse trades.
|
|
231
|
+
enabled: true
|
|
232
|
+
severity: high
|
|
233
|
+
action: block
|
|
234
|
+
tools: [place_order, create_order, submit_order, open_position]
|
|
235
|
+
requires:
|
|
236
|
+
- tool: get_price
|
|
237
|
+
- tool: get_portfolio
|
|
238
|
+
message: "Check price and portfolio first — no blind trades"
|
|
239
|
+
|
|
240
|
+
- id: crypto-research-before-bet
|
|
241
|
+
name: Must research before betting
|
|
242
|
+
description: Agent must look at market details before placing a bet
|
|
243
|
+
enabled: true
|
|
244
|
+
severity: high
|
|
245
|
+
action: block
|
|
246
|
+
tools: [place_bet, create_bet, buy_shares, buy_outcome]
|
|
247
|
+
requires:
|
|
248
|
+
- tool: get_market_details
|
|
249
|
+
message: "Check market details first — no blind bets"
|
|
250
|
+
|
|
251
|
+
# --- Layer 7: Time restrictions ---
|
|
252
|
+
- id: crypto-block-night-leverage
|
|
253
|
+
name: No leveraged trades at night
|
|
254
|
+
description: >
|
|
255
|
+
Between midnight and 6am UTC, block leveraged trades.
|
|
256
|
+
Most bad decisions happen when you're tired.
|
|
257
|
+
enabled: true
|
|
258
|
+
severity: high
|
|
259
|
+
action: block
|
|
260
|
+
tools: [place_order, create_order, open_position]
|
|
261
|
+
conditions:
|
|
262
|
+
- field: arguments.leverage
|
|
263
|
+
operator: greater_than
|
|
264
|
+
value: 1
|
|
265
|
+
- field: timestamp
|
|
266
|
+
operator: outside_hours
|
|
267
|
+
value: "06:00-23:59"
|
|
268
|
+
message: "No leveraged trades between midnight and 6am. Sleep on it."
|
|
269
|
+
|
|
270
|
+
settings:
|
|
271
|
+
default_action: allow
|
|
272
|
+
fail_mode: closed
|
|
273
|
+
|
|
274
|
+
economic:
|
|
275
|
+
budgets:
|
|
276
|
+
- scope: session
|
|
277
|
+
limit: 1000.00 # Adjust: your session trading budget in USD (conservative: 500, moderate: 1000, aggressive: 5000)
|
|
278
|
+
currency: USD
|
|
279
|
+
approval_threshold: 500.00 # Adjust: the per-trade cost that always needs approval in USD (conservative: 250, moderate: 500, aggressive: 2500)
|
|
280
|
+
window: session
|
|
281
|
+
|
|
282
|
+
cost_extraction:
|
|
283
|
+
default: "arguments.quote_quantity"
|
|
284
|
+
overrides:
|
|
285
|
+
place_order: "arguments.quote_quantity"
|
|
286
|
+
create_order: "arguments.quote_quantity"
|
|
287
|
+
open_position: "arguments.quote_quantity"
|
|
288
|
+
place_bet: "arguments.amount"
|
|
289
|
+
create_bet: "arguments.amount"
|
|
290
|
+
buy_shares: "arguments.amount"
|
|
291
|
+
buy_outcome: "arguments.amount"
|
|
292
|
+
transfer_between_accounts: "arguments.amount"
|
|
293
|
+
|
|
294
|
+
payer:
|
|
295
|
+
required: false
|
|
296
|
+
|
|
297
|
+
denial_reasons:
|
|
298
|
+
budget_exceeded: "Daily budget hit: ${spent}/${limit} USD. Done for today — no more trades until next session."
|
|
299
|
+
approval_required: "This ${cost} trade pushes you past the ${threshold} approval threshold. Confirm?"
|
|
300
|
+
|
|
301
|
+
sessionConstraints:
|
|
302
|
+
maxCalls: 100 # Adjust: max tool calls per session (conservative: 50, moderate: 100, aggressive: 250)
|
|
303
|
+
budget: 1000 # Adjust: session spend budget in USD for deterministic tracking (conservative: 500, moderate: 1000, aggressive: 5000)
|
|
304
|
+
spendArgument: "quote_quantity"
|
|
305
|
+
counters:
|
|
306
|
+
open_positions:
|
|
307
|
+
increment: [place_order, create_order, open_position]
|
|
308
|
+
decrement: [close_position]
|
|
309
|
+
max: 3 # Adjust: max simultaneous open positions (conservative: 2, moderate: 3, aggressive: 5)
|
|
310
|
+
maxAction: require_approval
|
|
311
|
+
active_bets:
|
|
312
|
+
increment: [place_bet, create_bet, buy_shares, buy_outcome]
|
|
313
|
+
decrement: [redeem_shares, claim_winnings]
|
|
314
|
+
max: 5 # Adjust: max simultaneous prediction market positions (conservative: 3, moderate: 5, aggressive: 10)
|
|
315
|
+
maxAction: require_approval
|
|
316
|
+
cumulativeLimits:
|
|
317
|
+
- argumentName: quote_quantity
|
|
318
|
+
maxValue: 5000 # Adjust: max cumulative trading volume per session in USD (conservative: 1000, moderate: 5000, aggressive: 25000)
|
|
319
|
+
- argumentName: amount
|
|
320
|
+
maxValue: 2000 # Adjust: max cumulative prediction market volume per session in USD (conservative: 500, moderate: 2000, aggressive: 10000)
|