askmike / gekko

A bitcoin trading bot written in node - https://gekko.wizb.it/
MIT License
10.07k stars 3.94k forks source link

Integrating Machine Learning AI instead Technical Analysis to Gekko #789

Closed dramida closed 5 years ago

dramida commented 7 years ago

Predicting stock prices using Technical Analysis is a 16th century Japanese tech. Let's improve it by creating an Trading Advisor based on Machine Learning who can predict trends. Using sentiment analysis from Tweeter help also as a second step, as shown in github projects below. Short technical videos explaining how implement AI in crypto stock prediction:

https://youtu.be/G5Mx7yYdEhE https://youtu.be/SSu00IRRraY https://youtu.be/ftMq5ps503w

Here are a list of github projects who resolve the Machine Learning part.

https://github.com/Avhirup/Stock-Market-Prediction-Challenge

https://github.com/ciurana2016/predict_stock_py

http://machinelearningmastery.com/time-series-prediction-with-deep-learning-in-python-with-keras/

I can support the programmer who takes this challenge, financially, like an investment.

hansixxxx commented 6 years ago

Hi,

 

i´m trying to forecast the next candle but it´s still not good.

You have a working code already? I´m really good at read the charts and i know all indicators.

I´m a informatic student but simply new to node.

 

Can you share what you got already?

Maybe we can setup a dropbox for what we do?

 

Regards

 

Gesendet: Dienstag, 23. Januar 2018 um 11:00 Uhr Von: Salim notifications@github.com An: askmike/gekko gekko@noreply.github.com Cc: hansixxxx kurbelmal@gmx.de, Comment comment@noreply.github.com Betreff: Re: [askmike/gekko] Integrating Machine Learning AI instead Technical Analysis to Gekko (#789)

I would be intresting to join yours.

I suspect that these indicators are not sufficent to "predict" with enough precision something.

By the way, what do you predict via your network ? % of increase for the next candle ? % of increase for the next week ?

Elakoui Directeur Technique 0628730009 salim.elakoui@nway.org

Paris France [image: Facebook] https://facebook.com/salim.elakoui [image: Twitter] https://twitter.com/salimelakoui [image: LinkedIn] https://linkedin.com/in/salimelakoui [image: Google+] https://plus.google.com/+SalimElakoui [image: YouTube] https://youtube.com/channel/UCFsNUh_6pp3bLXWMBNbiltQ [image: Skype] [image: Flickr] https://www.flickr.com/photos/salimelakouimartin

On Tue, Jan 23, 2018 at 10:44 AM, hansixxxx notifications@github.com wrote:

I think the neural network needs bbands, macd, cci, dema and candlestick like said above. Seems to be very helpful indicators. I´m on at develop a neural network. Can i join a group of you or somebody wants to join me?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/askmike/gekko/issues/789#issuecomment-359735216, or mute the thread https://github.com/notifications/unsubscribe-auth/ATRgT-IedEXj8L31KFpq1dE32AxqsGm0ks5tNaoJgaJpZM4N9gh3 .

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

 

salimelakoui commented 6 years ago

Do you have an email Luca ?

Elakoui Directeur Technique 0628730009 salim.elakoui@nway.org

Paris France [image: Facebook] https://facebook.com/salim.elakoui [image: Twitter] https://twitter.com/salimelakoui [image: LinkedIn] https://linkedin.com/in/salimelakoui [image: Google+] https://plus.google.com/+SalimElakoui [image: YouTube] https://youtube.com/channel/UCFsNUh_6pp3bLXWMBNbiltQ [image: Skype] [image: Flickr] https://www.flickr.com/photos/salimelakouimartin

On Tue, Jan 23, 2018 at 11:13 AM, hansixxxx notifications@github.com wrote:

Hi,

i´m trying to forecast the next candle but it´s still not good.

You have a working code already? I´m really good at read the charts and i know all indicators.

I´m a informatic student but simply new to node.

Can you share what you got already?

Maybe we can setup a dropbox for what we do?

Regards Luca

Gesendet: Dienstag, 23. Januar 2018 um 11:00 Uhr Von: Salim notifications@github.com An: askmike/gekko gekko@noreply.github.com Cc: hansixxxx kurbelmal@gmx.de, Comment comment@noreply.github.com Betreff: Re: [askmike/gekko] Integrating Machine Learning AI instead Technical Analysis to Gekko (#789)

I would be intresting to join yours.

I suspect that these indicators are not sufficent to "predict" with enough precision something.

By the way, what do you predict via your network ? % of increase for the next candle ? % of increase for the next week ?

Elakoui Directeur Technique 0628730009 salim.elakoui@nway.org

Paris France [image: Facebook] https://facebook.com/salim.elakoui [image: Twitter] https://twitter.com/salimelakoui [image: LinkedIn] https://linkedin.com/in/salimelakoui [image: Google+] https://plus.google.com/+SalimElakoui [image: YouTube] https://youtube.com/channel/UCFsNUh_6pp3bLXWMBNbiltQ [image: Skype] [image: Flickr] https://www.flickr.com/photos/salimelakouimartin

On Tue, Jan 23, 2018 at 10:44 AM, hansixxxx notifications@github.com wrote:

I think the neural network needs bbands, macd, cci, dema and candlestick like said above. Seems to be very helpful indicators. I´m on at develop a neural network. Can i join a group of you or somebody wants to join me?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/askmike/gekko/issues/789#issuecomment-359735216, or mute the thread https://github.com/notifications/unsubscribe-auth/ATRgT- IedEXj8L31KFpq1dE32AxqsGm0ks5tNaoJgaJpZM4N9gh3 .

— You are receiving this because you commented.

Reply to this email directly, view it on GitHub, or mute the thread.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/askmike/gekko/issues/789#issuecomment-359743110, or mute the thread https://github.com/notifications/unsubscribe-auth/ATRgT-4z9gvEdlOupXicjUOH6V1LGaj5ks5tNbC5gaJpZM4N9gh3 .

hansixxxx commented 6 years ago

i mailed to you at salim.elakoui@nway.org

hansixxxx commented 6 years ago

24-01-_2018_13-18-40 Got this...seems to be pretty nice

salimelakoui commented 6 years ago

Super.

Could you give me your parameters ?

Elakoui Directeur Technique 0628730009 salim.elakoui@nway.org

Paris France [image: Facebook] https://facebook.com/salim.elakoui [image: Twitter] https://twitter.com/salimelakoui [image: LinkedIn] https://linkedin.com/in/salimelakoui [image: Google+] https://plus.google.com/+SalimElakoui [image: YouTube] https://youtube.com/channel/UCFsNUh_6pp3bLXWMBNbiltQ [image: Skype] [image: Flickr] https://www.flickr.com/photos/salimelakouimartin

On Wed, Jan 24, 2018 at 2:03 PM, hansixxxx notifications@github.com wrote:

[image: 24-01-_2018_13-18-40] https://user-images.githubusercontent.com/35725568/35333512-47d3fb12-010f-11e8-8df4-462594ab80dd.png Got this...seems to be pretty nice

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/askmike/gekko/issues/789#issuecomment-360124875, or mute the thread https://github.com/notifications/unsubscribe-auth/ATRgTwNGQm9_c2zXOnmcHcbMe2iiolroks5tNyoagaJpZM4N9gh3 .

Shootle commented 6 years ago

@hansixxxx Could you mail this to me as well with the parameters teejay@shootle.com Thanks in advance

John1231983 commented 6 years ago

@hansixxx: Could you also email to me at john1231983@gmail.com ? Good job

astralmedia commented 6 years ago

@hansixxxx I would be interested in seeing what sort of stuff we could do. I've been using javascript & node for a long time, and have been working with Gekko & GekkoGA for a bit now (also know python). Would love to see what sort if info we could share & get closer to a proper trading strategy.

scotthedstrom@gmail.com

salimelakoui commented 6 years ago

I will give you Access to my gitlab.nway.com asap.

Le 24 janv. 2018 20:29, "Scott Hedstrom" notifications@github.com a écrit :

@hansixxxx https://github.com/hansixxxx I would be interested in seeing what sort of stuff we could do. I've been using javascript & node for a long time, and have been working with Gekko & GekkoGA for a bit now (also know python). Would love to see what sort if info we could share & get closer to a proper trading strategy.

scotthedstrom@gmail.com

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/askmike/gekko/issues/789#issuecomment-360246422, or mute the thread https://github.com/notifications/unsubscribe-auth/ATRgT3bDXxgqlLiS3neNjbUyc3prFKSkks5tN4SIgaJpZM4N9gh3 .

q20 commented 6 years ago

@hansixxxx Hey, would you mind sending those parameters to me too, please? In the interest of open source. ; ) meesterlars@gmail.com Thanks :D

salimelakoui commented 6 years ago

I have just asses you all as développers. The more thr merier.

Well, these are the issues :

Le 24 janv. 2018 22:46, "q20" notifications@github.com a écrit :

@hansixxxx https://github.com/hansixxxx Hey, would you mind sending those parameters to me too, please? In the interest of open source. ; ) meesterlars@gmail.com Thanks :D

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/askmike/gekko/issues/789#issuecomment-360284365, or mute the thread https://github.com/notifications/unsubscribe-auth/ATRgT_OyQPcBUvByFjohmeR3npy7AROAks5tN6S-gaJpZM4N9gh3 .

John1231983 commented 6 years ago

@salimelakoui : Thanks for inviting me. I have accepted it but somehow it shows the error The page could not be found or you don't have permission to view it. and The change you requested was rejected.. This is my email john1231983@gmail.com

q20 commented 6 years ago

@salimelakoui : Thanks! Unfortunately, I too have trouble viewing the project: 422 The change you requested was rejected. Make sure you have access to the thing you tried to change. Please contact your GitLab administrator if you think this is a mistake.

salimelakoui commented 6 years ago

It should be ok now for those who have already registred.

Elakoui Directeur Technique 0628730009 salim.elakoui@nway.org

Paris France [image: Facebook] https://facebook.com/salim.elakoui [image: Twitter] https://twitter.com/salimelakoui [image: LinkedIn] https://linkedin.com/in/salimelakoui [image: Google+] https://plus.google.com/+SalimElakoui [image: YouTube] https://youtube.com/channel/UCFsNUh_6pp3bLXWMBNbiltQ [image: Skype] [image: Flickr] https://www.flickr.com/photos/salimelakouimartin

On Thu, Jan 25, 2018 at 9:37 AM, q20 notifications@github.com wrote:

@salimelakoui https://github.com/salimelakoui : Thanks! Unfortunately, I too have trouble viewing the project:

422 The change you requested was rejected. Make sure you have access to the thing you tried to change. Please contact your GitLab administrator if you think this is a mistake.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/askmike/gekko/issues/789#issuecomment-360397601, or mute the thread https://github.com/notifications/unsubscribe-auth/ATRgT4FtwVj2Jfv9aF5Irz0YxPhGrnibks5tOD1DgaJpZM4N9gh3 .

q20 commented 6 years ago

Thanks!

augustoclaro commented 6 years ago

Would you send an invitation to me as well? augustoclaro1@hotmail.com

Enviado do Emailhttps://go.microsoft.com/fwlink/?LinkId=550986 para Windows 10


De: q20 notifications@github.com Enviado: Thursday, January 25, 2018 1:30:41 PM Para: askmike/gekko Cc: Augusto Claro; Comment Assunto: Re: [askmike/gekko] Integrating Machine Learning AI instead Technical Analysis to Gekko (#789)

Thanks!

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Faskmike%2Fgekko%2Fissues%2F789%23issuecomment-360501179&data=02%7C01%7C%7Cc4895e7e128e4f3f884d08d564089883%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636524910429944499&sdata=rUp1nhi8SP7XyJcOfKy7U6QgPdCySmrq3QD0%2Fskd3I4%3D&reserved=0, or mute the threadhttps://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FADKUn3wDA-VF7D8Hn1Z9xlXQSGtJgZPnks5tOJ4hgaJpZM4N9gh3&data=02%7C01%7C%7Cc4895e7e128e4f3f884d08d564089883%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636524910429944499&sdata=2YZcWaZnvfZobuPzlo%2B9qxUpnRlqtjUSJDveOievDrU%3D&reserved=0.

greenbigfrog commented 6 years ago

All past messages don't belong here! @salimelakoui shared their email address further up. If you really want access why not send them an email directly, instead of spamming this issue?

ansonphong commented 6 years ago

Looks like @wupeng1211 @ https://github.com/askmike/gekko/issues/1701 is onto something as well, getting some good results, possibly using convnetjs

ansonphong commented 6 years ago

@lee101 I've been looking at your BitBank project, very interesting, the 1 day trial period is a bit short to get enough time to spend with it, could you get me some more time to access it? My account is phong@phong.com

I'm just looking through the docs, is it possible to access historical prediction data from the API? That would be very helpful for backtesting the strategy with Gekko.

lee101 commented 6 years ago

Hey @ansonphong sure thing ill give you some free time on the platform :)

Checkout the bulk data section at https://bitbank.nz/data you can give me an email for the latest export of market data in whichever format is good for you at leepenkman@bitbank.nz there is the latest 4 hours of data available via rest api, youll also find a node/python api on our github at https://github.com/BitBanknz

@dramida sorry for the late reply

-the input data you use and the general AI algoritm you use: from poloniex we collect a few metrics like : orderbook imbalance (midpoint vs weighted average of top 100 orders) weighted averages in trades (midpoint vs weighted trade averages in time periods in the past) weighted best fit slopes in trades spread ect

You can see some of these metrics over time in the graphs too.

we then use a machine learning algorithm to map those features to predictions based on historical data. part of the core uses (among other things) KNN to do this mapping, this allows it to stay relevant to current market conditions by only using the past few days of training data for prediction (in addition to iteratively backtesting and retraining internal parameters on new market data)

-the output parameters and their meaning, the output parameters are the predicted weighted trade averages (weighted by trade amount) over specific periods (next 5 mins, 5-30 mins, 30-60mins and 60-120 mins). We arent predicting volatility yet but in the next few days we will be predicting the weighted std deviation in the trades too (weighted by trade amount) -markets you work on, only data from poloniex currently, next will probably be bittrex

-an example on how to use your data, in a better English or with captions. Auto captions does not work at all, sorry. theres an explanation of the format of the features/data at https://bitbank.nz/api the data includes what features we computed in the data, what we then predicted the outcome to be and if available what the actual outcome was so you can compute things like our accuracy ect.

ill try and fix that video up and/or create a better one

Thanks!

lee101 commented 6 years ago

i should probably create a new issue for this but I would be happy to throw someone some e.g. 0.01 btc to someone who creates a decent gekko strategy based on bitbank.nz forecasts, also some free time on the platform :)

