Author

Topic: Hermes trading algorithm | Statistically ~10x more profitable than EMA trading (Read 6102 times)

newbie
Activity: 1
Merit: 0
Has anyone of you still got the source code for this?
sr. member
Activity: 399
Merit: 250
I've been running a range different bots recently and marking performance against manually trading.
So far the results have been abysmal, mainly along the lines of missed opportunities to both buy and sell.

Running such bots against 'past trades' or 'history' allows you to tune the variables for exactly that…. The PAST.
On one bot I found it was possible to take the profit from 4.7% to 19% , just by retarding the analysis by 1 minute…. If only I could go back with that Knowledge…

As such tuning bots on past data, especially on something as dynamic as bitcoin.. is absolute bollocks, because you can 'tune' the algorithm parameters to give exactly the figures you require.

You may as well as invest in a pair of 'Necropants'


newbie
Activity: 9
Merit: 0
There was a small price crash. Evaluation time.

I was watching it as it happened, but I didn't have the bot set to live trading. The bot would have sold at $203, bought at $188, then sold at $192.94. Some observations:

- Mt. Gox lag is definitely a problem. There's no problem accessing the API, but trades are delayed. When the sell at $203 occurred, there was lag, so who knows at what price the actual trade would have been made (in this case it was fortunate that the price was on a rise when the sell occurred, so it could only have been higher than $203). Clearly limit orders are needed, if only to get some certainty about the price at least. A limit order would have been filled for all three trades.

- The "catching the falling knife" trade by buying after a massive drop in price is quite risky. It turned out great again (bought at $188), and history shows that it is profitable more often than not, but I was holding my breath the whole time. Perhaps I should give some warning for the option or disable it by default.

- The final sell at $192.94 is really unnecessary, as now we're on the wrong side of the book (price has resumed its rise again). Plus, it takes a really long time for the lagging indicators to catch up again and give a buy signal, since the price dropped so much - which leads to a lot of lost profit by buying back in too high. This also happened with the Silk Road crash. This is a big flaw in the algorithm. Currently, a sell always occurs one full sample period after the "catching the knife" buy, no matter the current price. I think a better idea might be to keep track of the price, and don't sell if the price after one sample period is higher than the buy-in price, and stays higher than that price. Or maybe keep track of a fast-moving EMA for this. Not sure how to do it yet.
legendary
Activity: 1862
Merit: 1011
Reverse engineer from time to time
Is there a way to verify that there is no malicious code in there?
I'd imagine so, yes. Since it's javascript you can look up all the code.
newbie
Activity: 44
Merit: 0
Is there a way to verify that there is no malicious code in there?
newbie
Activity: 9
Merit: 0
Added a screenshot of what the options page/dashboard and pop-up currently looks like to the original post. I figure it will give a better idea of what to expect.
newbie
Activity: 9
Merit: 0
Pretty sure even if your bot worked it'd be nearly worthless with hundreds of people all trying to place the same trades. 
You can shift the sampling period by an arbitrary amount of time, use different defaults or manually adjust any of the parameters, which all leads to different trades at different times. Also "hundreds of people" is quite an overestimation of the amount of interest in this bot Cheesy I'd be quite happy to even get to double digits by the end of the year. So for now this is a non-issue.
hero member
Activity: 608
Merit: 500
Pretty sure even if your bot worked it'd be nearly worthless with hundreds of people all trying to place the same trades. 
newbie
Activity: 9
Merit: 0
The trading bot is a Chrome plugin with all Javascript unobfuscated and verifiable.
Why is it a chrome plugin? Since it is javascript can it be converted to say node.js?
User-friendliness, mostly. There was already an easy-to-use open source Chrome plugin for EMA trading available, so I just continued from there.

And yeah, it should be fairly simple to convert it to Node.js and run it browser-less. If there is demand I'm definitely up for providing a Node version as well.

I haven't tested much over the really short sample intervals. Either way, I don't think lagging indicators like EMA/MACD are a good idea for HFT; you react too late and any profits will just get swallowed by fees.
How sensible is your bot to lagging? Especially mtgox often lags horrible and makes real time trading those spikes impossible. What happens if you artificially delay every trade 60 seconds. Still equally profitable?

Currently, every time a sample request returns an error or times out, the bot repeats the request 10 seconds later until it goes through. Every 5 seconds for buy/sell requests. It is obviously susceptible to lagging, but Mt.Gox hasn't lagged for months and has become especially speedy since they installed new server hardware a few weeks ago, so I don't expect this to be at all a problem in the future. That said, yes, a few of the April trades would have been impossible to make at those prices due to the downtime. I'd forgotten to mention this in the original post. The April profit number would be a bit lower in reality.

I haven't tried artificially delaying trades by a minute. I don't think it's a fair simulation for Gox lag, as the lag happened only sporadically, not for every trade. Even so, yes, it would likely decrease profitability, but I don't expect it to decrease by a particularly huge amount. All things considered, this is still a pretty low-frequency trading algorithm that samples only once per 15 minutes and only makes decisions based on hourly price changes (at default settings). It shouldn't be that sensitive to minute-scale lag.
full member
Activity: 148
Merit: 100
The trading bot is a Chrome plugin with all Javascript unobfuscated and verifiable.
Why is it a chrome plugin? Since it is javascript can it be converted to say node.js?

I haven't tested much over the really short sample intervals. Either way, I don't think lagging indicators like EMA/MACD are a good idea for HFT; you react too late and any profits will just get swallowed by fees.
How sensible is your bot to lagging? Especially mtgox often lags horrible and makes real time trading those spikes impossible. What happens if you artificially delay every trade 60 seconds. Still equally profitable?
newbie
Activity: 9
Merit: 0
What are your predictions for short term (weekly, or even daily/hourly) high speed trading? Is that all all even possible? No one can predict the volatility of BTC 14 months from now based on any past history alone.

Quote
To give you an idea, running the bot with the "low-frequency" default (31421% profit, 131 trades), a 10 BTC starting amount and a flat 0.6% trading fee + 0.28% slippage correction (so 0.88% in total) would have yielded the following trades over the past 14 months:

I haven't tested much over the really short sample intervals. Either way, I don't think lagging indicators like EMA/MACD are a good idea for HFT; you react too late and any profits will just get swallowed by fees. Also, we don't really need to predict future volatility of BTC. That's the nice thing about using a normalized indicator like PPO - a drop from $15 to $14 will give you the same number as a drop from $150 to $140. Of course, as volatility decreases in the future, it will be harder to profit off of it, though I think this is still a while away. During low volatility periods, the algorithm relies mostly on EMA indicators instead.

>muh paid bot makes over 9000% gaiz!!!

seems legit.

This is exactly why I gave away basically 80% of the algorithm with a back-tester. The data and code are fully verifiable. The current version of the algorithm included in the bot gives around 3x more profit, but that's over 14 months. By adding a few percentages of profit here, and shaving off a few percentages of loss there, especially early on, this is really not that much of a stretch to achieve. The only thing to doubt here is the math, which is a perfectly reasonable thing to do - I may have made a mistake somewhere, used too optimistic assumptions, etc. I encourage anyone to do their diligence before committing.

Anyway, since it seems it's a bit too early to start pricing things in BTC exclusively, I'm changing the price to the equivalent of $200, based on bitcoinaverage.com. So 1.26 BTC as of writing.
hero member
Activity: 566
Merit: 500
>muh paid bot makes over 9000% gaiz!!!

seems legit.

His data was back-tested to early 2012. Totally possible. 6$ -> 240$ = 40x
sr. member
Activity: 350
Merit: 250
>muh paid bot makes over 9000% gaiz!!!

seems legit.
member
Activity: 84
Merit: 10
What are your predictions for short term (weekly, or even daily/hourly) high speed trading? Is that all all even possible? No one can predict the volatility of BTC 14 months from now based on any past history alone.

Quote
To give you an idea, running the bot with the "low-frequency" default (31421% profit, 131 trades), a 10 BTC starting amount and a flat 0.6% trading fee + 0.28% slippage correction (so 0.88% in total) would have yielded the following trades over the past 14 months:
sr. member
Activity: 490
Merit: 250
I will buy when bitstamp support is working  Smiley
newbie
Activity: 9
Merit: 0
Obvious question: if this really works, why do you share and sell it?
Trading is a percentage game: the way to gain a lot of money is to put in a lot of money. Since my current funds are pretty limited, it is financially a lot more lucrative to me to sell a product instead.
full member
Activity: 148
Merit: 100
Obvious question: if this really works, why do you share and sell it?
member
Activity: 84
Merit: 10
newbie
Activity: 9
Merit: 0
I will keep this post updated with how the default values of the bot are performing after the training period. This data has not been referenced whatsoever when optimizing parameters, so it should be a good real-world evaluation of the algorithm.

Starting roughly where the simulation left off with 10 BTC, 0.88% flat fee to correct for slippage:

Code:
High-volume/low-frequency trade settings:
2013 10/8 15:15: Buy 10 BTC at price $103.57 for USD $1044.81
2013 5/9 06:15: Sell 10 BTC at price $133.99 for USD $1328.11
2013 8/9 01:30: Buy 10.2661 BTC at price $128.23 for USD $1328.11
2013 15/9 14:15: Sell 10.2661 BTC at price $135.11 for USD $1374.85
2013 16/9 00:45: Buy 9.8678 BTC at price $138.10 for USD $1374.85
2013 20/9 03:30: Sell 9.8678 BTC at price $134.55 for USD $1316.02
2013 23/9 09:00: Buy 9.6696 BTC at price $134.90 for USD $1316.02
2013 3/10 02:45: Sell 9.6696 BTC at price $120.20 for USD $1152.06
2013 3/10 03:00: Buy 10.3811 BTC at price $110.00 for USD $1152.06
2013 3/10 04:00: Sell 10.3811 BTC at price $128.85 for USD $1325.84
2013 4/10 06:15: Buy 10.1826 BTC at price $129.06 for USD $1325.84
2013 17/10 07:15: Sell 10.1826 BTC at price $150.80 for USD $1522.02
2013 18/10 02:45: Buy 9.5616 BTC at price $157.78 for USD $1522.02
2013 24/10 14:30: Sell 9.5616 BTC at price $203 for USD $1923.92
2013 24/10 16:45: Buy 10.1436 BTC at price $188 for USD $1923.92
2013 24/10 17:45: Sell 10.1436 BTC at price $192.94 for USD $1939.88
2013 26/10 16:45: Buy 9.810 BTC at price $196 for USD $1939.88
2013 31/10 17:00: Time as of writing. 9.810 BTC can be sold at $209.90 for USD $2041.00


Neutral settings:
2013 10/8 16:15: Buy 10 BTC at price $103.60 for USD $1045.12
2013 1/9 08:30: Sell 10 BTC at price $140.30 for USD $1390.65
2013 2/9 02:00: Buy 9.3782 BTC at price $146.98 for USD $1390.65
2013 5/9 06:15: Sell 9.3782 BTC at price $133.99 for USD $1245.54
2013 8/9 02:30: Buy 9.5106 BTC at price $129.81 for USD $1245.54
2013 15/9 14:15: Sell 9.5106 BTC at price $135.11 for USD $1273.67
2013 16/9 01:45: Buy 9.0922 BTC at price $138.85 for USD $1273.67
2013 20/9 03:30: Sell 9.0922 BTC at price $134.55 for USD $1212.58
2013 23/9 09:45: Buy 8.9249 BTC at price $134.67 for USD $1212.58
2013 3/10 02:00: Sell 8.9249 BTC at price $124.00 for USD $1096.94
2013 3/10 03:00: Buy 9.8845 BTC at price $110.00 for USD $1096.94
2013 3/10 04:00: Sell 9.8845 BTC at price $128.85 for USD $1262.41
2013 4/10 07:15: Buy 9.6416 BTC at price $129.78 for USD $1262.41
2013 17/10 07:15: Sell 9.6416 BTC at price $150.80 for USD $1441.16
2013 18/10 03:00: Buy 9.0462 BTC at price $157.91 for USD $1441.16
2013 20/10 02:30: Sell 9.0462 BTC at price $178.20 for USD $1597.85
2013 21/10 00:00: Buy 8.5615 BTC at price $184.99 for USD $1597.85
2013 24/10 14:30: Sell 8.5615 BTC at price $203 for USD $1722.69
2013 24/10 16:45: Buy 9.0826 BTC at price $188 for USD $1722.69
2013 24/10 17:45: Sell 9.0826 BTC at price $192.94 for USD $1736.98
2013 26/10 16:45: Buy 8.7842 BTC at price $196 for USD $1736.98
2013 31/10 17:00: Time as of writing. 8.7842 BTC can be sold at $209.90 for USD $1827.58

