Backtester panics when there is missing data
MeanSquaredError opened this issue · comments
New Issue
Context
Please provide any relevant information about your setup. This is important in case the issue is not reproducible except for under certain conditions.
-
Operating System: Linux
-
GoCryptoTrader version (
gocryptotrader -version
): latest git snapshot built from source
Expected Behavior
Backtester should run correctly and generate a results file
Current Behavior
Backtester panics with the following error message
panic: decimal division by 0
goroutine 1 [running]:
github.com/shopspring/decimal.Decimal.QuoRem({0xc00185ae20, 0x0}, {0xc0000339e0, 0x0}, 0x10)
/root/go/pkg/mod/github.com/shopspring/decimal@v1.3.1/decimal.go:565 +0x2c5
github.com/shopspring/decimal.Decimal.DivRound({0xc00185ae20, 0x200800}, {0xc0000339e0, 0x0}, 0x10)
/root/go/pkg/mod/github.com/shopspring/decimal@v1.3.1/decimal.go:607 +0x56
github.com/shopspring/decimal.Decimal.Div(...)
/root/go/pkg/mod/github.com/shopspring/decimal@v1.3.1/decimal.go:552
github.com/thrasher-corp/gocryptotrader/backtester/eventhandlers/statistics.(*CurrencyPairStatistic).CalculateResults(0xc000358b00, {0xc000032a00, 0x1f})
/usr/local/projects/github/gocryptotrader/backtester/eventhandlers/statistics/currencystatistics.go:67 +0xab3
github.com/thrasher-corp/gocryptotrader/backtester/eventhandlers/statistics.(*Statistic).CalculateAllResults(0xc00026a000)
/usr/local/projects/github/gocryptotrader/backtester/eventhandlers/statistics/statistics.go:171 +0x505
main.main()
/usr/local/projects/github/gocryptotrader/backtester/main.go:109 +0xb14
exit status 2
Failure Information (for bugs)
Please help by providing information about the failure. If it is not a bug, please remove the rest of this template.
Steps to Reproduce
Please provide detailed steps for reproducing the issue.
- run backtester with the attached configuration file:
go run . -configpath=/root/.gocryptotrader/strategy/config/rsi-api-candles-latest.strat
(in my case it is placed in /root/.gocryptotrader/strategy/config/rsi-api-candles-latest.strat)
Failure Logs
No log files are generated, but I have attached the strategy configuration which causes the crash.
rsi-api-candles-latest.strat.txt
It seems that the crash is caused by division by zero in
backtester/eventhandlers/statistics/currencystatistics.go:66
benchmarkRates[i] = c.Events[i].DataEvent.ClosePrice().Sub(
c.Events[i-1].DataEvent.ClosePrice()).Div(
c.Events[i-1].DataEvent.ClosePrice())
If c.Events[i-1]
is missing data then c.Events[i-1].DataEvent.ClosePrice()
is zero and division by zero occurs.
Thank you very much for providing your strat config for me to verify! I can confirm the panic and I'll look into a solution
Thanks for reporting this @MeanSquaredError