shan2018 commented 6 years ago

My job is making credit score model, and also collect historical data of cryptocurrencies to analysis now. I think feature engineer and target variable definition is so import. TA quota can be part of features. of course,i'm working on it. and i build a discord group: https://discord.gg/HPWaECX , welcome to do some cooperation work. I use Python!

BaptisteOrieux commented 6 years ago

@salimelakoui You can count me in helping with this strategy ;) I'm the french guy (Baptiste) who contacted you by email. This is my github account, not the previous one you add :p

mauroprojetos commented 6 years ago

I found the https://bitbank.nz/api resources interesting I downloaded the API via npm and did a test with sample file. I'm not a good node programmer, but I'm going to do some testing and see if I can integrate with Gekko. If anyone wants to test the BitBank api is in my repository https://github.com/mauroprojetos/bitbank

markvdberg0 commented 6 years ago

Some nice results deep learning + gekko: a0b6ee64-659f-4cf3-8254-b7f8a13445cb

Jnav2000 commented 6 years ago

@markvdberg0 Nice work! What about DrawDown? Any numbers or equity in ideal case?

markvdberg0 commented 6 years ago

@Jnav2000 I have to do some more testing next weekend. The neural network works good in bearish markets. When a market is bullish I can't defeat the market buy&hold.

Where can I show the strategy code? Not used to Github.

