stock-bot/.env.prod
2025-06-05 09:05:40 -04:00

233 lines
7 KiB
Text

# =======================================================================
# Stock Bot Platform Production Environment Configuration
# =======================================================================
# Core Application Settings
NODE_ENV=production
PORT=3001
APP_NAME=stock-bot
APP_VERSION=1.0.0
# =======================================================================
# DATABASE CONFIGURATIONS
# =======================================================================
# PostgreSQL - Operational Data (orders, positions, strategies)
DB_HOST=${DB_HOST}
DB_PORT=${DB_PORT:-5432}
DB_NAME=${DB_NAME}
DB_USER=${DB_USER}
DB_PASSWORD=${DB_PASSWORD}
DB_POOL_MIN=5
DB_POOL_MAX=20
DB_POOL_IDLE_TIMEOUT=60000
DB_SSL=true
DB_SSL_REJECT_UNAUTHORIZED=true
DB_QUERY_TIMEOUT=30000
DB_CONNECTION_TIMEOUT=10000
# QuestDB - Time-series Data (OHLCV, indicators, performance)
QUESTDB_HOST=${QUESTDB_HOST}
QUESTDB_HTTP_PORT=${QUESTDB_HTTP_PORT:-9000}
QUESTDB_PG_PORT=${QUESTDB_PG_PORT:-8812}
QUESTDB_INFLUX_PORT=${QUESTDB_INFLUX_PORT:-9009}
QUESTDB_USER=${QUESTDB_USER}
QUESTDB_PASSWORD=${QUESTDB_PASSWORD}
QUESTDB_CONNECTION_TIMEOUT=10000
QUESTDB_REQUEST_TIMEOUT=60000
QUESTDB_RETRY_ATTEMPTS=5
QUESTDB_TLS_ENABLED=true
QUESTDB_DEFAULT_DATABASE=qdb
QUESTDB_TELEMETRY_ENABLED=false
# MongoDB - Document Storage (sentiment, raw docs, unstructured data)
MONGODB_HOST=${MONGODB_HOST}
MONGODB_PORT=${MONGODB_PORT:-27017}
MONGODB_DATABASE=${MONGODB_DATABASE}
MONGODB_USERNAME=${MONGODB_USERNAME}
MONGODB_PASSWORD=${MONGODB_PASSWORD}
MONGODB_AUTH_SOURCE=admin
MONGODB_URI=${MONGODB_URI}
MONGODB_MAX_POOL_SIZE=50
MONGODB_MIN_POOL_SIZE=5
MONGODB_MAX_IDLE_TIME=60000
MONGODB_CONNECT_TIMEOUT=30000
MONGODB_SOCKET_TIMEOUT=60000
MONGODB_SERVER_SELECTION_TIMEOUT=10000
MONGODB_TLS=true
MONGODB_RETRY_WRITES=true
MONGODB_JOURNAL=true
MONGODB_READ_PREFERENCE=primaryPreferred
MONGODB_WRITE_CONCERN=majority
# Dragonfly - Redis Replacement (caching and events)
DRAGONFLY_HOST=${DRAGONFLY_HOST}
DRAGONFLY_PORT=${DRAGONFLY_PORT:-6379}
DRAGONFLY_PASSWORD=${DRAGONFLY_PASSWORD}
DRAGONFLY_USERNAME=${DRAGONFLY_USERNAME}
DRAGONFLY_DATABASE=0
DRAGONFLY_MAX_RETRIES=5
DRAGONFLY_RETRY_DELAY=100
DRAGONFLY_CONNECT_TIMEOUT=30000
DRAGONFLY_COMMAND_TIMEOUT=10000
DRAGONFLY_POOL_SIZE=50
DRAGONFLY_POOL_MIN=5
DRAGONFLY_POOL_MAX=100
DRAGONFLY_TLS=true
DRAGONFLY_ENABLE_KEEPALIVE=true
DRAGONFLY_KEEPALIVE_INTERVAL=30
DRAGONFLY_CLUSTER_MODE=false
DRAGONFLY_CLUSTER_NODES=
DRAGONFLY_MAX_MEMORY=8gb
DRAGONFLY_CACHE_MODE=true
# =======================================================================
# MONITORING & LOGGING CONFIGURATIONS
# =======================================================================
# Logging Configuration (Production - Less verbose)
LOG_LEVEL=info
LOG_FORMAT=json
LOG_CONSOLE=false
LOG_FILE=true
LOG_FILE_PATH=/var/log/stock-bot
LOG_FILE_MAX_SIZE=100m
LOG_FILE_MAX_FILES=30
LOG_FILE_DATE_PATTERN=YYYY-MM-DD
LOG_ERROR_FILE=true
LOG_ERROR_STACK=false
LOG_PERFORMANCE=true
LOG_SQL_QUERIES=false
LOG_HTTP_REQUESTS=false
LOG_STRUCTURED=true
LOG_TIMESTAMP=true
LOG_CALLER_INFO=false
LOG_SILENT_MODULES=
LOG_VERBOSE_MODULES=
LOG_SERVICE_NAME=stock-bot
LOG_SERVICE_VERSION=1.0.0
LOG_ENVIRONMENT=production
# Loki - Log Aggregation
LOKI_HOST=${LOKI_HOST}
LOKI_PORT=${LOKI_PORT:-3100}
LOKI_URL=${LOKI_URL}
LOKI_USERNAME=${LOKI_USERNAME}
LOKI_PASSWORD=${LOKI_PASSWORD}
LOKI_TENANT_ID=${LOKI_TENANT_ID}
LOKI_PUSH_TIMEOUT=30000
LOKI_BATCH_SIZE=2048
LOKI_BATCH_WAIT=5000
LOKI_RETENTION_PERIOD=90d
LOKI_MAX_CHUNK_AGE=2h
LOKI_TLS_ENABLED=true
LOKI_TLS_INSECURE=false
LOKI_DEFAULT_LABELS=
LOKI_SERVICE_LABEL=stock-bot
LOKI_ENVIRONMENT_LABEL=production
# Prometheus - Metrics Collection
PROMETHEUS_HOST=${PROMETHEUS_HOST}
PROMETHEUS_PORT=${PROMETHEUS_PORT:-9090}
PROMETHEUS_URL=${PROMETHEUS_URL}
PROMETHEUS_USERNAME=${PROMETHEUS_USERNAME}
PROMETHEUS_PASSWORD=${PROMETHEUS_PASSWORD}
PROMETHEUS_SCRAPE_INTERVAL=30s
PROMETHEUS_EVALUATION_INTERVAL=30s
PROMETHEUS_RETENTION_TIME=90d
PROMETHEUS_TLS_ENABLED=true
PROMETHEUS_TLS_INSECURE=false
# Grafana - Visualization
GRAFANA_HOST=${GRAFANA_HOST}
GRAFANA_PORT=${GRAFANA_PORT:-3000}
GRAFANA_URL=${GRAFANA_URL}
GRAFANA_ADMIN_USER=${GRAFANA_ADMIN_USER}
GRAFANA_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD}
GRAFANA_ALLOW_SIGN_UP=false
GRAFANA_SECRET_KEY=${GRAFANA_SECRET_KEY}
GRAFANA_DATABASE_TYPE=postgres
GRAFANA_DATABASE_URL=${GRAFANA_DATABASE_URL}
GRAFANA_DISABLE_GRAVATAR=true
GRAFANA_ENABLE_GZIP=true
# =======================================================================
# DATA PROVIDER CONFIGURATIONS
# =======================================================================
# Default Data Provider
DEFAULT_DATA_PROVIDER=alpaca
# Alpaca Markets (Production)
ALPACA_ENABLED=true
ALPACA_API_KEY=${ALPACA_API_KEY}
ALPACA_SECRET_KEY=${ALPACA_SECRET_KEY}
ALPACA_BASE_URL=https://api.alpaca.markets
ALPACA_DATA_URL=https://data.alpaca.markets
ALPACA_PAPER_TRADING=false
# Polygon.io
POLYGON_ENABLED=${POLYGON_ENABLED:-false}
POLYGON_API_KEY=${POLYGON_API_KEY}
POLYGON_BASE_URL=https://api.polygon.io
# Yahoo Finance
YAHOO_ENABLED=${YAHOO_ENABLED:-false}
YAHOO_BASE_URL=https://query1.finance.yahoo.com
# IEX Cloud
IEX_ENABLED=${IEX_ENABLED:-false}
IEX_API_KEY=${IEX_API_KEY}
IEX_BASE_URL=https://cloud.iexapis.com
# Data Provider Settings (Production)
DATA_PROVIDER_TIMEOUT=60000
DATA_PROVIDER_RETRIES=5
DATA_PROVIDER_RETRY_DELAY=2000
DATA_CACHE_ENABLED=true
DATA_CACHE_TTL=60
DATA_CACHE_MAX_SIZE=10000
# =======================================================================
# TRADING & RISK MANAGEMENT (Production)
# =======================================================================
# Trading Configuration
PAPER_TRADING=false
MAX_POSITION_SIZE=${MAX_POSITION_SIZE:-0.05}
MAX_DAILY_LOSS=${MAX_DAILY_LOSS:-10000}
# Risk Management (Stricter for production)
RISK_MAX_POSITION_SIZE=${RISK_MAX_POSITION_SIZE:-0.10}
RISK_MAX_LEVERAGE=${RISK_MAX_LEVERAGE:-1.5}
RISK_DEFAULT_STOP_LOSS=${RISK_DEFAULT_STOP_LOSS:-0.015}
RISK_DEFAULT_TAKE_PROFIT=${RISK_DEFAULT_TAKE_PROFIT:-0.045}
RISK_MAX_DRAWDOWN=${RISK_MAX_DRAWDOWN:-0.05}
RISK_MAX_CONSECUTIVE_LOSSES=${RISK_MAX_CONSECUTIVE_LOSSES:-3}
RISK_POSITION_SIZING_METHOD=volatility_adjusted
RISK_CIRCUIT_BREAKER_ENABLED=true
RISK_CIRCUIT_BREAKER_THRESHOLD=0.02
RISK_CIRCUIT_BREAKER_COOLDOWN=7200000
RISK_ALLOW_WEEKEND_TRADING=false
RISK_MARKET_HOURS_ONLY=true
# =======================================================================
# FEATURE FLAGS (Production)
# =======================================================================
ENABLE_ML_SIGNALS=${ENABLE_ML_SIGNALS:-false}
ENABLE_SENTIMENT_ANALYSIS=${ENABLE_SENTIMENT_ANALYSIS:-false}
ENABLE_SOCIAL_SIGNALS=${ENABLE_SOCIAL_SIGNALS:-false}
ENABLE_OPTIONS_TRADING=${ENABLE_OPTIONS_TRADING:-false}
ENABLE_CRYPTO_TRADING=${ENABLE_CRYPTO_TRADING:-false}
ENABLE_BACKTESTING=true
ENABLE_PAPER_TRADING=false
ENABLE_LIVE_TRADING=true
# =======================================================================
# PRODUCTION SETTINGS
# =======================================================================
DEBUG_MODE=false
VERBOSE_LOGGING=false
MOCK_DATA_PROVIDERS=false
ENABLE_API_RATE_LIMITING=true
ENABLE_REQUEST_LOGGING=false