Compare commits

..

2 Commits

Author SHA1 Message Date
Oleg Sheynin
28386cdf12 fix trading pair, loading scripts 2025-07-20 18:11:45 +00:00
Oleg Sheynin
fb3dc68a1d minor: rename 2025-07-19 01:49:46 +00:00
4 changed files with 22 additions and 12 deletions

View File

@ -11,6 +11,7 @@ The enhanced `pt_backtest.py` script now supports multi-day and multi-instrument
- Support for wildcard patterns in configuration files - Support for wildcard patterns in configuration files
- CLI override for data file specification - CLI override for data file specification
### 2. Dynamic Instrument Selection ### 2. Dynamic Instrument Selection
- Auto-detection of instruments from database - Auto-detection of instruments from database
- CLI override for instrument specification - CLI override for instrument specification

View File

@ -376,16 +376,16 @@ class TradingPair:
open_trades = self.user_data_["open_trades"] open_trades = self.user_data_["open_trades"]
if len(open_trades) == 0: if len(open_trades) == 0:
return 0.0 return 0.0
def _stock_return(stock: str) -> float: def _single_instrument_return(symbol: str) -> float:
stock_open_trades = open_trades[open_trades["symbol"] == stock] instrument_open_trades = open_trades[open_trades["symbol"] == symbol]
stock_sign = -1 if stock_open_trades["action"].iloc[0] == "SELL" else 1 instrument_sign = -1 if instrument_open_trades["action"].iloc[0] == "SELL" else 1
stock_price = predicted_row[f"{self.price_column_}_{stock}"] instrument_price = predicted_row[f"{self.price_column_}_{symbol}"]
stock_return = stock_sign * (stock_price - stock_open_trades["price"].iloc[0]) / stock_open_trades["price"].iloc[0] instrument_return = instrument_sign * (instrument_price - instrument_open_trades["price"].iloc[0]) / instrument_open_trades["price"].iloc[0]
return float(stock_return) return float(instrument_return) * 100.0
stock_a_return = _stock_return(self.symbol_a_) instrument_a_return = _single_instrument_return(self.symbol_a_)
stock_b_return = _stock_return(self.symbol_b_) instrument_b_return = _single_instrument_return(self.symbol_b_)
return (stock_a_return + stock_b_return) * 100.0 return (instrument_a_return + instrument_b_return)
return 0.0 return 0.0
def __repr__(self) -> str: def __repr__(self) -> str:

View File

@ -16,7 +16,12 @@ cd $(realpath $(dirname $0))/..
mkdir -p ./data/crypto mkdir -p ./data/crypto
pushd ./data/crypto pushd ./data/crypto
Cmd="rsync -ahvv cvtt@hs01.cvtt.vpn:/works/cvtt/md_archive/crypto/sim/*.gz ./" Files=$1
if [ -z "$Files" ]; then
Files="*.gz"
fi
Cmd="rsync -ahvv cvtt@hs01.cvtt.vpn:/works/cvtt/md_archive/crypto/sim/${Files} ./"
echo $Cmd echo $Cmd
eval $Cmd eval $Cmd
# ------------------------------------- # -------------------------------------

View File

@ -26,8 +26,12 @@ for srcfname in $(ls *.db.gz); do
tgtfile=${dt}.mktdata.ohlcv.db tgtfile=${dt}.mktdata.ohlcv.db
echo "${srcfname} -> ${tgtfile}" echo "${srcfname} -> ${tgtfile}"
gunzip -c $srcfname > temp.db Cmd="gunzip -c $srcfname > temp.db && rm $srcfname"
rm -f ${tgtfile} && sqlite3 temp.db ".dump md_1min_bars" | sqlite3 ${tgtfile} && rm ${srcfname} echo ${Cmd}
eval ${Cmd}
Cmd="rm -f ${tgtfile} && sqlite3 temp.db '.dump md_1min_bars' | sqlite3 ${tgtfile}"
echo ${Cmd}
eval ${Cmd}
done done
rm temp.db rm temp.db
popd popd