q20 commented 6 years ago

@markvdberg0 I reckon you could post your configuration, use pastebin.com, or create a new issue here to discuss your particular setup. ;)

quangtho2910 commented 6 years ago

@markvdberg0 You can insert your code here or using pastebin.com and insert your code on their website!

DrappierTechnologies commented 6 years ago

@markvdberg0 if you want to share/discuss your work several of us are on the discord. There's a few of us on there working on ANN strats, myself included.

markvdberg0 commented 6 years ago

@DrappierTechnologies Can you invite me for Discord?

ameicler commented 6 years ago

Interested also to cooperate. Working on deep learning strategies

John1231983 commented 6 years ago

Me too. I am working in deep learning and interesting to join

q20 commented 6 years ago

Who isn't interested? If possible, I'd appreciate an invite, too. ;)

Jnav2000 commented 6 years ago

@DrappierTechnologies I am interested too... :-)

markvdberg0 commented 6 years ago

https://github.com/askmike/gekko/issues/1873 the code I have written.

DrappierTechnologies commented 6 years ago

We're on the standard gekko discord https://discord.gg/26wMygt

riesgorafael commented 6 years ago

@FLYBYME awesome!!!!! Amazing results! You can share the code or a previous version to the end .. I will be grateful !!! I'm very interested in machine learning ... it's a very good subject! thank you very much. Send me please.. riesgo.rafael@gmail.com.

