produvia / kryptos

Kryptos AI is a virtual investment assistant that manages your cryptocurrency portfolio
http://twitter.com/kryptos_ai
MIT License
48 stars 8 forks source link

Catalyst: Simulator is buying orders at the price of the next day instead of the same day #98

Open bukosabino opened 5 years ago

bukosabino commented 5 years ago

Current state: Simulator is buying orders at the price of the next day instead of the same day

More info:

Solution: To work with "minute" interval.

slavakurilyak commented 5 years ago

@bukosabino Thanks for pointing this out!

@treethought Is our infrastructure on Google Cloud Platform (GCP) scalable enough to handle minute trading?

bukosabino commented 5 years ago

We can work with "minute" interval to execute the order in the next minute. But, in a logic way, we can use more big intervals such as 1440 minutes (24 hours) or 720 minutes (12 hours).

slavakurilyak commented 5 years ago

Good point. We can also perform trades every 1-min, 2-min, 5-min, 10-min, 30-min, 1-hour, 2-hour, 6-hour, and 12-hour, 24-hour, or as often as we need to. I'm assuming that more frequent trading will result in higher strategy performance. There's a reason why High Frequency Trading (HFT) is popular amongst hedge funds.

For example: Freqtrade, the cryptocurrency HFT library, uses 1-min and 5-min tickers for backtesting; and 1-min, 5-min, 30-min, 1-hour, 1-day tickers for hyperopt commands. The latest work for freqtrade is found on the develop branch.

treethought commented 5 years ago

@slavakurilyak the project on GCP is able to perform minute trading and currently does for paper mode. I'm working on improving the ability to handle multiple strategies running at once. And as you stated, we could also lower the trade frequency.

bukosabino commented 5 years ago

I have worked on a minute frequency and I have applied this for Kryptos platform (not only ml indicators).

Now, we use in the config.json some fixed values:

"DATA_FREQ": "minute", 
"HISTORY_FREQ": "1T",

And we should use "MINUTE_FREQ" and "MINUTE_TO_OPERATE" to define the frequency. An example: if MINUTE_FREQ == 360 and MINUTE_TO_OPERATE == 2. We process data in the minute 2 of every 360 minutes: 2018-02-14 00:02:00+00:00 2018-02-14 06:02:00+00:00 2018-02-14 12:02:00+00:00 2018-02-14 18:02:00+00:00

PS: You should use catalyst ingest-exchange -x poloniex -f minute -i btc_usdt Because poloniex has a lot of historical data of minute resolution.

PS2: We need to check some risk indicators and metrics that Catalyst use, such as, sharpe_ratio, because we use 360 minutes frequency and I think they calculate these metrics to 1-minute frequency.

PS3: At the moment, I check open positions to take profit or to stop loss every minute and for the complete platform (not only ml indicators).