Skip to content
This repository has been archived by the owner on Feb 15, 2022. It is now read-only.

Trading fees eating profits #108

Closed
alternativesurfer opened this issue Jan 25, 2017 · 10 comments
Closed

Trading fees eating profits #108

alternativesurfer opened this issue Jan 25, 2017 · 10 comments

Comments

@alternativesurfer
Copy link

alternativesurfer commented Jan 25, 2017

Hi, so this may be a fringe case but I've been letting zenbot day trade and have noticed that while it does make profitable trades, if the difference between buy/sell price isn't great enough it eats heavily into profits (I trade on GDAX).

I have no idea how one would do this, but is there a way this bot could be written to not place market orders, and rather place a buy/sell limit order for +-$.01 off the current market price, hopefully making the trade a "Maker" with zero fees rather than a "Taker" with 0.25% fees?

RSI limits could be brought slightly closer together, hopefully ensuring Price movement would continue up or down far enough to fill the Limit order that was +- 1 cent from the current Market price when the RSI limit is met.

IMO a bot like this can/should be used for day trading, as long as trading fees can be minimized/eliminated.
It doesn't matter whether I make 1/2 percent profit a trade, so long as I am making profit. Any profit spread out across days/weeks/years will add up to large sums.

I have been manually doing this, but as a human cannot react as quickly as a bot would be able to, nor as often / overnight / etc.

@robsteady
Copy link

I may not be understanding it correctly, but it does look like a taker fee is accounted for in the default_logic file at line 66. It does show info for a .25% taker fee and I'm assuming that is worked in to the math, but to be perfectly honest about it I know next to nothing about js so I wouldn't be able to tell how that's factored in to a trade's performance metric.

@alternativesurfer
Copy link
Author

alternativesurfer commented Jan 26, 2017

I think that .25% taker fee is only for calculating ROI, and not for determining when/how to trade.

Yeah, in Default_logic it just uses that variable when calculating the new End Balance after a trade.
I don't know anything about JS (or didn't before diving into this), but you can follow the codes logic and make sense of things.

Ex. rs.fee_pct is used here:
// fee calc
rs.fee = n(size).multiply(rs.market_price).multiply(rs.fee_pct).value()
new_balance[rs.currency] = n(new_balance[rs.currency]).subtract(rs.fee).value()

I assume n(size)=quantity of BTC or Fiat traded
Market Price
Fee %

Multiply those all together to get the total Fee.
Then Fee is used to calculate New Balance

@robsteady
Copy link

Ah, okay.

I've actually got my backfill completed and I've been running a few sims and unfortunately, everything has shown a loss of money so far. I haven't gotten in to the fine details yet, but I'm interested in checking it out some more.

@alternativesurfer
Copy link
Author

Pay attention to how much you're losing to fees (I had to manually transcribe this into a spreadsheet to track, can't figure out how to export...)

If it is the fees causing you to lose money, then that brings us back to this issue.
If it is losing just by trading then we have more to look into.
Youre using default logic? Ill run my own sim once I complete the backfill to confirm

@robsteady
Copy link

I tried the default logic with a 1 minute tick starting with $100 and I believe it lost less than a dollar, but I'll have to run it again to make sure I'm thinking of the right run.

@robsteady
Copy link

Yes, running default logic starting with $100 and a 1 minute tick lost about 60 cents.

@bhmortim
Copy link

bhmortim commented Mar 2, 2017

anything ever come of this? I am open to doing a little work to getting this to use limits rather than market trades in gdax. It might even be a way to cost average the risk of big market swings. I like the idea of being able to take some advantage of subtle volatility without loosing it all to fees. Seems like we can add a buy and sell 'strategy' to the script and then set some options that would let it cast and monitor a set of limit orders, then cancel and roll back or recast if the market keeps moving.

@bhmortim
Copy link

bhmortim commented Mar 2, 2017

Sim would break on anything other than market strategy though.

@carlos8f
Copy link
Contributor

, but is there a way this bot could be written to not place market orders

Yes, Zenbot 4 no longer uses market orders! No more fees on GDAX.

@bdclark14
Copy link

@carlos8f Hey, I’m curious to know how Zenbot 4 no longer using market orders affects this strategy.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants