I want to know how I can calculate the profit of bitcoin mining in bitcoins. I am interested in the formula that is used by calculators. For example lets say I have 700mh/s hashrate, current difficulty is 908350862,437. The calculator says I will mine 0.00038755 BTC per day. What algorithm is used to calculate these figures?
I want to give an extended answer as I found the pre-existing here or elsewhere in need of a bit more clarification, specifically for newcomers.
In order to calculate the approximated total bitcoin earnings value per month from a mining operation (not taking into consideration mining costs [electricity, hardware maintenance etc...]) the following formula can be used:
H = Hashrate (hashes / second) D = Difficulty (Reference for values below) B = Reward per Block (Reference for value below) N = Number of days per month (default = 30) S = Number of seconds per day (S = 60 * 60 * 24 = 86400)
H = 21,990,232,555,520 h/s (~= 20TH/s) D = 47,427,554,950.648 B = 25 N = 30 S = 86400
The total number of bitcoins earned per month as per the defined variables above will be ~6.995. Dismiss
N from the numerator and you'll get the daily value.
A quick python statement as an example implementation (you can type this directly in the terminal)
$ python -c "print (30*21990232555520*25*86400)/(47427554950.648*2**32)" $ 6.99542703277
Reward per Block (Current and Future values)
The average time to find a block can be approximated by calculating:
time = difficulty * 2**32 / hashrate
Where difficulty is the current difficulty, hashrate is the number of hashes your miner calculates per second, and time is the average in seconds between the blocks you find.