# ======================================================================= # 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