Compare commits
2 Commits
c776c95d69
...
28386cdf12
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
28386cdf12 | ||
|
|
fb3dc68a1d |
@ -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
|
||||||
|
|||||||
@ -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:
|
||||||
|
|||||||
@ -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
|
||||||
# -------------------------------------
|
# -------------------------------------
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user