Part Two of How Much can You make Mining ETH Now with Byzantium, modeling future predicted earnings and a Formula to answer your 'To Buy Coin or To Mine' Question
It's about 150 days into the mining operation now, so about time for an update and after posting this article last time 75 days in, titled: How Much can You Make Mining Ether and How much does it Cost to Run? A number of readers raised several very good points that should be mentioned and are interesting relative to mining in general, so worth while to explore.
The mining rig setup is 2 x Nvidia 1070 GTX in a pre-existing computer, overclocked and running about 57-60MH/s, Some quick figures on the mining rig's results so far, 150 days in:
- 1.9540081437795 ETH has been paid out in total.
- The rig has consumed 1357 KWh of electricity for a total cost of approx $117 CAD + Tax.
- The present Net Profit if we were to liquidate all mined ETH at today's price of $400 CAD would be $660 after electricity costs, which is about the same price of one of the 1070's, at this point one card is paid for at this price of ETH.
Let's begin with Byzantium, the Ethereum Network update, something I hadn't taken into account in my previous model and analysis, it was going to impact the earnings rate of all miners, you can check out the github EIPs here. I would explain what Byzantium is, but instead I want to paste a comment from a reader from the previous post, pspsully who not only explained the update perfectly but also nailed the block time change.
on September 4, 2017 at 2:38 PM pspsully wrote:
"Nice read but you don't seem to be very up to speed with what is coming RE the difficulty. Difficulty is rising exponentially right now due to Ice Age or the 'Difficulty Bomb'. Yes, the blocks are 24.5 secs now and will increase to about 31 secs on September 24th.
What you haven't taken into consideration is that when Metropolis Byzantium is released (they are aiming for Sept 24th but likely it will be in late October), the difficulty bomb will be delayed by 1.5 years. This means block times will return back to 14secs however they will reduce issuance to 3 ETH instead of 5 ETH. This still means that after that update, we will earn slightly more ETH than we do right now - 5 ETH at 24.5sec = 12.24 ETH per min compared to 3 ETH at 14sec = 12.85 ETH per min or a 5% increase.
Once this happens, the difficulty charts you are looking at won't really matter, the only thing that will effect mining difficulty will be Network Hashrate which should pretty much then equate to block difficulty. This will likely continue to rise at a rate of 15% - 20% per month that we have seen in August and September but may climb a bit more if the price shoots up like expected after the Issuance Reduction.
A decrease in earnings of 15% - 20% per month is significantly better than what you have predicted in your models :)"
Take a look at the Ethereum Average Block Time Chart below, the block time goes from 30 to 13.8, exactly as pspsully suggested it would, ~14 seconds.
Another reader over on Reddit, /u/netok, also mentioned he thought the prediction curve shouldn't have been exponential - I would actually agree with that now that we are 150 days in, and ~75 days since the last analysis, there is more data and we can compare how the model did against reality and see exactly how Byznatium changed things up.
Mentioned in the EIPs on the Ethereum Github is that the block difficulty growth will go to the average, which is basically where it was back in August, as you can see it did in the below chart.
A number of other readers over on ycombinator also mentioned that mining Ethereum can actually be considered two distinct acts:
- Mining Ethereum to sell and be profitable as a miner, which depends heavily on circumstance of cost and market price of ETH.
- Mining Ethereum to hold in speculation.
Naturally then, it follows that if you're mining Ethereum to hold in speculation of the future value being significant, you might want to do the quick math and check if the money you would spend on mining equipment and hardware wouldn't be better spent simply buying ETH straight up at the current price, or even staggering the purchases spread out over several instances, to try and take advantage of price averaging.
Now there's an Interesting Problem; Should I Start Mining Ether, or Just Buy Coins?
Think about first, how much ETH you can possibly mine in the given time period before Proof of Stake (call it C' ), then what you think the maximum price of ETH could be at that time (call it P' ), then consider how much ETH you could get today for the equivalent startup costs (call it Co ) and grow that amount of ETH by the same maximum rate you presumed for mining. Which one pays more?
I thought this was actually an interesting question, and figured there's probably some relationship where two lines intersect and you can say whether or not you should start mining, or just buy the coins straight up. So I started by writing down the relationships we know about, on the Just Buy Coins side:
Co = S / Po
- Co = The amount of ETH you can get Today.
- S = Startup cost and cost of electricity from now until PoS.
- Po = Current price of ETH in $.
Therefore, the Profit of Just Buying Coins ($b) in the future would simply be the number of coins you bought Co times the future price of ETH P'.
($b) = Co x P'
On the opposite side, the Setup Mining Rig side, your Profits from Setting up a Mining Rig ($m) would be equal to the future price of ETH ( P' ) times ( C' ) the number of coins you would mine between now and Proof of Stake.
As we know, the number of coins you'll be able to mine ( C' ) will be a function of how much you invest in the rig, GPUs, power, times some linear constant factor ( K ). Where K, is the relationship we would discover between how much you spend on startup costs, GPUs and electricity over the time it takes Proof of Stake to deploy, and how many coins you can mine in that same period with that equipment, which itself is a function of (as others pointed out) network hash-rate and block difficulty. So we'll just call it K for now to keep things simple and that factor can be computed separately.
Now we actually have one equation we can express in terms of the other, and thus allow us to demonstrate the relationship between when you should mine, vs when you should just buy coins.
C' = K x S
($m) = C' x P'
Re-arranging both 'buy' and 'mine' sides for P'
[($b)/Co] = [($m)/C']
Now, express Co and C' as their original forms
[(($b)Po)/S] = [($m)/(KS)]
S can be removed from both sides and the K can come over to the other side
[($b)PoK] = ($m)
Finally, re-arranging as a ratio between mining profit and buying profit
[PoK] = ($m) / ($b)
[(PoC')/S] = ($m) / ($b)
So we learn that whether you should buy coins now, or setup a mining rig really comes down to only 2 things, Po the current price of ETH, and the constant factor K, where if this evaluates to greater than one ( >1) you should mine. If the ratio is less than one (<1) you should just buy.
What is my K-value? This answer will depend on things we don't yet know, like the release date of Casper and Constantinople, but, for the sake of demonstration we can assume it might be another 18 months before we can't mine anymore completely. It took 150 days to mine 2 ETH, since we have no idea how the future difficulty will behave, we could just use the past average and understand that there will be some play in the results of this formula, that's ok, it's just a demo. We might expect to mine an additional 5 more ETH total over the next year-and-a-half, bringing the total mined ETH to 7.
Using the equation C' = K x S, my C' = 7. S is my startup+power cost, which I estimate will be a total of $2500 when it's all said and done, ($1400 for 2 GPUs, $600 for "everything else", $500 on power over nearly 2 years total of mining).
This means my K value is somewhere around 0.0028. Plugging that into my equation [(PoC')/S] = ($m) / ($b) $400 x 0.0028 = 1.12. Which is a result greater than 1.0, which means mining is better.
I can actually rework the equation to instead calculate how many ETH I will need to mine before Casper in order for this to be worth it to mine and not just buy and hodl. The flipside of this is that the equation only requires you to know the current price of ETH ($400 CAD today) and your startup cost, and how many ETH you should expect to mine before Casper.
I want to repeat this formula except now let's find what amount of ETH is the minimum I should be able to mine before it crosses the line, so I do 1.0 / $400 = 0.0025, and my cost will be $2500, multiply those two together and we get = 6.25. So, I need mine at least another 4.25 coins between now and Casper.
But there's one more thing to try, When I began mining, the price of ETH was at an ATH, ~$520 CAD, so let's use the 6.25 as C', and $520 as Po;
[(PoC')/S] = ($m) / ($b) ($520*6.25/2500) = 1.3
So yes, even back then it was the right decision to start mining.
Essentially, I think in reality it comes down to your startup and power cost, mine were both relatively low.
Getting back to the Byzantium fork, let's talk about the prediction model and the results of what was predicted compared to what actually occurred. The last payout made before my prediction model was August 29, and the model was calling for the next two payouts to occur 22.28 days after, followed by a second predicted payout 29.11 days after. In reality, what actually occurred was the first 'post-model' payout came at 21.37 days (4.3% off), and the second at 27.81 days (4.7% off). Not far off at all, but then, as you can see in the graph below, Byzantium happened, and changed the course of payouts and rewards.
From here on out, we're going to wait for a few more payouts and then remodel the curve given the expectation that this time the growth rate would be linear for the next year and a half potentially.
Sometimes, when you're trying to predict the outcome of something, it can be helpful to go right back to the fundamental question, What are we Trying to Predict? In this case, we wanted to know when we could expect future payouts of ~0.20 ETH, so we modeled Days between subsequent payouts, which is a data proxy that is much simpler and more reliable to model than a complex polynomial multi-variable function of factors such as Total Ethereum Network Hashrate and Block-chain Difficulty to name a few, - which can be done, but it's not necessary. When you zoom out and model metadata, things become a little more clear as it lets you see past the noise.
The result we got of 4.3% and 4.7% away from the exact date/time of the predicted payouts actually occurred, is a good confirmation. But a healthy skeptic might point out that six points and two predictions doesn't exactly provide statistically significant evidence that my model is perfect. I'm not sure that would pass a Z-test. You might also notice that the error between predictions is growing, and most likely is of an exponential error form, which means that had we gone to the next predicted data point, the model could've been even further off, maybe more than 5%.
On the other hand, with the Ethereum Byzantium difficulty reset that took place at 5:22 AM on October 16, 2017, the last payout received nearest to deployment was 95% of the way earned to 0.2 ETH, meaning the last point should've taken a lot more time than had BZ not deployed, so perhaps my model actually would've been more accurate. The point is, arguments can be made for both sides, but all that really matters in the end is what actually happened. That's the reason why, when doing analysis and prediction, choice of language in voicing and describing the problem and solution is of critical importance. The phrasing of the result and how it can bias your audience is something to always bear in mind. For example: I can describe this result as "4.3% Error" or "Less than 5% Error" or "More than 95% Accurate". - They're all the same number, just different voicings that affect how much we trust a result.
If you've subscribed to this blog, you probably noticed the recent exploration into Python and Machine Learning, This would be an excellent opportunity to bridge the gap, where I used a traditional method of data prediction for this example, I am also learning how to use the code required to compute the same model and predictions with Artificial Intelligence to predict the outcome. Now we have a dataset, with a real problem worth testing, and an opportunity to benchmark a machine learning algorithm against myself.
My results are up on the board, 95% accuracy in predicting two future points of Eth-mining payouts based on six known points. Check back in some number of days for a new post titled: The Machine Learning model in Python to predict Ethereum Mining Payouts.