Low volume/high-frequency trade settings:
2013 10/8 15:15: Buy 10 BTC at price $103.57 for USD $1044.81
2013 31/8 00:45: Sell 10 BTC at price $141.85 for USD $1406.00
2013 31/8 01:45: Buy 10.1370 BTC at price $137.48 for USD $1406.00
2013 1/9 08:30: Sell 10.1370 BTC at price $140.30 for USD $1409.70
2013 2/9 02:00: Buy 9.5068 BTC at price $146.98 for USD $1409.70
2013 5/9 06:15: Sell 9.5068 BTC at price $133.99 for USD $1262.60
2013 8/9 01:30: Buy 9.7597 BTC at price $128.23 for USD $1262.60
2013 15/9 14:15: Sell 9.7597 BTC at price $135.11 for USD $1307.03
2013 16/9 00:45: Buy 9.3811 BTC at price $138.10 for USD $1307.03
2013 20/9 03:30: Sell 9.3811 BTC at price $134.55 for USD $1251.11
2013 23/9 09:00: Buy 9.1927 BTC at price $134.90 for USD $1251.11
2013 3/10 02:30: Sell 9.1927 BTC at price $124.00 for USD $1129.86
2013 3/10 03:00: Buy 10.1811 BTC at price $110.00 for USD $1129.86
2013 3/10 04:00: Sell 10.1811 BTC at price $128.85 for USD $1300.29
2013 4/10 06:15: Buy 9.9864 BTC at price $129.06 for USD $1300.29
2013 17/10 07:15: Sell 9.9864 BTC at price $150.80 for USD $1492.69
2013 18/10 02:45: Buy 9.3773 BTC at price $157.78 for USD $1492.69
2013 20/10 02:30: Sell 9.3773 BTC at price $178.20 for USD $1656.33
2013 21/10 00:00: Buy 8.8748 BTC at price $184.99 for USD $1656.33
2013 24/10 14:30: Sell 8.8748 BTC at price $203 for USD $1785.73
2013 24/10 16:45: Buy 9.4150 BTC at price $188 for USD $1785.73
2013 24/10 17:45: Sell 9.4150 BTC at price $192.94 for USD $1800.54
2013 26/10 16:45: Buy 9.1056 BTC at price $196 for USD $1800.54
2013 31/10 17:00: Time as of writing. 9.1056 BTC can be sold at $209.90 for USD $1894.45


So far, 90-95% of the performance of a buy-and-hold is achieved. Considering that running a trading algorithm is more-or-less a hedge against price dropping and is meant to reduce overall trading risk compared to buy-and-hold, this is great performance given a consistently rising market. Note that with all 3 settings, the very bottom of the Silkroad-seizure crash was correctly determined.
newbie
Activity: 9
Merit: 0
Hello everyone,

I've developed a trading algorithm based on technical analysis that I'd like to introduce to the community. It is the result of months of studying charts and trial and error to find a perfect balance between generality (i.e. simple enough to likely be profitable in the unknown future) and profitability. It is fundamentally an EMA trading algorithm, but includes additional indicators and conditionals to react to certain situations more quickly and effectively. On the whole, the basic idea of the algorithm is to trade conservatively during low volume, low volatility periods, and more aggressively during high volatility periods to exploit violent price swings.

