A few thoughts - Wednesday, July 30, 2014
Posted: Wed Jul 30, 2014 5:35 pm
Good afternoon! A few thoughts for lunch today:
Strange timing
I did some calculations on the length of the last bubble, and determined that it lasted 181 days, about 53 days shorter than the previous two bubbles. While shorter than expected, /u/moral_agent's charts have shown that there is a slight variability in the length of bubbles, especially in the early days.
If you make an assumption that the current bubble will be the same length (and given that the chart broke there is no evidence to support any particular length), then you end up with the next bubble peaking on the exact same day it did last year, November 30. Until we have a good model to make predictions, this means very little.
I looked up the history of the August 2012 false bubble, and found that the initial decline was about 50%, and then the price stabilized at about 65% of the high. If this bubble behaves like that cycle, then the bottom will be at $340, stabilizing at $460 for months until the next bubble.
Stepladder continues downward
I continue to remain bearish and believe the price will continue to step downward in a stepladder every few days. The recent pattern has been sharp drops over the course of an hour, followed by a recovery of maybe half the losses that lasts for days, and then another sharp drop that wipes out those gains and sets a new floor. This pattern has recurred at least three times and there is no reason to expect that it will stop.
It will be interesting to see how much speculation there actually is in the market, as most of the speculators leave over the next few months. The market is clearly supported by a number of legitimate and illegitimate uses, so there is a floor that will be hit where the demand is for actual usage of bitcoin, rather than for investing in the future.
To get an idea of what this demand might be, I looked at the "transaction volume in USD" chart to see when the amount of value flowing across the network was equal to what is is now. Interestingly, the volume has fallen back almost exactly to where it was in mid-May, when prices were $450-$500. If the threads on bitcointalk are correct about transaction volume being correlated to price, then this expected value correlates well with what happened after the August 2012 false bubble, as explained in the previous section.
/r/bitcoinmarkets introduces new rules
/r/bitcoinmarkets introduced new rules detailing expected behavior and punishments for deviating from the behavior. The most important part of the rules are that users who violate them will be banned (not just censored). So far, the moderators of the forum seem to be stepping up and taking a more aggressive approach, which is a step in the right direction. However, the entire rulebook hasn't been tested yet.
The troubling part of these rules is that these same penalties apply to both the user making attacks, and the user who is defending himself against attacks. This sounds like schoolyard bullying, or hockey fights, where the second person to fight back takes more heat than the person at fault.
A better choice of rules would have been to ban the person who makes the attack, and then simply delete both the attack post and the defense post, without banning the defense poster. The bitcoinmarkets rules now encourage people to make false allegations, be banned, and come back with a new account and repost them. People acting in bad faith can create as many accounts as they would like, whereas people attempting to correct what is being said will be banned, and are not willing to break the rules to return.
I still am thinking about a rule #2, which tackles the problem a different way. /u/testname33 has assumed that all posts are equal, but that isn't true. In most cases, people are just voicing opinions, and those opinions are neither right nor wrong. However, there are sometimes basic facts that are correct, and people who dispute them are lying. The bitcoinmarkets rules do not make a distinction for factual posts, which allows people to present inaccurate information in a polite way. I think that, being a place for more intelligent discussion than /r/bitcoin, /r/bitcoinmarkets could have raised the bar by requiring posters to provide sources if asked. We have the opportunity to do that here. The point of posting is to be exposed to others' points of view and to learn more, but if people aren't posting the truth, then everyone's experience is degraded because they are actually believing wrong information.
Bitpay offers free service
Today, Bitpay announced that its service will now be free. They will continue to offer "premium" services to businesses at an additional charge.
While this seems like good news at first, I can't help but wonder about the timing of the announcement. If their previous business model were working well, then they would obviously not change it. The fact that they changed means that they saw some reason to do so, and one might worry that the reason is the declining transaction volume. They will take a hit to their bottom line with this new policy, so they didn't do it out of kindness to everyone.
The rate of merchant adoption slowing down would be an obvious reason that they would make this change, in the hopes of restoring previous growth. Bitcoin has always enjoyed an increasing rate of adoption, and while rumors are not enough to make decisions on, smart investors might read between the lines on this one.
Existing code is not thread safe
I read yesterday that the Scrypt Guild, a mining pool that was in some ways a direct competitor (but which did not have all features) to our upcoming pool, will be shutting down just around the time we ramp up testing. When asked for a reason for the shutdown, the owner stated that he would have had to rewrite the pool's code to be up to the level of quality a pool requires.
This brings up an interesting point that I mentioned before, but not in depth. I discussed that the reason many bitcoin projects fail is because the supporting open source code is of extremely poor quality and is poorly documented. While there are many obvious issues with all the code, the most significant is that none of the open source mining pool software packages I reviewed is thread safe.
A lack of thread safety in these programs results in difficult to locate bugs, like rejected shares, disconnections, and lost revenue. Unlike most bugs, where you can put in breakpoints and log statements to figure out what's happening, networking code can have variables change out from under you in the middle of seemingly unimportant operations. For example, if you record the buy price and the sell price of a coin in a table, and write the buy price first, then if a trade occurs on the exchange and you receive the new data between the two prices being written, you could end up with the sell price being higher than the buy price, a nonsensical situation.
While your code would logically be interpreted like this:
1. Buy and sell prices are stored in memory from some previous network message
2. Write buy price to disk
3. Write sell price to disk
what actually happens is this:
1. Buy and sell prices are stored in memory from some previous network message
2. Write old buy price to disk
3. A new buy and sell price are stored in memory from a new network message, overwriting the previous values
4. Write new sell price to disk
If you didn't know this issue could happen, then you wouldn't even know to test for it. Worse, the data would only be incorrect for small fractions of the time, because this issue would occur infrequently, and in most cases the price doesn't change much between trades, making it almost impossible to reproduce.
Other
Strange timing
I did some calculations on the length of the last bubble, and determined that it lasted 181 days, about 53 days shorter than the previous two bubbles. While shorter than expected, /u/moral_agent's charts have shown that there is a slight variability in the length of bubbles, especially in the early days.
If you make an assumption that the current bubble will be the same length (and given that the chart broke there is no evidence to support any particular length), then you end up with the next bubble peaking on the exact same day it did last year, November 30. Until we have a good model to make predictions, this means very little.
I looked up the history of the August 2012 false bubble, and found that the initial decline was about 50%, and then the price stabilized at about 65% of the high. If this bubble behaves like that cycle, then the bottom will be at $340, stabilizing at $460 for months until the next bubble.
Stepladder continues downward
I continue to remain bearish and believe the price will continue to step downward in a stepladder every few days. The recent pattern has been sharp drops over the course of an hour, followed by a recovery of maybe half the losses that lasts for days, and then another sharp drop that wipes out those gains and sets a new floor. This pattern has recurred at least three times and there is no reason to expect that it will stop.
It will be interesting to see how much speculation there actually is in the market, as most of the speculators leave over the next few months. The market is clearly supported by a number of legitimate and illegitimate uses, so there is a floor that will be hit where the demand is for actual usage of bitcoin, rather than for investing in the future.
To get an idea of what this demand might be, I looked at the "transaction volume in USD" chart to see when the amount of value flowing across the network was equal to what is is now. Interestingly, the volume has fallen back almost exactly to where it was in mid-May, when prices were $450-$500. If the threads on bitcointalk are correct about transaction volume being correlated to price, then this expected value correlates well with what happened after the August 2012 false bubble, as explained in the previous section.
/r/bitcoinmarkets introduces new rules
/r/bitcoinmarkets introduced new rules detailing expected behavior and punishments for deviating from the behavior. The most important part of the rules are that users who violate them will be banned (not just censored). So far, the moderators of the forum seem to be stepping up and taking a more aggressive approach, which is a step in the right direction. However, the entire rulebook hasn't been tested yet.
The troubling part of these rules is that these same penalties apply to both the user making attacks, and the user who is defending himself against attacks. This sounds like schoolyard bullying, or hockey fights, where the second person to fight back takes more heat than the person at fault.
A better choice of rules would have been to ban the person who makes the attack, and then simply delete both the attack post and the defense post, without banning the defense poster. The bitcoinmarkets rules now encourage people to make false allegations, be banned, and come back with a new account and repost them. People acting in bad faith can create as many accounts as they would like, whereas people attempting to correct what is being said will be banned, and are not willing to break the rules to return.
I still am thinking about a rule #2, which tackles the problem a different way. /u/testname33 has assumed that all posts are equal, but that isn't true. In most cases, people are just voicing opinions, and those opinions are neither right nor wrong. However, there are sometimes basic facts that are correct, and people who dispute them are lying. The bitcoinmarkets rules do not make a distinction for factual posts, which allows people to present inaccurate information in a polite way. I think that, being a place for more intelligent discussion than /r/bitcoin, /r/bitcoinmarkets could have raised the bar by requiring posters to provide sources if asked. We have the opportunity to do that here. The point of posting is to be exposed to others' points of view and to learn more, but if people aren't posting the truth, then everyone's experience is degraded because they are actually believing wrong information.
Bitpay offers free service
Today, Bitpay announced that its service will now be free. They will continue to offer "premium" services to businesses at an additional charge.
While this seems like good news at first, I can't help but wonder about the timing of the announcement. If their previous business model were working well, then they would obviously not change it. The fact that they changed means that they saw some reason to do so, and one might worry that the reason is the declining transaction volume. They will take a hit to their bottom line with this new policy, so they didn't do it out of kindness to everyone.
The rate of merchant adoption slowing down would be an obvious reason that they would make this change, in the hopes of restoring previous growth. Bitcoin has always enjoyed an increasing rate of adoption, and while rumors are not enough to make decisions on, smart investors might read between the lines on this one.
Existing code is not thread safe
I read yesterday that the Scrypt Guild, a mining pool that was in some ways a direct competitor (but which did not have all features) to our upcoming pool, will be shutting down just around the time we ramp up testing. When asked for a reason for the shutdown, the owner stated that he would have had to rewrite the pool's code to be up to the level of quality a pool requires.
This brings up an interesting point that I mentioned before, but not in depth. I discussed that the reason many bitcoin projects fail is because the supporting open source code is of extremely poor quality and is poorly documented. While there are many obvious issues with all the code, the most significant is that none of the open source mining pool software packages I reviewed is thread safe.
A lack of thread safety in these programs results in difficult to locate bugs, like rejected shares, disconnections, and lost revenue. Unlike most bugs, where you can put in breakpoints and log statements to figure out what's happening, networking code can have variables change out from under you in the middle of seemingly unimportant operations. For example, if you record the buy price and the sell price of a coin in a table, and write the buy price first, then if a trade occurs on the exchange and you receive the new data between the two prices being written, you could end up with the sell price being higher than the buy price, a nonsensical situation.
While your code would logically be interpreted like this:
1. Buy and sell prices are stored in memory from some previous network message
2. Write buy price to disk
3. Write sell price to disk
what actually happens is this:
1. Buy and sell prices are stored in memory from some previous network message
2. Write old buy price to disk
3. A new buy and sell price are stored in memory from a new network message, overwriting the previous values
4. Write new sell price to disk
If you didn't know this issue could happen, then you wouldn't even know to test for it. Worse, the data would only be incorrect for small fractions of the time, because this issue would occur infrequently, and in most cases the price doesn't change much between trades, making it almost impossible to reproduce.
Other
- I may decrease my writing frequency from the usual six posts per week to four or five, in order to increase the amount of time I have for the mining pool to get it launched as soon as possible. This is a race to make as much money as we can before we have to ban customers in New York. I'm hoping that someone else might be willing to write one or two posts per week to keep people just as interested.