lutzleonhardt commented 6 years ago

@FLYBYME me too. It would be very nice to see the code :)

TheRyanHickman commented 6 years ago

I've been testing Keras and Tensorflow as the performance I get is better than all the Node libraries I've tested. A big thing one of my engineers pointed out was accounting for transaction times. I'm not entirely sure that the current back testing mechanisms in place do the job.

The results that you are getting @FLYBYME is great, I'd love to see live trades and accounting for market Marker/Taker fee's.

TheRyanHickman commented 6 years ago

In our research we find it critical to create a data set of successful transactions with corresponding elapsed time to compensate for the network congestion and potential market manipulations. We've seen trade bots like these create losses due to lack of measuring for these circumstances.

lutzleonhardt commented 6 years ago

Hello all, hello @dramida, hello @ansonphong, hello @mauroprojetos, I just want to inform about my bitbank-gekko plugin. Me and @lee101 are looking forward on how to use the prediction data for a good buy/sell strategies (see wiki, just results of a very simple algorithm available). Help appreciated :)

chpohl commented 6 years ago

I have looked into this a little over the past week and I decided to try to implement a trading strategy, that calls a python script every time a new candle arrives. I have a pre-trained network, that simply takes the candle data and is supposed to update the advice using the future values from the network. The problem I have is, that I can't seem to get the interaction between gekko and the python script working. I tried using the python-shell plugin as well as a simple childProcess, both with the same results. If the python script is simply:

import sys
print(sys.stdin.read())

Everything works as expected and I can exchange data between node and python. But as soon as I import another module, nothing happens. I believe this has something to do with node's asynchronous nature and the process is killed at some point before it can fully execute. Has anyone tried something similar and succeeded? Or is there a better way to do this? Maybe with the help of a plugin?

The strategy file I used looks like this: custom.txt

jmbartho commented 6 years ago

I spent a lot of time on this, and recently. I have some things to report back for anyone interested.

I've tried feeding & training an RNN with things like Tech Indicators, raw candle info and both together. I tried different RNN's including Perceptron, LSTM, GRU and NARX. You can achieve all of this without coding outside of node.js or even a trading strategy. Just use neaptaptic.js for your AI and fs to save/load your network. Done.

I've had some RNN's work out pretty well. Some of them were regularly outperforming market gains on upswings and still making profits on downswings, including the most recent market corrections. Attaining consistency is challenging and still imperfect, but with the right network training, it's possible. Profitability is definitely attainable.