The trading algorithm
The algorithm operates under 3 basic assumptions:

  • The price trends, so we ride upward trends as long as possible, while cutting short downward trends as soon as possible. This is the assumption underlying the basic EMA-based trading strategy (see Goomboo's Journal thread).
  • Sudden, extreme price movements up or down tend to lead to short- or long-term trend reversals. We want to get in/out ASAP. A MACD cross with its signal line is good for predicting trend changes based on these signals, but is very noise-sensitive. So we introduce an additional conditional - the speed (or angle) of crossing - to filter out any false predictions. Also, rather than MACD, we use PPO (Percentage Price Oscillator), which is a price-normalized version of MACD (essential when absolute value changes as much over history as Bitcoin does).
  • Extreme rises/dives in price tend to be fueled by panic and unsustainable - a significant rebound is expected to occur shortly after. We judge this based on the speed at which PPO rises or falls ({value at current sample} - {value at previous sample}). If it rises at a speed beyond a certain threshold, we sell. If it falls at a speed beyond a certain threshold, we buy. History tells us that more often than not, the price will rebound and we can re-buy/re-sell at a profit.

Evaluation
I have uploaded a simple back-testing tool written in Java that evaluates the algorithm on 14 months (Jul. 2012 to Sep. 2013) of trading data from Mt. Gox here: HermesTestingSuitePublic. The archive includes a runnable .jar and its source code (as a Maven project). The .jar can be run by typing "java -jar HermesTestingSuitePublic.jar" in a command line window. There are no arguments - all settings are set in the hermes.properties file (modify where needed). The hermes.properties file also includes an extended explanation of what every parameter does.

The back-testing tool includes an optimization mode, where the algorithm is run multiple times, over a range of parameters, within given time periods, to find the parameters yielding the highest profit. Statistically, optimizing the parameters over a single time period (i.e. the full 14 months) is less likely to yield profitable results in the future, because we end up overfitting the algorithm to this particular data. Instead, we want to obtain an ideal middle-ground between profitability and generality, so as to optimize the expected future profit. The following steps are applied:

1. The data is split up in a number of smaller periods of a pre-defined length.
2. For each time period, we rank the trading results for each possible parameter combination over this period according to profitability.
3. We end up with a ranking where every parameter combination for each time period is assigned a rank.
4. For each unique parameter combination, we sum the ranking values obtained for each time period to obtain a cumulative ranking.
5. The parameter combination with the lowest cumulative rank is chosen as the ideal setting.

No bias is added for actual profitability of time periods to avoid skewing the parameter selection in favor of anomalies such as the April bubble crash and its following extreme volatility. This will increase the overall likelihood that the algorithm will continue to be profitable in the future, as it has been shown to be the most likely to be profitable on average regardless of the current market situation. In the default case, we test over 14 months (Jul. 2012 to Sep. 2013) of data from Mt. Gox split up into 2-month periods, which includes various types of possible future market situations (low-volume lulls, slow run-ups, flash-crashes, extreme volatility).

Results
Results (ranking for each run, trades belonging to the highest ranked parameter combination) are recorded and viewable in the log file generated by the back-testing tool (Hermes.log). Some pre-run results are included in the /data/results.txt file. In the basic setup as explained above, maximizing expected future profit by evaluating over 2-month periods, testing 1H, 2H, 3H and 4H sample intervals, and assuming a flat 0.6% trading fee, a USD profit of 17420% over the full 14 months can be obtained with this algorithm, versus 2722% using only EMA trading. Profit is calculated by comparing the starting USD price of 10 BTC (Jul. 2012) with the USD value at the end of the period (Sep. 2013).

This is the result obtained using the basic algorithm as described above. I've since further developed the algorithm to further enhance the "conservative during low volatility, aggressive during high volatility" aspect. This involves keeping track of multiple time-shifted versions of the indicators and maintaining different buy/sell criteria. With this enhanced algorithm and the same evaluation method as explained above, a theoretical maximum USD profit of 61656% (Jul. 2012 to Sep. 2013 period) can be obtained.

The raw results of various methods obtained using the testing tool (/data/results.txt):

Code: (data/results.txt)
Starting with 10 BTC, 0.00 USD
All results have been obtained by running the "optimization mode" of the testing suite.
Profit is calculated by comparing the starting USD price of 10 BTC (Jul. 2012) with the USD value at the end of the period (Sep. 2013).
Threshold parameters are in the following order:
EMA buy | EMA sell | PPO cross speed buy | PPO cross speed sell | PPO non-cross speed buy | PPO non-cross speed sell | PPO rebound speed buy | PPO rebound speed sell

=========================
    LOW RISK PROFILE
Avg. over 2-month periods
=========================

Optimize over 2012 1/7 01:00 - 2013 1/9 01:00 range, 2-month periods, 0.6% trading fee, 0.0% slippage correction:
------------------------------
EMA trading:
1H, only EMA: 0.15 -0.80 Profit:  1632%,  73 trades
2H, only EMA: 0.10 -0.85 Profit:  2137%,  47 trades
3H, only EMA: 0.20 -0.35 Profit:  2282%,  59 trades
4H, only EMA: 0.25 -0.05 Profit:  2722%,  55 trades

Basic Hermes algorithm:
1H samples: 0.00 -0.95 0.85 0.45 1.10 0.45 1.30 1.65 Profit: 17420%, 105 trades
2H samples: 0.10 -0.40 0.25 0.40 0.70 0.70 1.40 1.30 Profit:  6863%, 115 trades
3H samples: 0.20 -0.65 0.20 0.20 0.30 0.25 1.20 1.55 Profit:  4915%, 113 trades
4H samples: 0.00 -0.10 0.65 0.85 0.85 1.30 1.05 1.50 Profit:  4921%,  89 trades

Advanced Hermes algorithm (paid version):
xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx Profit: 45384%, 131 trades
or: xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx Profit: 47326%, 161 trades
or: xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx Profit: 61656%, 185 trades



With 0.6% trading fee, 0.28% slippage correction:
------------------------------
EMA trading:
1H, only EMA: 0.15 -0.80 Profit:  1313%,  73 trades
2H, only EMA: 0.10 -0.85 Profit:  1865%,  47 trades
3H, only EMA: 0.20 -0.35 Profit:  1923%,  59 trades
4H, only EMA: 0.25 -0.05 Profit:  2323%,  55 trades

Basic Hermes algorithm:
1H samples: 0.00 -0.95 1.00 0.45 0.85 0.45 1.20 1.55 Profit: 12966%, 105 trades
2H samples: 0.45 -0.45 0.40 0.40 0.90 0.70 1.35 1.15 Profit:  4888%, 101 trades
3H samples: 0.20 -1.40 0.20 0.20 0.30 0.25 1.25 1.60 Profit:  2960%, 101 trades
4H samples: 0.05 -0.15 0.75 0.85 0.95 1.35 1.05 1.15 Profit:  3717%,  87 trades

Advanced Hermes algorithm (paid version):
xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx Profit: 31421%, 131 trades  <-- BOT DEFAULT (high-volume/low-frequency)
or: xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx Profit: 29659%, 153 trades  <-- BOT DEFAULT (neutral)
or: xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx Profit: 36651%, 185 trades  <-- BOT DEFAULT (low-volume/high-frequency)


==========================
    HIGH RISK PROFILE
Test full, 14-month period
==========================

Optimize over full 2012 1/7 01:00 - 2013 1/9 01:00 14-month range, 0.6% trading fee, 0.0% slippage correction:
------------------------------
EMA trading:
1H, only EMA: 2.00 -2.80 Profit:  2596%,  15 trades
2H, only EMA: 0.10 -2.10 Profit:  2732%,  23 trades
3H, only EMA: 0.00 -1.30 Profit:  3285%,  27 trades
4H, only EMA: 0.10 -0.50 Profit:  3346%,  39 trades

Basic Hermes algorithm:
1H samples: 0.00 -0.65 1.00 0.45 1.20 0.45 1.25 0.95 Profit: 18173%, 139 trades
2H samples: 0.10 -1.25 0.35 0.20 1.00 0.80 1.40 1.45 Profit:  8823%,  77 trades
3H samples: 0.20  0.15 0.35 0.15 0.25 0.85 1.30 1.45 Profit:  6144%,  93 trades
4H samples: 0.25 -0.20 0.65 0.85 1.10 1.45 0.85 1.65 Profit:  5126%,  81 trades

Advanced Hermes algorithm (paid version):
xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx Profit: 62596%, 171 trades <-- Theoretical high


With 0.6% trading fee, 0.28% slippage correction:
------------------------------
EMA trading:
1H, only EMA: 2.00 -2.80 Profit:  2492%,  15 trades
2H, only EMA: 0.10 -2.10 Profit:  2561%,  23 trades
3H, only EMA: 0.00 -1.30 Profit:  3046%,  27 trades
4H, only EMA: 0.25 -0.50 Profit:  3003%,  37 trades

Basic Hermes algorithm:
1H samples: 0.00 -0.95 1.00 0.45 0.95 0.45 1.20 1.60 Profit: 12966%, 105 trades
2H samples: 0.10 -1.25 0.35 0.40 0.70 0.60 1.35 1.40 Profit:  7163%,  67 trades
3H samples: 0.00 -1.00 0.20 0.95 0.30 0.80 1.05 1.55 Profit:  5215%,  69 trades
4H samples: 1.00 -1.00 1.10 1.05 0.80 0.90 1.05 2.15 Profit:  3849%,  51 trades

Advanced Hermes algorithm (paid version):
xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx Profit: 38713%, 171 trades


Note that results are better when optimized over the full 14-month period, but as explained, this has a significantly lower likelihood of continuing to be as profitable in the future due to data overfitting. Also, the price data is based on last traded price (which can be ask or bid), so there is bound to be some slippage when an actual trade is made on the exchange. Hence some more realistic results given a slippage correction of 0.28% on top of the trading fee are also included (this 0.28 number is taken from Goomboo and is discussed in his thread).

Hermes trading bot (paid)
I've implemented the algorithm as described above into the open source Mt. Gox trading bot Chrome plugin that was floating around, and added a bunch of features that I thought would be useful.

While backtesting the algorithm, a single most profitable configuration with three distinct profitability fields emerged, i.e. parameter settings converged to three distinct optima in the eight-dimensional parameter space. One optimum has low sell thresholds, so is quite reluctant to sell, and makes few trades. The second optimum has more neutral settings. The last optimum sells quickly, and makes a lot of trades. I've included these in the bot as "low-frequency", "neutral" and "high-frequency" default settings (see the results above).

To give you an idea, running the bot with the "low-frequency" default (31421% profit, 131 trades), a 10 BTC starting amount and a flat 0.6% trading fee + 0.28% slippage correction (so 0.88% in total) would have yielded the following trades over the past 14 months:

Code:
2012 4/7 06:45 : Sell 10.00000 BTC at price $6.44 for USD $63.84. USD Profit: 0.00%
2012 5/7 02:30 : Buy 9.66128 BTC at price $6.55 for USD $63.84. BTC Profit: -3.39%
2012 17/7 13:45 : Sell 9.66128 BTC at price $7.73 for USD $74.04. USD Profit: 15.98%
2012 17/7 22:30 : Buy 8.63436 BTC at price $8.50 for USD $74.04. BTC Profit: -10.63%
2012 20/7 10:45 : Sell 8.63436 BTC at price $8.00 for USD $68.47. USD Profit: -7.53%
2012 21/7 05:45 : Buy 7.87474 BTC at price $8.62 for USD $68.47. BTC Profit: -8.80%
2012 23/7 06:00 : Sell 7.87474 BTC at price $8.54 for USD $66.64. USD Profit: -2.68%
2012 23/7 18:00 : Buy 7.46313 BTC at price $8.85 for USD $66.64. BTC Profit: -5.23%
2012 5/8 12:00 : Sell 7.46313 BTC at price $10.50 for USD $77.70. USD Profit: 16.61%
2012 6/8 10:30 : Buy 7.21490 BTC at price $10.68 for USD $77.70. BTC Profit: -3.33%
2012 18/8 04:30 : Sell 7.21490 BTC at price $13.47 for USD $96.32. USD Profit: 23.96%
2012 18/8 05:15 : Buy 8.73910 BTC at price $10.93 for USD $96.32. BTC Profit: 21.13%
2012 18/8 07:00 : Sell 8.73910 BTC at price $12.98 for USD $112.44. USD Profit: 16.73%
2012 20/8 10:00 : Buy 12.11368 BTC at price $9.20 for USD $112.44. BTC Profit: 38.61%
2012 31/8 22:00 : Sell 12.11368 BTC at price $10.30 for USD $123.67. USD Profit: 9.99%
2012 3/9 02:30 : Buy 12.16841 BTC at price $10.07 for USD $123.67. BTC Profit: 0.45%
2012 23/9 21:45 : Sell 12.16841 BTC at price $11.86 for USD $143.05. USD Profit: 15.67%
2012 24/9 07:15 : Buy 11.60110 BTC at price $12.22 for USD $143.05. BTC Profit: -4.66%
2012 7/10 11:45 : Sell 11.60110 BTC at price $12.31 for USD $141.53. USD Profit: -1.06%
2012 9/10 08:45 : Buy 11.98909 BTC at price $11.70 for USD $141.53. BTC Profit: 3.34%
2012 25/10 20:45: Sell 11.98909 BTC at price $11.22 for USD $133.31. USD Profit: -5.81%
2012 27/10 22:15: Buy 12.60848 BTC at price $10.48 for USD $133.31. BTC Profit: 5.17%
2012 2/11 09:00 : Sell 12.60848 BTC at price $10.57 for USD $132.10. USD Profit: -0.91%
2012 4/11 05:45 : Buy 12.30143 BTC at price $10.64 for USD $132.10. BTC Profit: -2.44%
2012 27/11 23:30: Sell 12.30143 BTC at price $11.95 for USD $145.71. USD Profit: 10.30%
2012 28/11 12:45: Buy 11.72291 BTC at price $12.32 for USD $145.71. BTC Profit: -4.70%
2012 17/12 19:00: Sell 11.72291 BTC at price $12.91 for USD $150.01. USD Profit: 2.95%
2012 18/12 08:00: Buy 11.17976 BTC at price $13.30 for USD $150.01. BTC Profit: -4.63%
2013 25/1 07:15 : Sell 11.17976 BTC at price $17.35 for USD $192.26. USD Profit: 28.17%
2013 26/1 03:15 : Buy 10.86488 BTC at price $17.54 for USD $192.26. BTC Profit: -2.82%
2013 2/2 17:00 : Sell 10.86488 BTC at price $19.22 for USD $206.99. USD Profit: 7.66%
2013 3/2 18:45 : Buy 10.26333 BTC at price $19.99 for USD $206.99. BTC Profit: -5.54%
2013 14/2 10:15 : Sell 10.26333 BTC at price $23.74 for USD $241.52. USD Profit: 16.68%
2013 14/2 15:30 : Buy 9.33121 BTC at price $25.66 for USD $241.52. BTC Profit: -9.08%
2013 18/2 02:00 : Sell 9.33121 BTC at price $26.10 for USD $241.40. USD Profit: -0.05%
2013 19/2 06:00 : Buy 8.91560 BTC at price $26.84 for USD $241.40. BTC Profit: -4.45%
2013 23/2 14:15 : Sell 8.91560 BTC at price $28.94 for USD $255.75. USD Profit: 5.94%
2013 24/2 10:45 : Buy 8.51516 BTC at price $29.77 for USD $255.75. BTC Profit: -4.49%
2013 7/3 09:30 : Sell 8.51516 BTC at price $38.36 for USD $323.78. USD Profit: 26.60%
2013 7/3 09:45 : Buy 8.91931 BTC at price $35.98 for USD $323.78. BTC Profit: 4.75%
2013 7/3 10:45 : Sell 8.91931 BTC at price $39.30 for USD $347.44. USD Profit: 7.31%
2013 7/3 12:15 : Buy 9.56630 BTC at price $36.00 for USD $347.44. BTC Profit: 7.25%
2013 7/3 13:15 : Sell 9.56630 BTC at price $41.80 for USD $396.33. USD Profit: 14.07%
2013 8/3 00:30 : Buy 8.73962 BTC at price $44.95 for USD $396.33. BTC Profit: -8.64%
2013 12/3 10:30 : Sell 8.73962 BTC at price $44.50 for USD $385.49. USD Profit: -2.74%
2013 12/3 11:45 : Buy 10.05522 BTC at price $38.00 for USD $385.49. BTC Profit: 15.05%
2013 12/3 12:45 : Sell 10.05522 BTC at price $45.85 for USD $456.96. USD Profit: 18.54%
2013 13/3 14:15 : Buy 10.04220 BTC at price $45.10 for USD $456.96. BTC Profit: -0.13%
2013 23/3 13:00 : Sell 10.04220 BTC at price $68.69 for USD $683.76. USD Profit: 49.63%
2013 23/3 18:00 : Buy 12.28460 BTC at price $55.17 for USD $683.76. BTC Profit: 22.33%
2013 23/3 19:00 : Sell 12.28460 BTC at price $59.90 for USD $729.37. USD Profit: 6.67%
2013 24/3 17:15 : Buy 10.91251 BTC at price $66.25 for USD $729.37. BTC Profit: -11.17%
2013 29/3 07:00 : Sell 10.91251 BTC at price $76.21 for USD $824.32. USD Profit: 13.02%
2013 29/3 07:15 : Buy 10.75092 BTC at price $76.00 for USD $824.32. BTC Profit: -1.48%
2013 29/3 09:45 : Sell 10.75092 BTC at price $86.00 for USD $916.44. USD Profit: 11.18%
2013 29/3 17:15 : Buy 9.90489 BTC at price $91.71 for USD $916.44. BTC Profit: -7.87%
2013 4/4 01:00 : Sell 9.90489 BTC at price $135.00 for USD $1325.39. USD Profit: 44.62%
2013 4/4 09:30 : Buy 9.95175 BTC at price $132.01 for USD $1325.39. BTC Profit: 0.47%
2013 9/4 01:30 : Sell 9.95175 BTC at price $174.00 for USD $1716.37. USD Profit: 29.50%
2013 9/4 20:30 : Buy 8.38143 BTC at price $202.98 for USD $1716.37. BTC Profit: -15.78%
2013 11/4 00:45 : Sell 8.38143 BTC at price $240.00 for USD $1993.84. USD Profit: 16.17%
2013 11/4 03:00 : Buy 10.71348 BTC at price $184.47 for USD $1993.84. BTC Profit: 27.82%
2013 11/4 04:00 : Sell 10.71348 BTC at price $150.00 for USD $1592.88. USD Profit: -20.11%
2013 11/4 04:15 : Buy 14.06172 BTC at price $112.28 for USD $1592.88. BTC Profit: 31.25%
2013 11/4 05:15 : Sell 14.06172 BTC at price $149.00 for USD $2076.74. USD Profit: 30.38%
2013 11/4 05:30 : Buy 14.19634 BTC at price $145.00 for USD $2076.74. BTC Profit: 0.96%
2013 11/4 06:30 : Sell 14.19634 BTC at price $187.83 for USD $2643.07. USD Profit: 27.27%
2013 11/4 07:00 : Buy 17.34977 BTC at price $151.00 for USD $2643.07. BTC Profit: 22.21%
2013 11/4 08:00 : Sell 17.34977 BTC at price $150.00 for USD $2579.56. USD Profit: -2.40%
2013 11/4 22:30 : Buy 21.13111 BTC at price $121.00 for USD $2579.56. BTC Profit: 21.79%
2013 11/4 23:30 : Sell 21.13111 BTC at price $123.40 for USD $2584.65. USD Profit: 0.20%
2013 12/4 11:15 : Buy 32.84497 BTC at price $78.00 for USD $2584.65. BTC Profit: 55.43%
2013 12/4 12:15 : Sell 32.84497 BTC at price $102.10 for USD $3323.96. USD Profit: 28.60%
2013 12/4 14:45 : Buy 37.12350 BTC at price $88.75 for USD $3323.96. BTC Profit: 13.03%
2013 12/4 15:45 : Sell 37.12350 BTC at price $104.25 for USD $3836.07. USD Profit: 15.41%
2013 12/4 21:00 : Buy 56.24719 BTC at price $67.60 for USD $3836.07. BTC Profit: 51.51%
2013 12/4 22:00 : Sell 56.24719 BTC at price $76.00 for USD $4237.17. USD Profit: 10.46%
2013 13/4 04:15 : Buy 49.41037 BTC at price $85.00 for USD $4237.17. BTC Profit: -12.15%
2013 13/4 09:15 : Sell 49.41037 BTC at price $125.85 for USD $6163.57. USD Profit: 45.46%
2013 13/4 10:15 : Buy 52.59821 BTC at price $116.15 for USD $6163.57. BTC Profit: 6.45%
2013 13/4 10:30 : Sell 52.59821 BTC at price $116.00 for USD $6047.70. USD Profit: -1.88%
2013 13/4 11:30 : Buy 58.76941 BTC at price $102.00 for USD $6047.70. BTC Profit: 11.73%
2013 14/4 03:15 : Sell 58.76941 BTC at price $108.75 for USD $6334.64. USD Profit: 4.74%
2013 14/4 05:45 : Buy 67.51500 BTC at price $93.00 for USD $6334.64. BTC Profit: 14.88%
2013 14/4 07:00 : Sell 67.51500 BTC at price $100.66 for USD $6736.05. USD Profit: 6.34%
2013 16/4 07:00 : Buy 88.89331 BTC at price $75.11 for USD $6736.05. BTC Profit: 31.66%
2013 16/4 08:00 : Sell 88.89331 BTC at price $77.69 for USD $6845.35. USD Profit: 1.62%
2013 16/4 13:00 : Buy 110.86779 BTC at price $61.20 for USD $6845.35. BTC Profit: 24.72%
2013 16/4 14:00 : Sell 110.86779 BTC at price $65.42 for USD $7189.14. USD Profit: 5.02%
2013 16/4 15:45 : Buy 126.93053 BTC at price $56.14 for USD $7189.14. BTC Profit: 14.49%
2013 16/4 16:45 : Sell 126.93053 BTC at price $55.32 for USD $6960.13. USD Profit: -3.19%
2013 16/4 23:45 : Buy 109.50780 BTC at price $63.00 for USD $6960.13. BTC Profit: -13.73%
2013 19/4 21:00 : Sell 109.50780 BTC at price $117.11 for USD $12711.71. USD Profit: 82.64%
2013 21/4 01:30 : Buy 101.61168 BTC at price $124.00 for USD $12711.71. BTC Profit: -7.21%
2013 25/4 03:45 : Sell 101.61168 BTC at price $151.94 for USD $15303.02. USD Profit: 20.39%
2013 26/4 05:30 : Buy 120.37418 BTC at price $126.01 for USD $15303.02. BTC Profit: 18.46%
2013 26/4 06:30 : Sell 120.37418 BTC at price $135.90 for USD $16214.89. USD Profit: 5.96%
2013 28/4 22:30 : Buy 120.39103 BTC at price $133.50 for USD $16214.89. BTC Profit: 0.01%
2013 1/5 04:15 : Sell 120.39103 BTC at price $135.10 for USD $16121.70. USD Profit: -0.57%
2013 3/5 23:45 : Buy 167.32802 BTC at price $95.50 for USD $16121.70. BTC Profit: 38.99%
2013 5/5 16:30 : Sell 167.32802 BTC at price $111.01 for USD $18411.62. USD Profit: 14.20%
2013 6/5 03:45 : Buy 155.43348 BTC at price $117.41 for USD $18411.62. BTC Profit: -7.11%
2013 7/5 08:00 : Sell 155.43348 BTC at price $110.45 for USD $17015.94. USD Profit: -7.58%
2013 8/5 11:15 : Buy 146.91809 BTC at price $114.80 for USD $17015.94. BTC Profit: -5.48%
2013 15/5 08:45 : Sell 146.91809 BTC at price $112.10 for USD $16324.59. USD Profit: -4.06%
2013 16/5 02:00 : Buy 141.57907 BTC at price $114.29 for USD $16324.59. BTC Profit: -3.63%
2013 28/5 05:45 : Sell 141.57907 BTC at price $128.99 for USD $18101.58. USD Profit: 10.89%
2013 29/5 18:30 : Buy 138.95712 BTC at price $129.12 for USD $18101.58. BTC Profit: -1.85%
2013 2/6 19:45 : Sell 138.95712 BTC at price $123.17 for USD $16964.04. USD Profit: -6.28%
2013 4/6 07:00 : Buy 137.47321 BTC at price $122.31 for USD $16964.04. BTC Profit: -1.07%
2013 7/6 14:45 : Sell 137.47321 BTC at price $117.50 for USD $16010.95. USD Profit: -5.62%
2013 10/6 14:45 : Buy 148.59605 BTC at price $106.80 for USD $16010.95. BTC Profit: 8.09%
2013 14/6 08:30 : Sell 148.59605 BTC at price $102.50 for USD $15097.06. USD Profit: -5.71%
2013 15/6 23:15 : Buy 146.65041 BTC at price $102.04 for USD $15097.06. BTC Profit: -1.31%
2013 24/6 20:30 : Sell 146.65041 BTC at price $103.86 for USD $15096.64. USD Profit: -0.00%
2013 25/6 17:00 : Buy 141.55913 BTC at price $105.71 for USD $15096.64. BTC Profit: -3.47%
2013 28/6 14:15 : Sell 141.55913 BTC at price $100.24 for USD $14064.31. USD Profit: -6.84%
2013 29/6 21:15 : Buy 142.82617 BTC at price $97.61 for USD $14064.31. BTC Profit: 0.90%
2013 2/7 01:30 : Sell 142.82617 BTC at price $93.00 for USD $13165.24. USD Profit: -6.39%
2013 8/7 01:45 : Buy 184.54792 BTC at price $70.71 for USD $13165.24. BTC Profit: 29.21%
2013 13/7 12:15 : Sell 184.54792 BTC at price $89.22 for USD $16320.47. USD Profit: 23.97%
2013 14/7 00:30 : Buy 171.89300 BTC at price $94.11 for USD $16320.47. BTC Profit: -6.86%
2013 18/7 16:45 : Sell 171.89300 BTC at price $90.00 for USD $15334.23. USD Profit: -6.04%
2013 20/7 01:45 : Buy 164.67269 BTC at price $92.30 for USD $15334.23. BTC Profit: -4.20%
2013 22/7 01:45 : Sell 164.67269 BTC at price $88.23 for USD $14401.22. USD Profit: -6.08%
2013 22/7 09:45 : Buy 158.07846 BTC at price $90.30 for USD $14401.22. BTC Profit: -4.00%
2013 2/8 12:45 : Sell 158.07846 BTC at price $102.00 for USD $15982.11. USD Profit: 10.98%
2013 2/8 20:00 : Buy 148.24508 BTC at price $106.86 for USD $15982.11. BTC Profit: -6.22%
2013 9/8 01:15 : Sell 148.24508 BTC at price $101.61 for USD $14930.77. USD Profit: -6.58%
2013 10/8 15:15 : Buy 142.89256 BTC at price $103.57 for USD $14930.77. BTC Profit: -3.61%
2013 31/8 22:45 : Sell 142.89256 BTC at price $142.08 for USD $20123.80. USD Profit: 34.78%

REPORT
------
Total profit vs. start balance: 31420.67%
Total number of trades: 131
Profitable trades: 73 (55.73%)
Unprofitable trades: 58 (44.27%)
Avg. USD profit in winning longs: 10.78%
Avg. USD loss in losing longs: -1.90%
Avg. BTC profit in winning shorts: 7.43%
Avg. BTC loss in losing shorts: -3.47%

MONTHLY BREAKDOWN
-----------------
Profit for 2012 1/7 to 1/8 BTC: -28.04% USD: 5.77% Current BTC: 7.46 Current USD (or USD value): $66.64
Profit for 2012 1/8 to 1/9 BTC: 56.41% USD: 67.29% Current BTC: 0.00 Current USD (or USD value): $123.67
Profit for 2012 1/9 to 1/10 BTC: -4.21% USD: 15.67% Current BTC: 11.60 Current USD (or USD value): $143.05
Profit for 2012 1/10 to 1/11 BTC: 8.51% USD: -6.87% Current BTC: 12.61 Current USD (or USD value): $133.31
Profit for 2012 1/11 to 1/12 BTC: -7.14% USD: 9.39% Current BTC: 11.72 Current USD (or USD value): $145.71
Profit for 2013 1/12 to 1/1 BTC: -4.63% USD: 2.95% Current BTC: 11.18 Current USD (or USD value): $150.01
Profit for 2013 1/1 to 1/2 BTC: -2.82% USD: 28.17% Current BTC: 10.86 Current USD (or USD value): $192.26
Profit for 2013 1/2 to 1/3 BTC: -23.56% USD: 30.24% Current BTC: 8.52 Current USD (or USD value): $255.75
Profit for 2013 1/3 to 1/4 BTC: 20.09% USD: 144.28% Current BTC: 9.90 Current USD (or USD value): $916.44
Profit for 2013 1/4 to 1/5 BTC: 298.04% USD: 347.19% Current BTC: 120.39 Current USD (or USD value): $16214.89
Profit for 2013 1/5 to 1/6 BTC: 20.91% USD: 12.87% Current BTC: 138.96 Current USD (or USD value): $18101.58
Profit for 2013 1/6 to 1/7 BTC: 3.14% USD: -24.45% Current BTC: 142.83 Current USD (or USD value): $14064.31
Profit for 2013 1/7 to 1/8 BTC: 14.15% USD: 5.45% Current BTC: 158.08 Current USD (or USD value): $14401.22
Profit for 2013 1/8 to 1/9 BTC: -9.83% USD: 39.18% Current BTC: 0.00 Final USD (or USD value): $20123.80

A detailed outline of current bot features (changes compared to the original Chrome plugin) is given in the changelog:

Code: (README.md)
Hermes changelog
================
1.0
- Initial version of Hermes, evolved from the existing Mt. Gox EMA trading bot
- Completely changed the trading algorithm from the free EMA trading bot: introduced the PPO indicator and various new conditionals
  (see the Options page of the plugin for an explanation of the algorithm)
- Trade ONLY on signal triggers
- Pop-up includes all additional indicator data and marks where buy/sell signals occur
- Global sample interval time-shift to allow sampling on irregular time points (e.g. 2 minutes before every full hour)
- Simulation mode, showing virtual BTC/Fiat when trading is disabled.
- 3 default parameter profiles (low-frequency, neutral and high-frequency), based on back-tested results (see HermesTestSuite /data/results.txt file)
- Fixed sampling from the exchange to 5 seconds past the full minute (if no trade was yet made, retry every 15 seconds) to allow for faster reacting to trading signals
- Removed option to start the bot in active trading mode (for safety)
- Removed chart (never had any use for it, clarkmoody/bitcoinwisdom/bitcoincharts does the job much better)
- Removed sample-based trading conditional (superseded by EMA confirmations)
- Fixed bug where an API request returning an error would crash the bot
- Many more small changes

Here's a screenshot of how the bot dashboard and pop-up with data currently looks like (some options have been censored as I'd like to keep at least a few things secret Cheesy):

