bmino / binance-triangle-arbitrage

Detect in-market cryptocurrency arbitrage
MIT License
1.07k stars 338 forks source link

The bot has generated loss in the first trade. #160

Closed sdn9002 closed 3 years ago

sdn9002 commented 3 years ago

Last night the bot has executed a trade that generated a loss in BTC. Why did this happen and why the bot has not sold all of the ETH (second symbol in the arbitrage)? Below is the configuration, execution log and screenshots from Binance.

BTC-QTUM-ETH.txt

[2.05.2021 г., 3:28:18] [32mINFO [39m: [36mAttempting to execute BTC-QTUM-ETH with an age of 169 ms and expected profit of 0.1162% [39m [2.05.2021 г., 3:28:18] [32mINFO [39m: [36mBuying 10.86 QTUMBTC @ market price [39m [2.05.2021 г., 3:28:19] [32mINFO [39m: [36mSuccessfully bought 10.86000000 QTUMBTC @ a quote of 0.00299953 in 397 ms [39m [2.05.2021 г., 3:28:19] [32mINFO [39m: [36mSelling 10.86 QTUMETH @ market price [39m [2.05.2021 г., 3:28:19] [32mINFO [39m: [36mSuccessfully sold 10.86000000 QTUMETH @ a quote of 0.05873375 in 353 ms [39m [2.05.2021 г., 3:28:19] [32mINFO [39m: [36mSelling 0.058 ETHBTC @ market price [39m [2.05.2021 г., 3:28:19] [32mINFO [39m: [36mSuccessfully sold 0.05800000 ETHBTC @ a quote of 0.00295875 in 362 ms [39m [2.05.2021 г., 3:28:19] [32mINFO [39m: [36mExecuted BTC-QTUM-ETH position in 1128 ms [39m [2.05.2021 г., 3:28:19] [34mDEBUG [39m: [36mQTUMBTC Stats: [39m [2.05.2021 г., 3:28:19] [34mDEBUG [39m: [36mExpected Conversion: 0.00299953 BTC into 10.86000000 QTUM @ 0.00027620 [39m [2.05.2021 г., 3:28:19] [34mDEBUG [39m: [36mObserved Conversion: 0.00299953 BTC into 10.86000000 QTUM @ 0.00027620 [39m [2.05.2021 г., 3:28:19] [34mDEBUG [39m: [36mPrice Change: -0.00006668% [39m [2.05.2021 г., 3:28:19] [34mDEBUG [39m: [2.05.2021 г., 3:28:19] [34mDEBUG [39m: [36mQTUMETH Stats: [39m [2.05.2021 г., 3:28:19] [34mDEBUG [39m: [36mExpected Conversion: 10.86000000 QTUM into 0.05902436 ETH @ 0.00543502 [39m [2.05.2021 г., 3:28:19] [34mDEBUG [39m: [36mObserved Conversion: 10.86000000 QTUM into 0.05873375 ETH @ 0.00540826 [39m [2.05.2021 г., 3:28:19] [34mDEBUG [39m: [36mPrice Change: -0.49235604% [39m [2.05.2021 г., 3:28:19] [34mDEBUG [39m: [2.05.2021 г., 3:28:19] [34mDEBUG [39m: [36mETHBTC Stats: [39m [2.05.2021 г., 3:28:19] [34mDEBUG [39m: [36mExpected Conversion: 0.05900000 ETH into 0.00300977 BTC @ 0.05101300 [39m [2.05.2021 г., 3:28:19] [34mDEBUG [39m: [36mObserved Conversion: 0.05800000 ETH into 0.00295875 BTC @ 0.05101293 [39m [2.05.2021 г., 3:28:19] [34mDEBUG [39m: [36mPrice Change: -0.00013519% [39m [2.05.2021 г., 3:28:19] [32mINFO [39m: [2.05.2021 г., 3:28:19] [32mINFO [39m: [36mBTC delta: -0.00004078 (-1.3595%) [39m [2.05.2021 г., 3:28:19] [32mINFO [39m: [36mQTUM delta: 0.00000000 ( 0.0000%) [39m [2.05.2021 г., 3:28:19] [32mINFO [39m: [36mETH delta: 0.00073375 ( 1.2651%) [39m [2.05.2021 г., 3:28:19] [32mINFO [39m: [36mBNB fees: -0.00062087 [39m

config.txt

{

"KEYS": {
    "API": "",
    "SECRET": ""
},

"INVESTMENT": {
    "EUR": {
        "MIN": 100,
        "MAX": 150,
        "STEP": 50
    },
    "BTC": {
        "MIN": 0.002,
        "MAX": 0.003,
        "STEP": 0.001
    },
    "ETH": {
        "MIN": 0.04,
        "MAX": 0.06,
        "STEP": 0.02
    }
},

"SCANNING": {
    "DEPTH": 20,
    "WHITELIST": [................]
},

"EXECUTION": {
    "ENABLED": true,
    "CAP": 1,
    "STRATEGY": "linear",
    "TEMPLATE": ["BUY", "SELL", "SELL"],
    "FEE": 0.075,
    "THRESHOLD": {
        "PROFIT": 0.00,
        "AGE": 300
    }
},

"HUD": {
    "ENABLED": false,
    "ROWS": 10,
    "REFRESH_RATE": 500
},

"LOG": {
    "LEVEL": "debug",
    "PRETTY_PRINT": true,
    "STATUS_UPDATE_INTERVAL": 2
},

"WEBSOCKET": {
    "BUNDLE_SIZE": 1,
    "INITIALIZATION_INTERVAL": 200
},

"BINANCE_OPTIONS": {}

}

20210502_110425

20210502_110445

Screenshot_20210502-110108_Binance

Screenshot_20210502-110127_Binance

Screenshot_20210502-121110_Binance

bmino commented 3 years ago

For starters, your age threshold of 300 is too high imo for any chance of a successful trade. Funny enough, the first leg was executed exactly as calculated still.

The reason you have some ETH is due to how dust works on Binance. Traded values can only be specified to a certain degree of precision