initial commit
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class Config:
|
||||
# Data settings
|
||||
DATA_DIR = os.path.join(os.path.dirname(__file__), "data")
|
||||
RAW_DATA_DIR = os.path.join(DATA_DIR, "raw")
|
||||
PROCESSED_DATA_DIR = os.path.join(DATA_DIR, "processed")
|
||||
EXTERNAL_DATA_DIR = os.path.join(DATA_DIR, "external")
|
||||
|
||||
# Ensure directories exist
|
||||
os.makedirs(RAW_DATA_DIR, exist_ok=True)
|
||||
os.makedirs(PROCESSED_DATA_DIR, exist_ok=True)
|
||||
os.makedirs(EXTERNAL_DATA_DIR, exist_ok=True)
|
||||
|
||||
# Stock universe settings
|
||||
INITIAL_TICKERS = [
|
||||
"AAPL",
|
||||
"MSFT",
|
||||
"GOOGL",
|
||||
"AMZN",
|
||||
"META",
|
||||
"TSLA",
|
||||
"NVDA",
|
||||
"JPM",
|
||||
"V",
|
||||
"WMT",
|
||||
"PG",
|
||||
"DIS",
|
||||
"NFLX",
|
||||
"ADBE",
|
||||
"PYPL",
|
||||
"INTC",
|
||||
"CSCO",
|
||||
"PEP",
|
||||
"KO",
|
||||
"XOM",
|
||||
]
|
||||
INDEX_TICKER = "^GSPC" # S&P 500
|
||||
DELISTED_TICKERS_FILE = os.path.join(EXTERNAL_DATA_DIR, "delisted_stocks.csv")
|
||||
|
||||
# Date settings
|
||||
START_DATE = "2010-01-01"
|
||||
END_DATE = datetime.now().strftime("%Y-%m-%d")
|
||||
TRAIN_END_DATE = "2020-12-31"
|
||||
VAL_END_DATE = "2021-12-31"
|
||||
|
||||
# Model settings
|
||||
MODEL_DIR = os.path.join(os.path.dirname(__file__), "models")
|
||||
os.makedirs(MODEL_DIR, exist_ok=True)
|
||||
MODEL_NAME = "stock_gnn"
|
||||
HIDDEN_CHANNELS = 64
|
||||
NUM_HEADS = 8
|
||||
DROPOUT = 0.6
|
||||
LEARNING_RATE = 0.001
|
||||
EPOCHS = 100
|
||||
BATCH_SIZE = 32
|
||||
LOOKBACK_WINDOW = 30 # Days for feature calculation
|
||||
|
||||
# Backtesting settings
|
||||
INITIAL_CAPITAL = 100000
|
||||
TRANSACTION_COST = 0.001 # 0.1% per trade
|
||||
|
||||
# Evaluation settings
|
||||
BENCHMARK_TICKER = "^GSPC"
|
||||
|
||||
# News data settings
|
||||
NEWS_API_KEY = "your_news_api_key" # For NewsAPI or similar
|
||||
NEWS_SOURCES = ["reuters", "bloomberg", "financial-times", "wsj"]
|
||||
NEWS_CATEGORIES = ["business", "financial", "economy"]
|
||||
NEWS_LOOKBACK_DAYS = 7 # Number of days to look back for news
|
||||
|
||||
# Social media settings
|
||||
TWITTER_BEARER_TOKEN = "your_twitter_bearer_token"
|
||||
REDDIT_CLIENT_ID = "your_reddit_client_id"
|
||||
REDDIT_CLIENT_SECRET = "your_reddit_client_secret"
|
||||
SOCIAL_MEDIA_LOOKBACK_DAYS = 3 # Number of days to look back for social media
|
||||
|
||||
# Sentiment analysis settings
|
||||
SENTIMENT_MODEL = "vader" # 'vader', 'finbert', or 'custom'
|
||||
FINBERT_MODEL_PATH = "yiyanghkust/finbert-tone" # HuggingFace model path
|
||||
|
||||
# Alternative data features
|
||||
NEWS_FEATURES = [
|
||||
"sentiment_score",
|
||||
"mention_count",
|
||||
"positive_score",
|
||||
"negative_score",
|
||||
]
|
||||
SOCIAL_FEATURES = [
|
||||
"twitter_sentiment",
|
||||
"reddit_sentiment",
|
||||
"twitter_volume",
|
||||
"reddit_volume",
|
||||
]
|
||||
ALTERNATIVE_DATA_WEIGHT = 0.3 # Weight for alternative data in final prediction
|
||||
|
||||
# Database settings for alternative data
|
||||
ALTERNATIVE_DATA_DB = os.path.join(DATA_DIR, "alternative_data.db")
|
||||
|
||||
|
||||
config = Config()
|
||||
Reference in New Issue
Block a user