65 lines
1.6 KiB
Bash
Executable File
65 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Required CSVs (must exist in ../data)
|
|
BTC_CSV="../data/btcusd_1-min_data.csv"
|
|
ETH_CSV="../data/ethusd_1min_ohlc.csv"
|
|
|
|
# Grid parameters
|
|
RULE_SETS="30min,45min,1H"
|
|
HORIZONS="60 120"
|
|
N_STATES_LIST="3 4"
|
|
|
|
CV_SPLITS=8
|
|
CV_TEST_BARS=500
|
|
CV_GAP_BARS=24
|
|
CV_SEED=7
|
|
CV_SINCE=""
|
|
FOLDER_SAVE_PATH=""
|
|
|
|
PYRUN="uv run python"
|
|
|
|
STAMP="$(date +%Y%m%d_%H%M%S)"
|
|
mkdir -p logs
|
|
LOG_FILE="logs/grid_${STAMP}.log"
|
|
|
|
{
|
|
echo "# GRID START $(date -Is)"
|
|
echo "BTC_CSV=$BTC_CSV"
|
|
echo "ETH_CSV=$ETH_CSV"
|
|
echo
|
|
} | tee -a "$LOG_FILE"
|
|
|
|
run_job() {
|
|
local rules="$1" horizon="$2" n_states="$3"
|
|
|
|
cmd=( $PYRUN main.py
|
|
--btc "$BTC_CSV"
|
|
--eth "$ETH_CSV"
|
|
--rules "$rules"
|
|
--states "$n_states"
|
|
--horizon "$horizon"
|
|
--cv_splits "$CV_SPLITS"
|
|
--cv_test_bars "$CV_TEST_BARS"
|
|
--cv_gap_bars "$CV_GAP_BARS"
|
|
--cv_seed "$CV_SEED"
|
|
)
|
|
[[ -n "$CV_SINCE" ]] && cmd+=( --cv_since "$CV_SINCE" )
|
|
[[ -n "$FOLDER_SAVE_PATH" ]] && cmd+=( --folder_save_path "$FOLDER_SAVE_PATH" )
|
|
|
|
echo "----------------------------------------------------------------" | tee -a "$LOG_FILE"
|
|
echo "# $(date -Is) rules=${rules} horizon=${horizon} states=${n_states}" | tee -a "$LOG_FILE"
|
|
"${cmd[@]}" 2>&1 | tee -a "$LOG_FILE"
|
|
}
|
|
|
|
IFS=$'\n' read -r -d '' -a RULE_GROUPS < <(printf '%s\0' "$RULE_SETS")
|
|
for rules in "${RULE_GROUPS[@]}"; do
|
|
for horizon in $HORIZONS; do
|
|
for n_states in $N_STATES_LIST; do
|
|
run_job "$rules" "$horizon" "$n_states"
|
|
done
|
|
done
|
|
done
|
|
|
|
echo "# GRID END $(date -Is)" | tee -a "$LOG_FILE"
|