-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
254 lines (244 loc) · 10.4 KB
/
Copy path.env.example
File metadata and controls
254 lines (244 loc) · 10.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
# Ollama
LLM_PROVIDER=ollama
LLM_BASE_URL=https://api.openai.com/v1
LLM_API_KEY=
LLM_MODEL=
LLM_TIMEOUT=
LLM_OPENAI_CHAT_PATH=/chat/completions
LLM_OPENAI_RESPONSE_FORMAT_JSON=true
LLM_OPENAI_MAX_COMPLETION_TOKENS=
LLM_OPENAI_TEMPERATURE=0.1
OLLAMA_MODEL=qwen2.5:3b
# Default to host-installed Ollama. Set http://ollama:11434 only if you want the dockerized Ollama service.
OLLAMA_BASE_URL=http://host.docker.internal:11434
# Ollama container resources / concurrency
OLLAMA_CPU_LIMIT=6
OLLAMA_MEM_LIMIT=10g
OLLAMA_MEM_RESERVATION=6g
OLLAMA_SHM_SIZE=1g
OLLAMA_NUM_PARALLEL=1
OLLAMA_MAX_LOADED_MODELS=1
OLLAMA_KEEP_ALIVE=10m
# Bot API timeout (seconds) for Ollama calls. Keep this low enough to fail fast on bad prompts.
OLLAMA_TIMEOUT=30
STACK_POSTGRES_USER=stack
STACK_POSTGRES_PASSWORD=stack
FREQTRADE_POSTGRES_DB=freqtrade
FREQTRADE_DB_URL=postgresql+psycopg2://stack:stack@stack-postgres:5432/freqtrade
SPIKE_POSTGRES_DB=spike_scanner
SPIKE_DB_URL=postgresql+psycopg2://stack:stack@stack-postgres:5432/spike_scanner
STACK_ANALYTICS_DB=stack_analytics
LLM_DEBUG_ENABLED=true
LLM_DEBUG_MAX_ENTRIES=250
LLM_DEBUG_PROMPT_MAX_CHARS=8000
LLM_DEBUG_RESPONSE_MAX_CHARS=8000
LLM_DEBUG_DB_URL=postgresql+psycopg2://stack:stack@stack-postgres:5432/stack_analytics
LLM_DEBUG_DB_PATH=/app/data/llm-debug.sqlite
LLM_DEBUG_DB_MAX_ROWS=50000
# Strategy LLM controls (freqtrade container)
ENABLE_LLM_FILTER=false
LLM_MIN_CONFIDENCE=0.65
LLM_CONNECT_TIMEOUT_SECONDS=2
# For slower local models, 45 is usually safer than 15.
LLM_READ_TIMEOUT_SECONDS=15
# Set true in live/dry-run to avoid blocking entries when LLM times out.
LLM_FAIL_OPEN=false
BOT_API_URL=http://bot-api:8000
BOT_API_ACCESS_LOG_ENABLED=false
LLM_SKILL_PROVIDER=direct
LLM_OFFICIAL_SKILL_BASE_URL=https://web3.binance.com
LLM_OFFICIAL_SKILL_FALLBACK_TO_DIRECT=true
LLM_OFFICIAL_SKILL_USER_AGENT=crypto-bot/1.0 (official-skill-provider)
# Binance Skills Hub: crypto-market-rank (used as prompt context in /rank-pairs)
LLM_MARKET_RANK_SKILL_ENABLED=true
LLM_MARKET_RANK_BASE_URL=https://web3.binance.com
LLM_MARKET_RANK_TIMEOUT_SECONDS=6
LLM_MARKET_RANK_CACHE_SECONDS=300
LLM_MARKET_RANK_MAX_TOKENS=120
LLM_MARKET_RANK_PERIOD=50
LLM_MARKET_RANK_QUOTE=USDT
LLM_OFFICIAL_MARKET_RANK_PATH=/bapi/defi/v1/public/wallet-direct/buw/wallet/market/token/pulse/unified/rank/list
LLM_MARKET_RANK_UNIFIED_ENDPOINT=/bapi/defi/v1/public/wallet-direct/buw/wallet/market/token/pulse/unified/rank/list
# Optional chain filter (blank = no chain filter)
LLM_MARKET_RANK_CHAIN_ID=
LLM_MARKET_RANK_EXCLUDE_REGEX=(UP|DOWN|BULL|BEAR|1000|[0-9][0-9][0-9]+L|[0-9][0-9][0-9]+S)
# Binance Skills Hub: trading-signal (also injected into /rank-pairs prompt)
LLM_TRADING_SIGNAL_SKILL_ENABLED=true
LLM_TRADING_SIGNAL_BASE_URL=https://web3.binance.com
LLM_TRADING_SIGNAL_TIMEOUT_SECONDS=6
LLM_TRADING_SIGNAL_CACHE_SECONDS=180
LLM_TRADING_SIGNAL_MAX_ITEMS=120
LLM_TRADING_SIGNAL_QUOTE=USDT
LLM_TRADING_SIGNAL_MIN_SCORE=0.25
LLM_OFFICIAL_TRADING_SIGNAL_PATH=/bapi/defi/v1/public/wallet-direct/buw/wallet/web/signal/smart-money
LLM_TRADING_SIGNAL_BUY_BONUS_MULT=0.35
# Keep at 0.0 for long-only ranking (set >0 to penalize sell-biased signals)
LLM_TRADING_SIGNAL_SELL_PENALTY_MULT=0.0
LLM_TRADING_SIGNAL_CHAIN_ID=56
LLM_TRADING_SIGNAL_USER_AGENT=binance-web3/1.0 (Skill)
LLM_TRADING_SIGNAL_ENDPOINTS=/bapi/defi/v1/public/wallet-direct/buw/wallet/web/signal/smart-money,/friendly/gateway/v1/public/alpha-trade/market/signal/list,/friendly/gateway/v1/public/alpha-trade/trading-signal/list,/friendly/gateway/v1/public/alpha-trade/whitelist/trading-signal/list
LLM_TRADING_SIGNAL_EXCLUDE_REGEX=(UP|DOWN|BULL|BEAR|1000|[0-9][0-9][0-9]+L|[0-9][0-9][0-9]+S)
LLM_TOKEN_INFO_SKILL_ENABLED=false
LLM_TOKEN_INFO_TIMEOUT_SECONDS=2
LLM_TOKEN_INFO_CACHE_SECONDS=300
LLM_TOKEN_INFO_PATH=/bapi/defi/v5/public/wallet-direct/buw/wallet/market/token/search/ai
LLM_TOKEN_AUDIT_SKILL_ENABLED=false
LLM_TOKEN_AUDIT_TIMEOUT_SECONDS=2
LLM_TOKEN_AUDIT_CACHE_SECONDS=300
LLM_TOKEN_AUDIT_PATH=/bapi/defi/v1/public/wallet-direct/security/token/audit
LLM_ADDRESS_INFO_SKILL_ENABLED=false
LLM_ADDRESS_INFO_TIMEOUT_SECONDS=6
LLM_ADDRESS_INFO_CACHE_SECONDS=300
LLM_ADDRESS_INFO_PATH=/bapi/defi/v3/public/wallet-direct/buw/wallet/address/pnl/active-position-list
LLM_RANK_SINGLE_MAX_FAILURES=2
# Strategy profile: conservative | aggressive
STRATEGY_MODE=aggressive
FREQTRADE_STRATEGY=LlmHybridStrategy
# Runtime policy pivot (optional): strategy reads policy JSON written by policy-pivot service.
RUNTIME_POLICY_ENABLED=false
RUNTIME_POLICY_PATH=/freqtrade/user_data/logs/llm-runtime-policy.json
RUNTIME_POLICY_REFRESH_SECONDS=30
# Strategy pair buckets and risk controls
CORE_PAIRS=BTC/USDT ETH/USDT BNB/USDT
RISK_PAIRS=SOL/USDT XRP/USDT AVAX/USDT
SPIKE_PAIRS=
# `normal` allows more entries in aggressive mode than `strict`.
AGGR_ENTRY_STRICTNESS=normal
# Turning this off increases risk-pair participation in mixed/weak benchmark tapes.
BENCHMARK_FILTER_FOR_RISK=true
RISK_STAKE_MULTIPLIER=0.35
RISK_MAX_OPEN_TRADES=1
COIN_NEWS_ENABLED=true
COIN_NEWS_DB_URL=postgresql+psycopg2://stack:stack@stack-postgres:5432/stack_analytics
COIN_NEWS_UPDATE_INTERVAL_MINUTES=15
ENTRY_RANKING_ENABLED=true
ENTRY_TOP_N=1
ENTRY_MIN_SCORE=0.58
# Daily guardrails:
# - stop new entries after daily realized PnL reaches target
# - stop new entries after daily loss limit is hit
DAILY_GUARD_ENABLED=true
DAILY_TARGET_PCT=1.0
DAILY_MAX_DRAWDOWN_PCT=-1.5
# `config` uses configured capital, `equity` uses live wallet equity, `fixed` uses DAILY_PNL_BASE_CAPITAL.
DAILY_PNL_BASE_MODE=config
# Only used when DAILY_PNL_BASE_MODE=fixed.
DAILY_PNL_BASE_CAPITAL=200
# After hitting the daily target, keep trading but switch to a defensive posture.
DAILY_TARGET_SWITCH_TO_DEFENSIVE=true
DAILY_TARGET_DEFENSIVE_STAKE_MULTIPLIER=0.35
DAILY_TARGET_DEFENSIVE_MAX_OPEN_TRADES=1
# Optional per-trade stake as a percentage of total stake capital. `0` keeps fixed/proposed stake sizing.
STAKE_TOTAL_BALANCE_PCT=0
IGNORE_BUYING_EXPIRED_CANDLE_AFTER=1200
# LLM pair-rotation advisor (updates RISK_PAIRS / SPIKE_PAIRS)
LLM_BOT_API_URL=http://localhost:8000
LLM_ROTATE_PROFILE=balanced
LLM_ROTATE_AUTO_DISCOVER=true
LLM_ROTATE_DATA_SOURCE=auto
LLM_ROTATE_EXCHANGE=binance
LLM_ROTATE_QUOTE=USDT
LLM_ROTATE_TOP_N=6
LLM_ROTATE_MIN_CONFIDENCE=0.60
LLM_ROTATE_ALLOWED_RISK=low medium high
LLM_ROTATE_ALLOWED_REGIMES=trend_pullback breakout mean_reversion
LLM_ROTATE_USE_SPIKE_BIAS=true
LLM_ROTATE_USE_SMART_MONEY_BIAS=false
LLM_ROTATE_RESERVE_SPIKE_SLOT=true
LLM_ROTATE_SPIKE_DB_URL=postgresql+psycopg2://stack:stack@stack-postgres:5432/spike_scanner
LLM_ROTATE_EXCLUDED_BASES=USDC USDT FDUSD TUSD USDP BUSD DAI EUR USD1
LLM_ROTATE_EXCLUDED_PAIRS=U/USDT PAXG/USDT XAUT/USDT G/USDT
LLM_ROTATE_PROBATION_PATH=freqtrade/user_data/logs/rotation-pair-probation.json
LLM_ROTATE_PROBATION_HOURS=72
LLM_ROTATE_OUTCOME_DB_URL=postgresql+psycopg2://stack:stack@stack-postgres:5432/stack_analytics
LLM_ROTATE_TIMEFRAME=1h
LLM_ROTATE_LOOKBACK_CANDLES=240
LLM_ROTATE_LOOP_INTERVAL_MINUTES=60
LLM_ROTATE_LOOP_JITTER_SECONDS=0
# LLM runtime policy loop (updates risk posture for strategy in near real time)
LLM_POLICY_LOOP_ENABLED=false
LLM_POLICY_INTERVAL_MINUTES=15
LLM_POLICY_LOOKBACK_HOURS=24
LLM_POLICY_MIN_CLOSED_TRADES=4
LLM_POLICY_HTTP_TIMEOUT_SECONDS=45
LLM_POLICY_TRADES_DB=postgresql+psycopg2://stack:stack@stack-postgres:5432/freqtrade
LLM_POLICY_OUTPUT_PATH=./freqtrade/user_data/logs/llm-runtime-policy.json
LLM_POLICY_USE_SPIKE=true
LLM_POLICY_SPIKE_DB_URL=postgresql+psycopg2://stack:stack@stack-postgres:5432/spike_scanner
LLM_POLICY_SPIKE_DB_PATH=./freqtrade/user_data/logs/spike-scanner.sqlite
LLM_POLICY_ROTATION_LOG_PATH=./freqtrade/user_data/logs/llm-pair-rotation.log
# Binance public endpoints (shared by tools/services)
BINANCE_REST_BASE=https://api.binance.com
BINANCE_WS_BASE=wss://stream.binance.com:9443/stream
# Spike scanner (alert-only) service
# Reuses LLM_ROTATE_QUOTE / LLM_ROTATE_MIN_QUOTE_VOLUME / LLM_ROTATE_EXCLUDE_REGEX by default.
# SPIKE_QUOTE_ASSET=USDT
# SPIKE_MIN_QUOTE_VOLUME=20000000
# SPIKE_EXCLUDE_REGEX=(UP|DOWN|BULL|BEAR|1000|[0-9][0-9][0-9]+L|[0-9][0-9][0-9]+S)
# SPIKE_INCLUDE_SYMBOLS=TAOUSDT WIFUSDT
SPIKE_PROFILE=balanced
# Optional: add stable/FX-like pairs here if they dominate with no_trade/high.
SPIKE_EXCLUDE_SYMBOLS=BTCUSDT ETHUSDT
SPIKE_UNIVERSE_MAX_SYMBOLS=80
SPIKE_WS_SYMBOLS_PER_CONN=25
SPIKE_UNIVERSE_CACHE_PATH=/data/spike-universe-cache.json
SPIKE_UNIVERSE_CACHE_TTL_MINUTES=360
SPIKE_TOP_N_ALERTS=5
SPIKE_MIN_SCORE=0.76
SPIKE_ALERT_COOLDOWN_MINUTES=30
SPIKE_LOOP_SECONDS=10
SPIKE_LOG_PATH=/data/spike-alerts.jsonl
SPIKE_DB_PATH=/data/spike-scanner.sqlite
SPIKE_ROTATION_LOG_PATH=/data/llm-pair-rotation.log
SPIKE_OUTCOME_HORIZONS_MINUTES=60,240,1440,2880
SPIKE_OUTCOME_LOOP_SECONDS=30
SPIKE_OUTCOME_BATCH_SIZE=200
SPIKE_LLM_SHADOW_ENABLED=false
# Optional override. Defaults to LLM_BOT_API_URL inside the stack.
SPIKE_LLM_SHADOW_BOT_API_URL=
SPIKE_LLM_SHADOW_TIMEOUT_SECONDS=45
SPIKE_WEB_ENABLED=true
SPIKE_WEB_HOST=0.0.0.0
SPIKE_WEB_PORT=8090
SPIKE_WEB_PUBLIC_PORT=8091
SPIKE_LLM_DEBUG_TAB_ENABLED=true
# Optional override. Defaults to LLM_BOT_API_URL inside the stack.
SPIKE_LLM_DEBUG_BOT_API_URL=
SPIKE_LLM_DEBUG_TIMEOUT_SECONDS=3
SPIKE_LLM_DEBUG_FETCH_LIMIT=500
FREQTRADE_LOG_PATH=/data/freqtrade.log
FREQTRADE_DIAG_MAX_LINES=200000
SPIKE_NOTIFY_ENABLED=true
SPIKE_NOTIFY_TIMEOUT_SECONDS=10
# Scanner notifications (set either SPIKE_* or generic vars below)
SPIKE_TELEGRAM_BOT_TOKEN=
SPIKE_TELEGRAM_CHAT_ID=
SPIKE_DISCORD_WEBHOOK_URL=
# Generic fallbacks also supported by scanner:
TELEGRAM_BOT_TOKEN=
TELEGRAM_CHAT_ID=
DISCORD_WEBHOOK_URL=
# Binance credentials (used by docker-compose -> freqtrade env overrides)
BINANCE_API_KEY=
BINANCE_API_SECRET=
# Freqtrade API server credentials
# Generate with:
# openssl rand -hex 32 -> FREQTRADE_API_JWT_SECRET
# openssl rand -base64 24 -> FREQTRADE_API_PASSWORD
FREQTRADE_HOST_PORT=18080
FREQTRADE_API_URL=http://localhost:18080/api/v1
FREQTRADE_API_JWT_SECRET=
FREQTRADE_API_USERNAME=freqtrade
FREQTRADE_API_PASSWORD=
# Scheduler (automatic maintenance service)
SCHED_DOWNLOAD_ENABLED=true
SCHED_DOWNLOAD_TIME=02:15
SCHED_DOWNLOAD_TIMERANGE=20230101-
SCHED_DOWNLOAD_PAIRS=BTC/USDT ETH/USDT BNB/USDT SOL/USDT XRP/USDT AVAX/USDT LINK/USDT INJ/USDT DOGE/USDT ADA/USDT SUI/USDT TRX/USDT TAO/USDT ZEC/USDT WLD/USDT PEPE/USDT
SCHED_PRUNE_ENABLED=true
SCHED_PRUNE_TIME=03:00
SCHED_PRUNE_WEEKDAY=0
SCHED_PRUNE_DAYS=180
SCHED_STATE_DIR=/freqtrade/user_data/logs/scheduler_state
# Optional timezone for scheduler and services
TZ=America/Montevideo