File size: 2,735 Bytes
9831ced
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4554e0a
9831ced
ceca5ef
9831ced
 
 
 
 
 
 
 
 
 
 
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
import os

BASE_DIR = os.path.dirname(os.path.abspath(__file__))
# Creation is lazy: importing the application must also work in a read-only
# checkout. Operators can point runtime artifacts at a persistent writable mount.
OUTPUT_DIR = os.path.abspath(os.path.expanduser(os.environ.get('MYTHOS_OUTPUT_DIR', os.path.join(BASE_DIR, 'outputs'))))

DEFAULT_FOREX_SYMBOLS = [
    'EURUSD=X', 'GBPUSD=X', 'USDJPY=X', 'USDCHF=X', 'AUDUSD=X',
    'USDCAD=X', 'NZDUSD=X', 'EURJPY=X', 'EURGBP=X', 'GBPJPY=X',
    'AUDJPY=X', 'CADJPY=X', 'CHFJPY=X', 'NZDJPY=X', 'EURCHF=X',
    'EURCAD=X', 'EURAUD=X', 'EURNZD=X', 'GBPCHF=X', 'GBPCAD=X',
    'GBPAUD=X', 'GBPNZD=X', 'AUDCAD=X', 'AUDCHF=X', 'AUDNZD=X',
    'CADCHF=X', 'NZDCAD=X', 'NZDCHF=X', 'USDINR=X', 'USDCNH=X',
    'USDHKD=X', 'USDSGD=X', 'USDZAR=X', 'USDMXN=X', 'USDTRY=X',
    'USDSEK=X', 'USDNOK=X', 'USDDKK=X', 'USDPLN=X', 'USDTHB=X',
]
DEFAULT_CRYPTO_SYMBOLS = [
    'BTC-USD', 'ETH-USD', 'BNB-USD', 'XRP-USD', 'SOL-USD',
    'ADA-USD', 'DOGE-USD', 'DOT-USD', 'LTC-USD', 'LINK-USD',
]
ALL_DEFAULT_SYMBOLS = DEFAULT_FOREX_SYMBOLS + DEFAULT_CRYPTO_SYMBOLS
YF_NATIVE_INTERVALS = {
    '1m': {'max_days': 30, 'max_request_days': 7},
    '2m': {'max_days': 60, 'max_request_days': 60},
    '5m': {'max_days': 60, 'max_request_days': 60},
    '15m': {'max_days': 60, 'max_request_days': 60},
    '30m': {'max_days': 60, 'max_request_days': 60},
    '60m': {'max_days': 730, 'max_request_days': 730},
    '90m': {'max_days': 60, 'max_request_days': 60},
    '1d': {'max_days': None, 'max_request_days': None},
    '1wk': {'max_days': None, 'max_request_days': None},
    '1mo': {'max_days': None, 'max_request_days': None},
}
CUSTOM_TIMEFRAMES = {
    '1m': {'source': '1m', 'rule': None},
    '2m': {'source': '2m', 'rule': None},
    '5m': {'source': '5m', 'rule': None},
    '10m': {'source': '5m', 'rule': '10min'},
    '15m': {'source': '15m', 'rule': None},
    '30m': {'source': '30m', 'rule': None},
    '1h': {'source': '60m', 'rule': None},
    '2h': {'source': '60m', 'rule': '2h'},
    '4h': {'source': '60m', 'rule': '4h'},
    '1d': {'source': '1d', 'rule': None},
}
TIMEFRAMES = ['1m', '2m', '5m', '10m', '15m', '30m', '1h', '2h']
MODEL_NAMES = ['ARIMA', 'Auto-ARIMA', 'ARIMA-GARCH', 'Moirai', 'TimesFM', 'Ridge']
PROVIDERS = ['Yahoo Finance', 'Binance Spot', 'Twelve Data']
RESEARCH_PHASES = ['Tune only', 'Tune + Validate', 'Vault only']
MOIRAI_CHECKPOINT = 'Salesforce/moirai-1.1-R-small'
TIMESFM_CHECKPOINT = 'google/timesfm-2.5-200m-pytorch'
DEFAULT_SYMBOL = 'BTC-USD'
DEFAULT_TIMEFRAME = '5m'
DEFAULT_MODEL = 'ARIMA-GARCH'
DEFAULT_LOOKBACK_DAYS = 30
DEFAULT_HISTORY_WINDOW = 200
DEFAULT_HORIZON = 1
DEFAULT_BACKTEST_STEP = 30
DEFAULT_MAX_EVALUATIONS = 30
RANDOM_SEED = 42