56 lines
1.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# run_grid.sh — loop over timeframes and 26 bars-ahead horizons
set -euo pipefail
# Paths (edit if different)
PROJ_DIR="${PROJ_DIR:-$HOME/Documents/Work/TCP/BTC_ETH_regime_predictor}"
DATA_DIR="${DATA_DIR:-$PROJ_DIR/../data}"
PY="${PY:-$PROJ_DIR/.venv/bin/python}"
BTC_CSV="${BTC_CSV:-$DATA_DIR/btcusd_1-min_data.csv}"
ETH_CSV="${ETH_CSV:-$DATA_DIR/ethusd_1min_ohlc.csv}"
SPLIT_DATE="${SPLIT_DATE:-2023-01-01}"
N_STATES="${N_STATES:-3}"
# Timeframes to test: 2060 min inclusive
readarray -t RULES < <(seq 20 60 | awk '{printf "%dmin\n",$1}')
# Convert a pandas-like offset to minutes: supports Nmin, NH, ND
to_minutes() {
local r="$1"
if [[ "$r" =~ ^([0-9]+)min$ ]]; then
echo "${BASH_REMATCH[1]}"
elif [[ "$r" =~ ^([0-9]+)H$ ]]; then
echo $(( ${BASH_REMATCH[1]} * 60 ))
elif [[ "$r" =~ ^([0-9]+)D$ ]]; then
echo $(( ${BASH_REMATCH[1]} * 1440 ))
else
echo "Unsupported rule: $r" >&2
exit 2
fi
}
# Logs
OUT_DIR="${OUT_DIR:-$PROJ_DIR/run_logs}"
mkdir -p "$OUT_DIR"
TS="$(date +"%Y%m%d_%H%M%S")"
LOG="$OUT_DIR/grid_${TS}.log"
# Run grid
for BARS in 2 3 4 5 6; do
for RULE in "${RULES[@]}"; do
BAR_MIN=$(to_minutes "$RULE")
HORIZON=$(( BARS * BAR_MIN ))
echo "Running rule='$RULE' bars_ahead=$BARS horizon_min=$HORIZON" | tee -a "$LOG"
"$PY" "$PROJ_DIR/main.py" \
--btc "$BTC_CSV" \
--eth "$ETH_CSV" \
--rules "$RULE" \
--states "$N_STATES" \
--split "$SPLIT_DATE" \
--horizon "$HORIZON" | tee -a "$LOG"
echo | tee -a "$LOG"
done
done