Problems I see: setting hard rules and decision tree logic for an AI to use to make decisions is just another step added to what you would already be doing: setting hard rules with some decision tree logic. If you just feed the network raw data, you'll have to set hard rules on it's output <= which is the same problem. I do see the value in bid/ask prediction, but there is no crystal ball here, we still don't have a window into the future. It's not that hard to set up parameters that change dynamically on a regular trading strategy by doing things like making your macdHistogram buy/sell thresholds a factor of the closing price, and your RSI interval (or any other interval) a factor of: Math.abs(lastMarketRally.dateTime - lastMarketCorrection.dateTime) for example.

I did this on a strategy with some other Tech Ind's and I was able to achieve way more without AI including better profit %'s on market upswings and downswings, and most importantly, consistency. I have a degree in finance, so maybe I have an edge up with just the Tech Inds, and a disadvantage on the coding. But my strategy works better than the AI. It's hard for me to argue with results, and weeks of time spent on researching and testing AI.

My 2 cents=> If you're new to this, get a good strategy working without AI, then spend time messing around with testing an AI. It will help you get a better understanding of how Technical Indicators work. It'll be like your math teacher forcing you to use a paper and pencil, instead of a calculator for the purpose of understanding the math better. In the end, you may just end up sticking with the paper and pencil, and using the calculator when you need it.

One more thing: sentiment analysis and order-book depth were not used in anything I tried. Those may make a significant difference. I will start with adding order-book depth when I feel like picking this up again. You can achieve all of this without coding outside of a strategy as well. Although, it'll be another fs hack, and it'll require running something 24/7 to pull the data.

bitcoinvsalts commented 6 years ago

I totally agree with you. I am still currently researching/testing/running some strats based on RNN but none of them can successfully predict the future specially hourly and daily. I mostly use AI to reduce my risk.

topdev01 commented 6 years ago

When setting up a life trade using config files would they work if I enable 2 or more indicators like rsi and macd and get a nuy sell signal only if both meet set criteria?

clintperry15 commented 6 years ago

@FLYBYME and/or @salimelakoui could you guys share this project with me I'd like to help out and further this along cryptodon15@gmail.com

salimelakoui commented 6 years ago

​Here it is : https://gitlab.nway.org/salim.elakoui/gekko-strategy

Elakoui Directeur Technique 0628730009 salim.elakoui@nway.org

Paris France [image: Facebook] https://facebook.com/salim.elakoui [image: Twitter] https://twitter.com/salimelakoui [image: LinkedIn] https://linkedin.com/in/salimelakoui [image: Google+] https://plus.google.com/+SalimElakoui [image: YouTube] https://youtube.com/channel/UCFsNUh_6pp3bLXWMBNbiltQ [image: Skype] [image: Flickr] https://www.flickr.com/photos/salimelakouimartin

On Thu, Mar 22, 2018 at 1:01 AM, clintperry15 notifications@github.com wrote:

@FLYBYME https://github.com/flybyme and/or @salimelakoui https://github.com/salimelakoui could you guys share this project with me I'd like to help out and further this along cryptodon15@gmail.com

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/askmike/gekko/issues/789#issuecomment-375134799, or mute the thread https://github.com/notifications/unsubscribe-auth/ATRgT-2OwlSAX3A5KQoeQY2s23Qp9QT8ks5tgunAgaJpZM4N9gh3 .

Blockchainbuffett commented 6 years ago

I cant code. But I have Ideas. Can a code illiterate individual be of any significant value to the development tech through ideas thought experiments etc?

Or should should we just shut up and leave it to the pros? - Since our lack of technical knowledge will eventually lead to more bad than good: Since may not be able to properly determine what is feasible and will probably require extensive time in requesting explanations from people who would be best efforts are probably at writing coding etc.? Or is it possible to determine feasibility of an idea by finding comparable examples in current applications?

Asking for a friend... :D

thisismydesign commented 6 years ago

@Blockchainbuffett I think you should rather bring up such broad topics in tech forums, etc.

I'd differentiate between technical knowledge and coding. If you want to have a meaningful conversation in the tech space you need to have some understanding of the topic. If you don't it's doubtful that you'll discover the next big thing before others who do would (or at all).

In any case I for one am interested if you feel like reaching out.