finsight-ai / src /constants.py
mustdo's picture
Fix label mapping, retrain model (99.26% accuracy), fix Confidence DNA display, add src/ config/ and training scripts
3aaddda
Raw
History Blame Contribute Delete
2.5 kB
"""
Centralized Constants for FINSIGHT AI
All non-configurable constants in one place
"""
import os
from pathlib import Path
# ==================== PROJECT PATHS ====================
PROJECT_ROOT = Path(__file__).parent.parent
SRC_DIR = PROJECT_ROOT / "src"
CONFIG_DIR = PROJECT_ROOT / "config"
DATA_DIR = PROJECT_ROOT / "data"
MODELS_DIR = PROJECT_ROOT / "models"
LOGS_DIR = PROJECT_ROOT / "logs"
# Create directories if they don't exist
for directory in [DATA_DIR, MODELS_DIR, LOGS_DIR]:
directory.mkdir(exist_ok=True)
# ==================== MODEL CONSTANTS ====================
DEFAULT_MODEL_NAME = "ProsusAI/finbert"
MAX_SEQUENCE_LENGTH = 128
NUM_LABELS = 3
# Label mapping is now loaded dynamically from trained model's config.json
# This ensures consistency between training and inference
# NO HARDCODED LABEL MAPPINGS HERE!
# ==================== DATA PROCESSING ====================
RANDOM_SEED = 42
MIN_TEXT_LENGTH = 5 # Minimum words in text
MAX_TEXT_LENGTH = 512 # Maximum tokens
# ==================== TRAINING ====================
DEFAULT_BATCH_SIZE = 16
DEFAULT_LEARNING_RATE = 2e-5
DEFAULT_NUM_EPOCHS = 10
DEFAULT_WARMUP_RATIO = 0.1
DEFAULT_WEIGHT_DECAY = 0.01
# ==================== API CONSTANTS ====================
DEFAULT_API_HOST = "0.0.0.0"
DEFAULT_API_PORT = 8000
API_VERSION = "1.0.0"
API_TITLE = "FINSIGHT AI API"
API_DESCRIPTION = "AI-Powered Financial Sentiment Analysis & Stock Intelligence"
# ==================== VALIDATION ====================
# Valid sentiment labels (order matters for model training)
SENTIMENT_LABELS = ["Negative", "Neutral", "Positive"]
# Financial datasets available for loading
AVAILABLE_DATASETS = [
"financial_phrasebank",
"zeroshot/twitter-financial-news-sentiment",
]
# ==================== LOGGING ====================
LOG_FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
JSON_LOG_FORMAT = {
"timestamp": "asctime",
"name": "name",
"level": "levelname",
"message": "message"
}
# ==================== UI CONSTANTS ====================
# Chart configuration
CANDLESTICK_UP_COLOR = "#00d4aa"
CANDLESTICK_DOWN_COLOR = "#ff6b6b"
SMA20_COLOR = "#ffd93d"
SMA50_COLOR = "#00a8e8"
# ==================== VALIDATION THRESHOLDS ====================
RSI_OVERSOLD = 30
RSI_OVERBOUGHT = 70
MIN_CONFIDENCE_THRESHOLD = 0.5
# ==================== FILE EXTENSIONS ====================
ALLOWED_IMAGE_EXTENSIONS = ['.png', '.jpg', '.jpeg', '.webp']
ALLOWED_DATA_EXTENSIONS = ['.csv', '.json', '.parquet']