https://i.imgur.com/6j5ZcOB.png


Acquiring the bot
The trading bot is a Chrome plugin with all Javascript unobfuscated and verifiable. I am selling the bot for the BTC equivalent of $200 (based on bitcoinaverage.com). It also includes an updated test suite with the completed algorithm. I've tried to be as transparent as possible in this post. The math, data and profit values can all be verified (although I'd like to keep at least part of the final algorithm a secret). So if you trust the math I've presented and are interested in the bot, please PM me or send an email to hermes.trading.bot at gmail dot com. Since I am pretty much a newbie to the forums and still need to prove some trustworthiness, if the first couple of buyers want to use some kind of escrow this is fine by me, I will pay for any fees incurred.

The bot is still being actively developed. I have a number of useful features in mind, and I am open to feature requests. Purchasing the bot will give you every update that I will make in the future - there will never be any extra costs. The current most important features on the TODO list:

- Add Bitstamp support. This is first on my list, as currently the bot can only trade on Mt. Gox, and I know a lot of people are a bit wary about trading on there.
- Add some way of using limit orders rather than market orders. This will eliminate the slippage loss, but carries the risk of orders not being filled. I'm thinking of having a slider to put a bid/ask anywhere between the current bid/ask spread, and updating it every x minutes if not everything has been sold/bought yet.

In closing
Sorry for the wall of text. Or perhaps I haven't given enough info. I'm not sure if I explained everything properly. Just trying to be transparent and show that there is solid, verifiable math behind this bot, and not be immediately written off as a scam. Let me know if you have any further questions, and feel free to challenge my methods or suggest improvements to it.


TL;DR: Selling highly profitable bot for the BTC equivalent of $200. Potentially 10x more profitable than EMA trading. PM or email if interested!
Jump to: