Pages:
Author

Topic: Goomboo's Journal - page 3. (Read 281459 times)

legendary
Activity: 1974
Merit: 1077
^ Will code for Bitcoins
April 27, 2014, 03:26:33 AM
So after researching all this, I know how to start going about learning how to trade, but what I am having huge problems finding is experienced, legitimate, successful BTC traders who I can trust with my money.  There are a couple on CryptoStocks which look ok, but it's almost impossible to verify who's legit and who's scamming on that site as most of the companies are not verified and offer very little in the way of other ways to verify themselves.

I see the 'Currensee' site mentioned in this thread, which is a pretty cool concept, but I'm after a BTC based trading company.  Does anyone have any suggestions / recommendations?

I don't think such a managed fund you are seeking for exists. It's rather tough to continually successfully beat Buy&Hold.

There are dozens of software packages on this forum who claim to connect to the exchanges and trade successfully for you, but when you ask for past performances you see they change the definition of the success and measure against the starting fiat capital.
sr. member
Activity: 1064
Merit: 253
April 27, 2014, 02:56:07 AM
Hi Guys,

I am toying with the idea of getting into some BTC trading and this awesome thread cropped up during a search on the subject.  There's some excellent information in here, thanks Goomboo for your massive contribution to the BTC community!  However, I am torn between spending the time and money to learn how to trade myself vs getting a real expert to do it for me.

I would really like to be able to do this myself, and while I believe I have the discipline, intelligence and personality required to be successful at it, I would be doing it part time (although conceivably with the help of some bots) and frankly, given the massive potential pitfalls that this kind of endeavor entails, I'm not sure that my available time is going to be enough to be successful at it.

On the other hand, I would be equally happy to let a true, full time expert do all the hard work for me in exchange for a percentage of the profits.  Less effort for me, more time for other, probably more important things (like being a Father to my 2 young daughters).

Probably the most relevant post to this subject is one from Goomboo basically saying 'DON'T DO IT!!' Hahaha Cheesy

So after researching all this, I know how to start going about learning how to trade, but what I am having huge problems finding is experienced, legitimate, successful BTC traders who I can trust with my money.  There are a couple on CryptoStocks which look ok, but it's almost impossible to verify who's legit and who's scamming on that site as most of the companies are not verified and offer very little in the way of other ways to verify themselves.

I see the 'Currensee' site mentioned in this thread, which is a pretty cool concept, but I'm after a BTC based trading company.  Does anyone have any suggestions / recommendations?

hero member
Activity: 518
Merit: 500
April 24, 2014, 02:29:47 PM
Using the "load raw data" all data, daily, taken from bitcoincharts and removing the Inf observations I had EMA21/EMA10 cross on 2014-04-20 for EMA on close price and day after when EMA on vwap price. Also validated the two interfaces from bitcoincharts, any differences are related to rounding issue and are marginal enough.
Regarding ZeroBlock, it looks great, but does it support automated trading?

Forgive me for sounding like a total noob, but can someone please explain what EMA's are etc and what the content of his post is talking about?

in a nutshell:

the price bounces up and down a lot (as it comes from the newest trade). EMA (Exponential Moving Average) is a smoother version of a line (the price in this case). the smoothness of an EMA line can be adjusted, by settings the number of previous periods (points) it has to "average", per periods. an EMA that is set to "average" the previous 21 periods (EMA21), is smoother than one set to the last 10 periods (EMA10). "averaging" more periods results in a smoother but less responsive line. 1 period is a time frame (duration) that could be anything you prefer (ex: 1minute, 3hours, 1day, 2weeks etc...). (periods usually contain multiple trades, and it's normal to take the closing (a.k.a. last) price of that period to represent that period, but that's a more technical detail)

in this thread we've been discussing a simple method from Goomboo (EMA Crossover method?), where you take the 21 day EMA (EMA21) and the 10 day EMA (EMA10). when the more responsive EMA10 crosses the slower EMA21:
- from the bottom, then it's a buy signal
- from the top, then it's a sell signal
(of course there is more advice about using this method in this thread)

http://bitcoincharts.com/ has price data for lot's of Bitcoin exchanges that can be loaded into excel or a different program to try things. it looks like MusX was complaining about some of the data being faulty because it contains the values Inf (infinite), which is not a price.

I appreciate the time it took you to explain EMA in detail.  Thanks
member
Activity: 72
Merit: 10
April 24, 2014, 01:50:00 PM
Using the "load raw data" all data, daily, taken from bitcoincharts and removing the Inf observations I had EMA21/EMA10 cross on 2014-04-20 for EMA on close price and day after when EMA on vwap price. Also validated the two interfaces from bitcoincharts, any differences are related to rounding issue and are marginal enough.
Regarding ZeroBlock, it looks great, but does it support automated trading?

Forgive me for sounding like a total noob, but can someone please explain what EMA's are etc and what the content of his post is talking about?

in a nutshell:

the price bounces up and down a lot (as it comes from the newest trade). EMA (Exponential Moving Average) is a smoother version of a line (the price in this case). the smoothness of an EMA line can be adjusted, by settings the number of previous periods (points) it has to "average", per periods. an EMA that is set to "average" the previous 21 periods (EMA21), is smoother than one set to the last 10 periods (EMA10). "averaging" more periods results in a smoother but less responsive line. 1 period is a time frame (duration) that could be anything you prefer (ex: 1minute, 3hours, 1day, 2weeks etc...). (periods usually contain multiple trades, and it's normal to take the closing (a.k.a. last) price of that period to represent that period, but that's a more technical detail)

in this thread we've been discussing a simple method from Goomboo (EMA Crossover method?), where you take the 21 day EMA (EMA21) and the 10 day EMA (EMA10). when the more responsive EMA10 crosses the slower EMA21:
- from the bottom, then it's a buy signal
- from the top, then it's a sell signal
(of course there is more advice about using this method in this thread)

http://bitcoincharts.com/ has price data for lot's of Bitcoin exchanges that can be loaded into excel or a different program to try things. it looks like MusX was complaining about some of the data being faulty because it contains the values Inf (infinite), which is not a price.
legendary
Activity: 1974
Merit: 1077
^ Will code for Bitcoins
April 23, 2014, 05:56:46 PM
Using the "load raw data" all data, daily, taken from bitcoincharts and removing the Inf observations I had EMA21/EMA10 cross on 2014-04-20 for EMA on close price and day after when EMA on vwap price. Also validated the two interfaces from bitcoincharts, any differences are related to rounding issue and are marginal enough.
Regarding ZeroBlock, it looks great, but does it support automated trading?

Forgive me for sounding like a total noob, but can someone please explain what EMA's are etc and what the content of his post is talking about?

http://www.investopedia.com/terms/e/ema.asp
hero member
Activity: 518
Merit: 500
April 23, 2014, 05:52:37 PM
Using the "load raw data" all data, daily, taken from bitcoincharts and removing the Inf observations I had EMA21/EMA10 cross on 2014-04-20 for EMA on close price and day after when EMA on vwap price. Also validated the two interfaces from bitcoincharts, any differences are related to rounding issue and are marginal enough.
Regarding ZeroBlock, it looks great, but does it support automated trading?

Forgive me for sounding like a total noob, but can someone please explain what EMA's are etc and what the content of his post is talking about?
full member
Activity: 175
Merit: 100
April 23, 2014, 05:10:48 PM
Using the "load raw data" all data, daily, taken from bitcoincharts and removing the Inf observations I had EMA21/EMA10 cross on 2014-04-20 for EMA on close price and day after when EMA on vwap price. Also validated the two interfaces from bitcoincharts, any differences are related to rounding issue and are marginal enough.
Regarding ZeroBlock, it looks great, but does it support automated trading?
sr. member
Activity: 409
Merit: 250
April 22, 2014, 05:02:54 PM
Goomboo, what is the source of market data you are using? could you validate the base market data against http://api.bitcoincharts.com/v1/csv/ bitstampUSD full history?

