gru_sac_predictor/logs/20250418_034553/pipeline_20250418_034553.log
2025-04-18 16:57:38 +00:00

210 lines
26 KiB
Plaintext

2025-04-18 03:45:53,304 - root - INFO - Using Base Models Directory: /home/yasha/develop/gru_sac_predictor/models
2025-04-18 03:45:53,304 - root - INFO - Using results directory: /home/yasha/develop/gru_sac_predictor/results/20250418_034553
2025-04-18 03:45:53,304 - root - INFO - Using logs directory: /home/yasha/develop/gru_sac_predictor/logs/20250418_034553
2025-04-18 03:45:53,304 - root - INFO - Using models directory: /home/yasha/develop/gru_sac_predictor/models/20250418_034553
2025-04-18 03:45:53,304 - root - INFO - Logging setup complete. Log file: /home/yasha/develop/gru_sac_predictor/logs/20250418_034553/pipeline_20250418_034553.log
2025-04-18 03:45:53,304 - root - INFO - --- Starting Pipeline Run: 20250418_034553 ---
2025-04-18 03:45:53,304 - root - INFO - Using config: /home/yasha/develop/gru_sac_predictor/gru_sac_predictor/config.yaml
2025-04-18 03:45:53,304 - root - INFO - Resolved relative db_dir '../data/crypto_market_data' to absolute path: /home/yasha/develop/data/crypto_market_data
2025-04-18 03:45:53,304 - gru_sac_predictor.src.data_loader - INFO - Initialized DataLoader with db_dir='/home/yasha/develop/data/crypto_market_data'
2025-04-18 03:45:53,304 - gru_sac_predictor.src.feature_engineer - INFO - FeatureEngineer initialized with minimal whitelist: ['return_1m', 'return_15m', 'return_60m', 'ATR_14', 'volatility_14d', 'chaikin_AD_10', 'svi_10', 'EMA_10', 'EMA_50', 'MACD', 'MACD_signal', 'hour_sin', 'hour_cos']
2025-04-18 03:45:53,304 - gru_sac_predictor.src.gru_model_handler - INFO - GRUModelHandler initialized for run 20250418_034553 in /home/yasha/develop/gru_sac_predictor/models/20250418_034553
2025-04-18 03:45:53,305 - gru_sac_predictor.src.calibrator - INFO - Calibrator initialized with edge threshold: 0.55
2025-04-18 03:45:53,305 - gru_sac_predictor.src.backtester - INFO - Backtester initialized.
2025-04-18 03:45:53,305 - gru_sac_predictor.src.backtester - INFO - Initial Capital: 10000.00
2025-04-18 03:45:53,305 - gru_sac_predictor.src.backtester - INFO - Transaction Cost: 0.0500%
2025-04-18 03:45:53,305 - gru_sac_predictor.src.backtester - INFO - Edge Threshold: 0.550
2025-04-18 03:45:53,309 - root - INFO - Saved run configuration to /home/yasha/develop/gru_sac_predictor/results/20250418_034553/run_config.yaml
2025-04-18 03:45:53,309 - root - INFO - === Starting Pipeline Execution ===
2025-04-18 03:45:53,309 - root - INFO - --- Stage: Loading and Preprocessing Data ---
2025-04-18 03:45:53,309 - gru_sac_predictor.src.data_loader - INFO - Loading data for SOL-USDT (bnbspot) from 2025-03-01 to 2025-03-10, interval 1min
2025-04-18 03:45:53,312 - gru_sac_predictor.src.data_loader - INFO - Scanning for DB files recursively in: /home/yasha/develop/data/crypto_market_data
2025-04-18 03:45:53,362 - gru_sac_predictor.src.data_loader - INFO - Found 316 DB files. Using newest: 20250416.mktdata.ohlcv.db
2025-04-18 03:45:53,470 - gru_sac_predictor.src.data_loader - INFO - Identified 8 potential DB files: ['20250228.mktdata.ohlcv.db', '20250301.mktdata.ohlcv.db', '20250302.mktdata.ohlcv.db', '20250303.mktdata.ohlcv.db', '20250304.mktdata.ohlcv.db', '20250305.mktdata.ohlcv.db', '20250306.mktdata.ohlcv.db', '20250307.mktdata.ohlcv.db']
2025-04-18 03:45:53,535 - gru_sac_predictor.src.data_loader - INFO - Combined data shape before final filtering/resampling: (9827, 5)
2025-04-18 03:45:53,535 - gru_sac_predictor.src.data_loader - INFO - Shape after final date filtering: (9827, 5)
2025-04-18 03:45:53,536 - gru_sac_predictor.src.data_loader - INFO - Successfully loaded and processed data for SOL-USDT. Final shape: (9827, 5)
2025-04-18 03:45:53,537 - root - INFO - Raw data loaded successfully: 9827 rows from 2025-03-01 00:00:00+00:00 to 2025-03-07 23:59:00+00:00
2025-04-18 03:45:53,537 - root - INFO - --- Stage: Engineering Features ---
2025-04-18 03:45:53,537 - gru_sac_predictor.src.feature_engineer - INFO - --- Adding Base Features ---
2025-04-18 03:45:53,538 - gru_sac_predictor.src.feature_engineer - INFO - Adding cyclical hour features (sin/cos)...
2025-04-18 03:45:53,539 - gru_sac_predictor.src.feature_engineer - INFO - Adding imbalance features...
2025-04-18 03:45:53,548 - gru_sac_predictor.src.feature_engineer - INFO - Successfully added imbalance features.
2025-04-18 03:45:53,549 - gru_sac_predictor.src.feature_engineer - INFO - Adding TA features...
2025-04-18 03:45:53,640 - gru_sac_predictor.src.feature_engineer - INFO - Successfully added TA features.
2025-04-18 03:45:53,641 - gru_sac_predictor.src.feature_engineer - INFO - Base feature engineering complete. DataFrame shape: (9827, 20)
2025-04-18 03:45:53,643 - root - INFO - Feature engineering complete. Shape: (9827, 20)
2025-04-18 03:45:53,643 - root - INFO - --- Stage: Defining Labels and Aligning ---
2025-04-18 03:45:53,646 - root - INFO - Dropped 5 rows due to NaN targets (horizon=5).
2025-04-18 03:45:53,647 - root - INFO - Labels (horizon=5) defined and aligned. Features shape: (9822, 20), Targets shape: (9822, 2)
2025-04-18 03:45:53,647 - root - INFO - --- Stage: Splitting Data ---
2025-04-18 03:45:53,647 - __main__ - INFO - Using split ratios: Train=0.60, Val=0.20, Test=0.20
2025-04-18 03:45:53,648 - root - INFO - Data split complete:
2025-04-18 03:45:53,648 - root - INFO - Train: X=(5893, 20), y=(5893, 2) (2025-03-01 00:00:00+00:00 to 2025-03-05 06:01:00+00:00)
2025-04-18 03:45:53,648 - root - INFO - Val: X=(1964, 20), y=(1964, 2) (2025-03-05 06:02:00+00:00 to 2025-03-06 14:55:00+00:00)
2025-04-18 03:45:53,648 - root - INFO - Test: X=(1965, 20), y=(1965, 2) (2025-03-06 14:56:00+00:00 to 2025-03-07 23:53:00+00:00)
2025-04-18 03:45:53,648 - root - INFO - --- Stage: Selecting and Pruning Features ---
2025-04-18 03:45:53,648 - gru_sac_predictor.src.feature_engineer - INFO - --- Selecting Features (LogReg L1 + VIF) ---
2025-04-18 03:45:53,649 - gru_sac_predictor.src.feature_engineer - INFO - Starting selection from 20 raw features.
2025-04-18 03:46:26,826 - gru_sac_predictor.src.feature_engineer - INFO - Logistic hit-rate on validation: 0.526, 95%-CI lower bound: 0.497
2025-04-18 03:46:26,827 - gru_sac_predictor.src.feature_engineer - WARNING - FEATURE SET VALIDATION FAILED: Logistic 95% CI lower bound (0.497) is below 0.52.
2025-04-18 03:46:26,827 - gru_sac_predictor.src.feature_engineer - WARNING - With this small data slice, the features don't beat chance. Consider gathering more data or rethinking features.
2025-04-18 03:46:26,828 - gru_sac_predictor.src.feature_engineer - INFO - Performing Logistic Regression (L1, C=0.1) selection...
2025-04-18 03:46:28,673 - gru_sac_predictor.src.feature_engineer - INFO - Features selected by LogReg L1: ['open', 'high', 'low', 'close', 'volume', 'hour_sin', 'hour_cos', 'chaikin_AD_10', 'svi_10', 'gap_imbalance', 'return_1m', 'return_15m', 'return_60m', 'ATR_14', 'volatility_14d', 'EMA_10', 'EMA_50', 'MACD', 'MACD_signal', 'RSI_14']
2025-04-18 03:46:28,673 - gru_sac_predictor.src.feature_engineer - INFO - Candidate whitelist after LogReg (20 features): ['ATR_14', 'EMA_10', 'EMA_50', 'MACD', 'MACD_signal', 'RSI_14', 'chaikin_AD_10', 'close', 'gap_imbalance', 'high', 'hour_cos', 'hour_sin', 'low', 'open', 'return_15m', 'return_1m', 'return_60m', 'svi_10', 'volatility_14d', 'volume']
2025-04-18 03:46:28,673 - gru_sac_predictor.src.feature_engineer - INFO - Performing VIF filtering (threshold=10.0) on candidate features...
2025-04-18 03:46:28,794 - gru_sac_predictor.src.feature_engineer - INFO - Removing feature 'low' due to high VIF (13101.36 > 10.0)...
2025-04-18 03:46:28,907 - gru_sac_predictor.src.feature_engineer - INFO - Removing feature 'high' due to high VIF (12437.61 > 10.0)...
2025-04-18 03:46:29,008 - gru_sac_predictor.src.feature_engineer - INFO - Removing feature 'EMA_10' due to high VIF (8173.76 > 10.0)...
2025-04-18 03:46:29,099 - gru_sac_predictor.src.feature_engineer - INFO - Removing feature 'open' due to high VIF (2292.25 > 10.0)...
2025-04-18 03:46:29,183 - gru_sac_predictor.src.feature_engineer - INFO - Removing feature 'close' due to high VIF (482.83 > 10.0)...
2025-04-18 03:46:29,256 - gru_sac_predictor.src.feature_engineer - INFO - Removing feature 'MACD' due to high VIF (71.12 > 10.0)...
2025-04-18 03:46:29,321 - gru_sac_predictor.src.feature_engineer - INFO - VIF filtering complete. Max VIF = 3.97 <= 10.0.
2025-04-18 03:46:29,322 - gru_sac_predictor.src.feature_engineer - INFO - Final whitelist after VIF filtering (14 features): ['ATR_14', 'EMA_50', 'MACD_signal', 'RSI_14', 'chaikin_AD_10', 'gap_imbalance', 'hour_cos', 'hour_sin', 'return_15m', 'return_1m', 'return_60m', 'svi_10', 'volatility_14d', 'volume']
2025-04-18 03:46:29,323 - root - INFO - Saved final feature whitelist (14 features) to /home/yasha/develop/gru_sac_predictor/models/20250418_034553/final_whitelist_20250418_034553.json
2025-04-18 03:46:29,324 - root - INFO - Pruning feature sets using final whitelist: ['ATR_14', 'EMA_50', 'MACD_signal', 'RSI_14', 'chaikin_AD_10', 'gap_imbalance', 'hour_cos', 'hour_sin', 'return_15m', 'return_1m', 'return_60m', 'svi_10', 'volatility_14d', 'volume']
2025-04-18 03:46:29,328 - root - INFO - Feature shapes after pruning: Train=(5893, 14), Val=(1964, 14), Test=(1965, 14)
2025-04-18 03:46:29,329 - root - INFO - --- Stage: Scaling Features ---
2025-04-18 03:46:29,330 - root - INFO - Fitting StandardScaler on training data (numeric columns only)...
2025-04-18 03:46:29,337 - root - INFO - Feature scaler saved to /home/yasha/develop/gru_sac_predictor/models/20250418_034553/feature_scaler_20250418_034553.joblib
2025-04-18 03:46:29,357 - root - INFO - Features scaled successfully.
2025-04-18 03:46:29,357 - root - INFO - --- Stage: Baseline Checks (Logistic Regression) ---
2025-04-18 03:46:29,358 - root - INFO - Running Logistic Regression baseline on 14 scaled features.
2025-04-18 03:46:29,685 - root - INFO - Logistic hit-rate: 0.516, 95%-CI lower bound: 0.486
2025-04-18 03:46:29,704 - root - INFO - Original validation set accuracy: 0.494
2025-04-18 03:46:29,716 - root - INFO - Classification Report (Original Validation Set):
precision recall f1-score support
0 0.48 0.62 0.54 950
1 0.51 0.38 0.44 1014
accuracy 0.49 1964
macro avg 0.50 0.50 0.49 1964
weighted avg 0.50 0.49 0.49 1964
2025-04-18 03:46:29,717 - root - ERROR - SYSTEM ERROR: Logistic Regression 95% CI lower bound (0.486) is below 0.52. Feature set may not have significant predictive power with current data size.
2025-04-18 03:46:29,717 - root - INFO - --- Stage: Creating Sequences ---
2025-04-18 03:46:29,717 - root - INFO - Creating sequences with lookback=60
2025-04-18 03:46:29,995 - root - INFO - Sequence shapes created:
2025-04-18 03:46:29,996 - root - INFO - Train: X=(5833, 60, 14), y_ret=(5833,), y_dir=(5833,)
2025-04-18 03:46:29,996 - root - INFO - Val: X=(1904, 60, 14), y_ret=(1904,), y_dir=(1904,)
2025-04-18 03:46:29,996 - root - INFO - Test: X=(1905, 60, 14), y_ret=(1905,), y_dir=(1905,)
2025-04-18 03:46:29,996 - root - INFO - --- Stage: Training or Loading GRU Model ---
2025-04-18 03:46:29,996 - root - INFO - Attempting to train a new GRU model for run 20250418_034553...
2025-04-18 03:46:29,996 - gru_sac_predictor.src.gru_model_handler - INFO - Building GRU model: lookback=60, n_features=14
2025-04-18 03:46:31,215 - gru_sac_predictor.src.gru_model_handler - INFO - Model built successfully.
2025-04-18 03:46:31,222 - gru_sac_predictor.src.gru_model_handler - INFO - Model: "crypto_gru"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Layer (type) ┃ Output Shape ┃ Param # ┃ Connected to ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩
│ input (InputLayer) │ (None, 60, 14) │ 0 │ - │
├──────────────────────────┼───────────────────────┼───────────────┼───────────────────────┤
│ gru (GRU) │ (None, 64) │ 15,360 │ input[0][0] │
├──────────────────────────┼───────────────────────┼───────────────┼───────────────────────┤
│ gauss_params (Dense) │ (None, 2) │ 130 │ gru[0][0] │
├──────────────────────────┼───────────────────────┼───────────────┼───────────────────────┤
│ ret (Lambda) │ (None, 1) │ 0 │ gauss_params[0][0] │
├──────────────────────────┼───────────────────────┼───────────────┼───────────────────────┤
│ dir (Dense) │ (None, 1) │ 65 │ gru[0][0] │
└──────────────────────────┴───────────────────────┴───────────────┴───────────────────────┘
Total params: 15,555 (60.76 KB)
Trainable params: 15,555 (60.76 KB)
Non-trainable params: 0 (0.00 B)
2025-04-18 03:46:31,222 - gru_sac_predictor.src.gru_model_handler - INFO - Starting GRU training: epochs=25, batch=256, patience=5
2025-04-18 03:46:31,222 - gru_sac_predictor.src.gru_model_handler - INFO - Train X shape: (5833, 60, 14)
2025-04-18 03:46:31,222 - gru_sac_predictor.src.gru_model_handler - INFO - Val X shape: (1904, 60, 14)
2025-04-18 03:46:31,222 - gru_sac_predictor.src.gru_model_handler - INFO - Train y keys: ['ret', 'gauss_params', 'dir']
2025-04-18 03:46:31,223 - gru_sac_predictor.src.gru_model_handler - INFO - Val y keys: ['ret', 'gauss_params', 'dir']
2025-04-18 03:46:41,541 - gru_sac_predictor.src.gru_model_handler - INFO - GRU training finished.
2025-04-18 03:46:41,541 - gru_sac_predictor.src.gru_model_handler - INFO - Best validation loss: -0.6636
2025-04-18 03:46:41,581 - gru_sac_predictor.src.gru_model_handler - INFO - GRU model saved successfully to: /home/yasha/develop/gru_sac_predictor/models/20250418_034553/gru_model_20250418_034553.keras
2025-04-18 03:46:41,581 - root - INFO - Newly trained GRU model saved to /home/yasha/develop/gru_sac_predictor/models/20250418_034553/gru_model_20250418_034553.keras
2025-04-18 03:46:41,581 - root - INFO - Using GRU model trained in current run: 20250418_034553
2025-04-18 03:46:41,581 - root - INFO - --- Stage: Calibrating Probabilities ---
2025-04-18 03:46:41,581 - root - INFO - No existing calibration temperature found for run 20250418_034553 at /home/yasha/develop/gru_sac_predictor/models/run_20250418_034553/calibration_temp_20250418_034553.npy.
2025-04-18 03:46:41,581 - root - INFO - Calculating optimal temperature on validation set...
2025-04-18 03:46:41,581 - gru_sac_predictor.src.gru_model_handler - INFO - Generating predictions for 1904 samples...
2025-04-18 03:46:41,849 - gru_sac_predictor.src.gru_model_handler - INFO - Predictions generated successfully.
2025-04-18 03:46:41,849 - gru_sac_predictor.src.calibrator - INFO - Optimizing calibration temperature using 1904 samples...
2025-04-18 03:46:41,853 - gru_sac_predictor.src.calibrator - INFO - Optimal temperature found: T = 10.0000
2025-04-18 03:46:41,854 - root - INFO - Saved newly calculated calibration temperature T=10.0000 to /home/yasha/develop/gru_sac_predictor/models/20250418_034553/calibration_temp_20250418_034553.npy
2025-04-18 03:46:41,854 - root - INFO - Generating validation reliability curve plot...
2025-04-18 03:46:42,070 - gru_sac_predictor.src.calibrator - INFO - Reliability curve saved to /home/yasha/develop/gru_sac_predictor/results/20250418_034553/reliability_curve_val_20250418_034553.png
2025-04-18 03:46:42,070 - root - INFO - --- Stage: Training or Loading SAC Agent ---
2025-04-18 03:46:42,071 - root - INFO - SAC training is enabled. Instantiating SACTrainer...
2025-04-18 03:46:42,071 - gru_sac_predictor.src.sac_trainer - INFO - Initializing SACTrainer with Run ID: sac_train_20250418_034642
2025-04-18 03:46:42,071 - gru_sac_predictor.src.sac_trainer - INFO - SAC Models Dir: /home/yasha/develop/gru_sac_predictor/models/sac_train_20250418_034642
2025-04-18 03:46:42,071 - gru_sac_predictor.src.sac_trainer - INFO - SAC Logs Dir: /home/yasha/develop/gru_sac_predictor/logs/20250418_034553/sac_train_20250418_034642
2025-04-18 03:46:42,071 - gru_sac_predictor.src.sac_trainer - INFO - SAC Results Dir:/home/yasha/develop/gru_sac_predictor/results/20250418_034553/sac_train_20250418_034642
2025-04-18 03:46:42,071 - gru_sac_predictor.src.sac_trainer - INFO - SAC TB Dir: /home/yasha/develop/gru_sac_predictor/logs/20250418_034553/sac_train_20250418_034642/tensorboard
2025-04-18 03:46:42,071 - gru_sac_predictor.src.sac_trainer - INFO - === Starting SAC Training Process (SAC Run ID: sac_train_20250418_034642) ===
2025-04-18 03:46:42,071 - gru_sac_predictor.src.sac_trainer - INFO - Using artifacts from GRU Run ID: 20250418_034553
2025-04-18 03:46:42,072 - gru_sac_predictor.src.sac_trainer - INFO - --- Loading Dependencies from GRU Run ID: 20250418_034553 ---
2025-04-18 03:46:42,072 - gru_sac_predictor.src.sac_trainer - INFO - Loaded whitelist (14 features) from /home/yasha/develop/gru_sac_predictor/models/20250418_034553/final_whitelist_20250418_034553.json
2025-04-18 03:46:42,073 - gru_sac_predictor.src.sac_trainer - INFO - Loaded scaler from /home/yasha/develop/gru_sac_predictor/models/20250418_034553/feature_scaler_20250418_034553.joblib
2025-04-18 03:46:42,073 - gru_sac_predictor.src.gru_model_handler - INFO - GRUModelHandler initialized for run temp_load in temp_load
2025-04-18 03:46:42,073 - gru_sac_predictor.src.gru_model_handler - INFO - Loading GRU model from: /home/yasha/develop/gru_sac_predictor/models/20250418_034553/gru_model_20250418_034553.keras
2025-04-18 03:46:42,091 - gru_sac_predictor.src.gru_model_handler - ERROR - Failed to load GRU model from /home/yasha/develop/gru_sac_predictor/models/20250418_034553/gru_model_20250418_034553.keras: The `{arg_name}` of this `Lambda` layer is a Python lambda. Deserializing it is unsafe. If you trust the source of the config artifact, you can override this error by passing `safe_mode=False` to `from_config()`, or calling `keras.config.enable_unsafe_deserialization().
Traceback (most recent call last):
File "/home/yasha/develop/gru_sac_predictor/gru_sac_predictor/src/gru_model_handler.py", line 176, in load
self.model = tf.keras.models.load_model(model_path, custom_objects=custom_objects)
File "/home/yasha/develop/gru_sac_predictor/.venv/lib/python3.10/site-packages/keras/src/saving/saving_api.py", line 189, in load_model
return saving_lib.load_model(
File "/home/yasha/develop/gru_sac_predictor/.venv/lib/python3.10/site-packages/keras/src/saving/saving_lib.py", line 367, in load_model
return _load_model_from_fileobj(
File "/home/yasha/develop/gru_sac_predictor/.venv/lib/python3.10/site-packages/keras/src/saving/saving_lib.py", line 444, in _load_model_from_fileobj
model = _model_from_config(
File "/home/yasha/develop/gru_sac_predictor/.venv/lib/python3.10/site-packages/keras/src/saving/saving_lib.py", line 433, in _model_from_config
model = deserialize_keras_object(
File "/home/yasha/develop/gru_sac_predictor/.venv/lib/python3.10/site-packages/keras/src/saving/serialization_lib.py", line 718, in deserialize_keras_object
instance = cls.from_config(inner_config)
File "/home/yasha/develop/gru_sac_predictor/.venv/lib/python3.10/site-packages/keras/src/models/model.py", line 587, in from_config
return functional_from_config(
File "/home/yasha/develop/gru_sac_predictor/.venv/lib/python3.10/site-packages/keras/src/models/functional.py", line 557, in functional_from_config
process_layer(layer_data)
File "/home/yasha/develop/gru_sac_predictor/.venv/lib/python3.10/site-packages/keras/src/models/functional.py", line 524, in process_layer
layer = serialization_lib.deserialize_keras_object(
File "/home/yasha/develop/gru_sac_predictor/.venv/lib/python3.10/site-packages/keras/src/saving/serialization_lib.py", line 718, in deserialize_keras_object
instance = cls.from_config(inner_config)
File "/home/yasha/develop/gru_sac_predictor/.venv/lib/python3.10/site-packages/keras/src/layers/core/lambda_layer.py", line 190, in from_config
cls._raise_for_lambda_deserialization("function", safe_mode)
File "/home/yasha/develop/gru_sac_predictor/.venv/lib/python3.10/site-packages/keras/src/layers/core/lambda_layer.py", line 172, in _raise_for_lambda_deserialization
raise ValueError(
ValueError: The `{arg_name}` of this `Lambda` layer is a Python lambda. Deserializing it is unsafe. If you trust the source of the config artifact, you can override this error by passing `safe_mode=False` to `from_config()`, or calling `keras.config.enable_unsafe_deserialization().
2025-04-18 03:46:42,092 - gru_sac_predictor.src.sac_trainer - ERROR - Failed to load GRU model from /home/yasha/develop/gru_sac_predictor/models/20250418_034553/gru_model_20250418_034553.keras
2025-04-18 03:46:42,092 - gru_sac_predictor.src.sac_trainer - ERROR - Failed to load GRU dependencies. Aborting SAC training.
2025-04-18 03:46:42,092 - __main__ - ERROR - SAC training failed. Proceeding without a newly trained agent.
2025-04-18 03:46:42,092 - __main__ - ERROR - SAC training failed and no load path specified in config. Cannot proceed with backtesting.
2025-04-18 03:46:42,093 - root - INFO - --- Stage: Running Backtest ---
2025-04-18 03:46:42,094 - gru_sac_predictor.src.backtester - INFO - --- Starting Backtest Simulation ---
2025-04-18 03:46:42,174 - gru_sac_predictor.src.sac_agent - INFO - Using ExponentialDecay LR: init=3e-4, steps=100000, rate=0.96
2025-04-18 03:46:42,451 - gru_sac_predictor.src.sac_agent - INFO - Replay buffer initialized/reset with capacity 100000.
2025-04-18 03:46:42,451 - gru_sac_predictor.src.sac_agent - INFO - Enhanced SAC Agent Initialized (V7.3).
2025-04-18 03:46:42,451 - gru_sac_predictor.src.sac_agent - INFO - State Dim: 5, Action Dim: 1
2025-04-18 03:46:42,452 - gru_sac_predictor.src.sac_agent - INFO - Hyperparams: gamma=0.97, tau=0.02, alpha=auto, target_entropy=-1.0
2025-04-18 03:46:42,452 - gru_sac_predictor.src.sac_agent - INFO - LR Schedule: Exponential 3e-4 -> ? (decay_rate=0.96)
2025-04-18 03:46:42,452 - gru_sac_predictor.src.sac_agent - INFO - Buffer: 100000, Min Size: 10000, Batch Size: Default 256 (in train)
2025-04-18 03:46:42,452 - gru_sac_predictor.src.sac_agent - INFO - OU Noise: std=0.2, theta=0.15, dt=0.01
2025-04-18 03:46:42,452 - gru_sac_predictor.src.sac_agent - INFO - PER Note: Standard buffer used (PER=False)
2025-04-18 03:46:42,452 - gru_sac_predictor.src.backtester - WARNING - SAC agent load path not found or not specified (None). Proceeding with untrained agent.
2025-04-18 03:46:42,452 - gru_sac_predictor.src.backtester - INFO - Generating GRU predictions for 1905 test sequences...
2025-04-18 03:46:42,452 - gru_sac_predictor.src.gru_model_handler - INFO - Generating predictions for 1905 samples...
2025-04-18 03:46:42,548 - gru_sac_predictor.src.gru_model_handler - INFO - Predictions generated successfully.
2025-04-18 03:46:42,548 - gru_sac_predictor.src.backtester - INFO - Calibrating test predictions using T=10.0000
2025-04-18 03:46:42,548 - gru_sac_predictor.src.backtester - INFO - Starting backtest simulation loop: 1905 steps...
2025-04-18 03:47:00,729 - gru_sac_predictor.src.backtester - INFO - Backtest simulation loop finished.
2025-04-18 03:47:00,729 - gru_sac_predictor.src.backtester - INFO - Final Equity: 10080.59
2025-04-18 03:47:00,735 - gru_sac_predictor.src.backtester - INFO - Calculating performance metrics...
2025-04-18 03:47:00,748 - gru_sac_predictor.src.backtester - INFO - --- Backtest Simulation Finished ---
2025-04-18 03:47:00,749 - __main__ - INFO - Backtest completed successfully.
2025-04-18 03:47:00,749 - root - INFO - --- Stage: Saving Results ---
2025-04-18 03:47:00,749 - gru_sac_predictor.src.backtester - INFO - --- Saving Backtest Results ---
2025-04-18 03:47:00,749 - gru_sac_predictor.src.backtester - INFO - Performance metrics saved to /home/yasha/develop/gru_sac_predictor/results/20250418_034553/performance_metrics_20250418_034553.txt
2025-04-18 03:47:00,795 - gru_sac_predictor.src.backtester - INFO - Detailed backtest results saved to /home/yasha/develop/gru_sac_predictor/results/20250418_034553/backtest_results_20250418_034553.csv
2025-04-18 03:47:00,795 - gru_sac_predictor.src.backtester - INFO - Generating backtest plots...
2025-04-18 03:47:01,738 - gru_sac_predictor.src.backtester - INFO - Summary plot saved to /home/yasha/develop/gru_sac_predictor/results/20250418_034553/backtest_summary_20250418_034553.png
2025-04-18 03:47:01,929 - gru_sac_predictor.src.backtester - INFO - Confusion matrix plot saved to /home/yasha/develop/gru_sac_predictor/results/20250418_034553/confusion_matrix_20250418_034553.png
2025-04-18 03:47:01,929 - gru_sac_predictor.src.backtester - INFO - --- Finished Saving Backtest Results ---
2025-04-18 03:47:01,929 - root - INFO - === Pipeline Execution Finished Successfully ===