michaelgrosner / tribeca

A high frequency, market making cryptocurrency trading platform in node.js
Other
4.01k stars 948 forks source link

Trade safety computation #247

Open victor-ono opened 5 years ago

victor-ono commented 5 years ago

Can someone please explain what this piece of code from safety.ts does? I understand that its purpose is to balance buys and sells. However I don't understand the algorithm. I tested it with the example trades from trds quoting parameter description in the wiki and got different results - Buy TS: 1.75, Sell TS: 0.75 instead of Buy TS: 2.75, Sell TS: 0:

https://jsfiddle.net/victoro/bo9k7gqz/

        // don't count good trades against safety
        while (_.size(this._buys) > 0 && _.size(this._sells) > 0) {
            var sell = _.last(this._sells);
            var buy = _.last(this._buys);
            if (sell.price >= buy.price) {

                var sellQty = sell.quantity;
                var buyQty = buy.quantity;

                buy.quantity -= sellQty;
                sell.quantity -= buyQty;

                if (buy.quantity < 1e-4) this._buys.pop();
                if (sell.quantity < 1e-4) this._sells.pop();
            }
            else {
                break;
            }
        }
victor-ono commented 5 years ago

I think I figured it out - when this algorithm runs on every trade, i.e. every time a trade happens, and not on a collection of trades it works as expected. However, there's still an error in the wiki in trds description. In the last two rows BuyTS values should be 1.25 and 1.75, not 1.75 and 2.75:

image