The market data I am using is Bitstamp data from Bitcoincharts.com.  I get the data by looking at a daily chart for "all time" and clicking "load raw data" at the bottom of the chart.  There are 5 or so days which need to be cleaned up (price = infinity, etc.).  I set the market price on these days equal to the price from the prior day.  It's imperfect, but it gives the general idea.


I performed the same simulation based on the 1. http://bitcoinchain.com/export, 2. bitcoincharts.com csv and in the both cases I have the slightly different results than yours - no crossover yet - and in both cases the results match one to another.

If you're getting slightly different results backtesting, then I wouldn't be worried.  If I started backtesting a day earlier or later, my results could have potentially varied by several hundred percentage points.

In terms of what triggers me to actually enter/exit the market, I use a chart on ZeroBlock trading platform, so I don't use the BitcoinCharts feed.
full member
Activity: 175
Merit: 100
April 22, 2014, 03:20:13 PM
Goomboo, what is the source of market data you are using? could you validate the base market data against http://api.bitcoincharts.com/v1/csv/ bitstampUSD full history?
I do not know if your market data provider is more correct than bitcoincharts csv history, but I do know that in October 2013 bitstamp API had silently (no error, no warning, no notification) removed the offset parameter which gives the possibility to query trades from particular id. It is likely that some of the systems were affected by the change which might results lack of data consistency.
I performed the same simulation based on the 1. http://bitcoinchain.com/export, 2. bitcoincharts.com csv and in the both cases I have the slightly different results than yours - no crossover yet - and in both cases the results match one to another.
If you could dump the base data from last week (raw trades or already aggregated to daily periods - those including volume information and is the date is it period's opening date or closing date) we could easily compare them.
sr. member
Activity: 409
Merit: 250
April 21, 2014, 05:07:01 PM
  • I'm not sure how to specify that it should compound returns. Is there any option to change the strategy?

The right way to do it is to create an account balance variable in your code and have EnterLong/Short signals enter a quantity such that you go "all in" when you trade.  This will show you the compounded return through time of the strategy.  If you are unfamiliar with code, I'm sure there are NinjaTrader strategies online with dynamic lot-sizing options, or just build it out in Excel.

A huge caveat here is that this assumes investing 100% with no stop-loss.  Suicidal in the real world.

  • I'm not sure I understand the "mark-to-market PNL chart" point

Notice how my profit/loss chart shows the value of the account every single day but NinjaTrader only shows sharp, one-day adjustments to account balance?  That's because I'm showing mark-to-market PNL: value the account every day based on the closing market price of the day and calculate return.  This is what they do on the trade floor - your manager wants to know where you stand every day.

  • Finally, yeah, there was a >100% lose in a short trade, I'm posting the trade if anyone is interested.


Yeah, I see that now - shorting would have resulted in devastating losses.  The way a hedge fund manager described it to me: "shorting a stock [BTC trades like a stock] is like playing Russian Roulette with 100 chambers - you'll make money 99% of the time, but the 1% will wipe you out".  This is why I rarely short BTC or any individual stock - why expose yourself to the potential of infinite losses?  The probability, no matter how remote, of total wipe-out mathematically removes your edge.

I'm still trying to get better history data but at least I got the strategy running. Thank you for the answer, I'm really learning a lot with this.

Definitely, glad you found it helpful.
full member
Activity: 175
Merit: 100
April 21, 2014, 01:40:48 PM
Also important factor (in case of daily ema21/ema10 it is not as much important as mentioned above but still should be considered) is the estimated price of executed order.
I don't know what price Goomboo is using but it is depended on market liquidity and volume of your trading assets, if assets aren't huge and market liquidity isn't tiny you can assume you will buy/sell on the next period vwap price.
Some tools like cryptotrader.org overestimate the price a bit because they are using current period price (the period on which signal was generated). That is not strictly correct because you can calculate the signal only when the period is closed already, and when it is closed already you shouldn't assume you will buy/sell on it's average price, the fastest possible is next period Open price, still quite unrealistic.
If you are going to put money on some strategy I would advise to backtest it not by external tool, or at least validate the backtest results by your own, it can be achieved even in spreadsheet.
newbie
Activity: 2
Merit: 0
April 21, 2014, 01:12:06 PM
  • Deleted the short trades and it seems now normal (profitable, at least)
  • I'm not sure how to specify that it should compound returns. Is there any option to change the strategy?
  • I'm not sure I understand the "mark-to-market PNL chart" point
  • Finally, yeah, there was a >100% lose in a short trade, I'm posting the trade if anyone is interested.
http://s9.postimg.org/e5r9w0ejz/loss.jpg
I'm still trying to get better history data but at least I got the strategy running. Thank you for the answer, I'm really learning a lot with this.
sr. member
Activity: 409
Merit: 250
April 21, 2014, 12:42:40 PM
I've downloaded Ninjatrader to backtest the strategy and test some other ones, but I'm not getting the expected results.\

A few things are happening here:
  • My results are long only, your backtest includes short trades
  • NinjaTrader does not compound returns unless specified.  In other words, DefaultQuantity will always purchase 1 BTC regardless of account size.  This skews overall account returns.
  • NinjaTrader does not graph mark-to-market PNL charts, only changes in closed PNL.  This is why there are sudden surges upwards or downwards on your graphs
  • There is probably an error in the price data used - your results imply that a short trade lost 100% (market rose 100% while short) - I cannot see this in market history
newbie
Activity: 2
Merit: 0
April 21, 2014, 06:52:38 AM
Hi Goomboo, I've just discovered your post and really appreciate that you share your knowledge. I've downloaded Ninjatrader to backtest the strategy and test some other ones, but I'm not getting the expected results. Maybe you or anyone can let me see where I'm wrong.

First of all, I'm having problems getting the required format to import the data, but I found some historical data here that I am using.

Next, I created a new strategy, using the EMA 10/21 strategy. I am pasting the strategy script, maybe the mistake is there.
Code:
#region Using declarations
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Xml.Serialization;
using NinjaTrader.Cbi;
using NinjaTrader.Data;
using NinjaTrader.Indicator;
using NinjaTrader.Gui.Chart;
using NinjaTrader.Strategy;
#endregion

// This namespace holds all strategies and is required. Do not change it.
namespace NinjaTrader.Strategy
{
    ///
    /// Enter the description of your strategy here
    ///

    [Description("Enter the description of your strategy here")]
    public class EMAcrossover2 : Strategy
    {
        #region Variables
        // Wizard generated variables
        private int short_EMA = 10; // Default setting for Short_EMA
        private int long_EMA = 21; // Default setting for Long_EMA
        // User defined variables (add any user defined variables below)
        #endregion

        ///
        /// This method is used to configure the strategy and is called once before any strategy method is called.
        ///

        protected override void Initialize()
        {

            CalculateOnBarClose = true;
        }

        ///
        /// Called on each bar update event (incoming tick)
        ///

        protected override void OnBarUpdate()
        {
            // Condition set 1
            if (EMA(Short_EMA)[0] > EMA(Long_EMA)[0]
                && EMA(Short_EMA)[1] < EMA(Long_EMA)[1])
            {
                EnterLong(DefaultQuantity, "");
                ExitShort("", "");
            }

            // Condition set 2
            if (EMA(Long_EMA)[0] > EMA(Short_EMA)[0]
                && EMA(Long_EMA)[1] < EMA(Short_EMA)[1])
            {
                EnterShort(DefaultQuantity, "");
                ExitLong("", "");
            }
        }

        #region Properties
        [Description("")]
        [GridCategory("Parameters")]
        public int Short_EMA
        {
            get { return short_EMA; }
            set { short_EMA = Math.Max(1, value); }
        }

        [Description("")]
        [GridCategory("Parameters")]
        public int Long_EMA
        {
            get { return long_EMA; }
            set { long_EMA = Math.Max(2, value); }
        }
        #endregion
    }
}

#region Wizard settings, neither change nor remove
/**/ I've omitted this since it's very long, bit I can post it if needed.
#endregion

I've backtested using the following settings:
http://s30.postimg.org/6gd8pecv5/settings2.jpg

And got the following (scary) results:
http://s29.postimg.org/wkdk1l50n/result_chart.jpg

http://s29.postimg.org/58ib0909z/result_table.jpg

So, where is the problem?
sr. member
Activity: 409
Merit: 250
April 20, 2014, 06:40:28 PM
The 10/21 crossover occurred 2 days ago, providing a long signal.  Again, rather than blinding trusting a set of technical tools to direct our trading, we should scrutinize the strategy to ensure continued validity.





This journal was started on January 20th, 2012.  Here is a backtest of the 10/21 strategy from the inception of this thread until today.  Please note that this assumes that market participants have been able to shelter funds from ongoing counter-party risk in the BTC markets.




  • Return of 9700% pre-commission; return of 9000% post-commission
  • Assumes a 0.25% trading fee
  • Assumes no slippage from the bid-ask spread
  • Assumes no execution delays
  • Results are long only
newbie
Activity: 19
Merit: 0
March 17, 2014, 07:43:21 AM
Good luck!
member
Activity: 85
Merit: 10
March 15, 2014, 05:34:19 PM
so is the system long or short at this point??  from this chart it looks like the averages are dead even, not above or below, for over a week : http://bitcoincharts.com/charts/bitstampUSD#rg60ztgSza1gEMAzm1g10za2gEMAzm2g21zxzi1gMACDzv

what signals have been generated in the past 2 weeks?
member
Activity: 72
Merit: 10
March 13, 2014, 02:49:04 PM
Lebing's assertion only makes sense if goomboo would have aggressively pushed for a particular set of parameters

As I mentioned in my post, even if someone chooses their own strategy, its relatively trivial to analyze trading data to see which single variable triggers are causing trades, in which amounts, etc. It matters not whether he pushes one specific strategy or another, if a program can pick up any single variable trade with predictability, it can be exploited. It is only with more complicated strategies that involve multiple variables, is it more difficult to pinpoint such trading data to exploit. Even then, with a long enough time frame - they are also possible to pick up on.
so you are basically arguing that any system can be picked up. but that doesn't just apply to the system discussed here. besides, i don't think people will keep using a system when it becomes unprofitable.

i don't think that making a system more complicated just so it doesn't get picked up, is a good starting point. i think it better to start simple. and change it as the need arises.
legendary
Activity: 1288
Merit: 1000
Enabling the maximal migration
March 13, 2014, 12:51:27 PM
Lebing's assertion only makes sense if goomboo would have aggressively pushed for a particular set of parameters

As I mentioned in my post, even if someone chooses their own strategy, its relatively trivial to analyze trading data to see which single variable triggers are causing trades, in which amounts, etc. It matters not whether he pushes one specific strategy or another, if a program can pick up any single variable trade with predictability, it can be exploited. It is only with more complicated strategies that involve multiple variables, is it more difficult to pinpoint such trading data to exploit. Even then, with a long enough time frame - they are also possible to pick up on.
legendary
Activity: 1470
Merit: 1007
March 13, 2014, 12:07:33 PM
oh come lebing

trading the one day cross would have been a stellar strategy looking back, and Goomboo has harangued readers to DYODD all along

Especially because the majority of the last third or so of this thread has been about finding, on our own, optimal parameters for a CO strategy. Lebing's assertion only makes sense if goomboo would have aggressively pushed for a particular set of parameters (say, the "traditional" 20+10 hourly)... but he never did that, saying quite early already that you should backtest parameters that give results you are personally happy with.

As for the psychological motivation people might have to share any information... it's not that difficult to see that a combination of altruistic willingness to share your knowledge, and maybe a bit of satisfaction if people like your work, i.e. express their respect/admiration, could be motivation to post here, besides financial incentives. Not everything a capitalist does needs to be motivated financially :)
Pages:
Jump to: