Hello fellow Canadian Bitcoiners!
I'm Francis Pouliot, CEO and founder of Bull Bitcoin (previously known as Bitcoin Outlet) and Bylls.
I haven't been active on Reddit for a while but I thought I'd pop back here to let the community know about our new dollar-cost averaging feature, "Recurring Buy"
This post is a copy of my most recent medium article which you can read here if you want to see the screenshots. https://medium.com/bull-bitcoin/bull-bitcoins-dollar-cost-averaging-tool-for-canadians-the-right-time-to-buy-bitcoin-is-every-day-82a992ca22c1
Thanks in advance for any feedback and suggestions!
[Post starts here]
The Bull Bitcoin team is constantly trying to reduce the frictions ordinary people face when investing in Bitcoin and propose innovative features which ensure our users follow Bitcoin best practices and minimize their risks.
We are particularly excited and proud about our latest feature: an automated Bitcoin dollar-cost averaging tool which we dubbed “Recurring Buy”.
The Recurring Buy feature lets Bull Bitcoin users create an automated schedule that will buy Bitcoin every day using the funds in their account balance and send the Bitcoin directly to their Bitcoin wallet straight away.
We put a lot of thought in the implementation details and striking the right trade-offs for a simple and elegant solution. Our hope is that it will become a standard other Bitcoin exchanges will emulate for the benefit of their users. This standard will certainly evolve over time as we accumulate feedback and operational experience.
In this article, I cover:
The problem that we are trying to solve
Recurring Buy feature details, processes and instructions
The rationale (and tradeoffs) behind the main feature design choices
Bull Bitcoin is only available to Canadians, but non-Canadians that wish to have a look at how it works are welcome to make a Bull Bitcoin account and check out how it works here. You will be able to go through the process of create the schedule for testing purposes, but you wont be able to fund your account and actually purchase Bitcoin.
What problems does Dollar-Cost Averaging solve?
The most common concern of Bitcoin investors is, not surprisingly, “when is the right time to buy Bitcoin?”. Bitcoin is indeed a very volatile asset. A quick glance at a Bitcoin price chart shows there are without a doubt “worse times” and “better times” to invest in Bitcoin. But is that the same as the “right” time?
Gurus, analysts and journalists continuously offer their theories explaining what affects the Bitcoin price, supported by fancy trading charts and geopolitical analysis, further reinforcing the false notion that it is possible to predict the price of Bitcoin.
Newbies are constantly bombarded with mainstream media headlines of spectacular gains and devastating losses. For some, this grows into an irresistible temptation to get rich quick. Others become crippled with the fear of becoming “the sucker” on which early adopters dump their bags.
Veterans are haunted by past Bitcoin purchases which were quickly followed by a crash in the price. “I should have waited to buy the dip…”
Many Bitcoin veterans and long-term investors often shrug off the question of when is the right time to buy with the philosophy: “just hodl”. But even those holding until their death will recognize that buying more Bitcoin for the same price is a better outcome.
Given the very high daily volatility of Bitcoin, a hodler can find himself in many years having significantly less wealth just because he once bought Bitcoin on a Monday instead of a Wednesday. His options are either to leave it up to chance or make an attempt to “time the market” and “buy the dip”, which can turn into a stressful trading obsession, irrational decisions (which have a negative impact on budget, income and expenses) and severe psychological trauma. In addition, trying to “buy the dip” is often synonymous to keeping large amounts of fiat on an exchange to be ready for “when the time comes”.
There must be a better way.
Bitcoin investors should be rewarded for having understood Bitcoin’s long-term value proposition early on, for having taken the risk to invest accordingly and for having followed best practices. Not for being lucky.
Overview of features and rules
In this section I go into every detail of the Recurring Buy feature. In the following section, I focus on explaining why we chose this particular user experience.
The user first decides his target investment amount. Ideally, this is a monthly budget or yearly budget he allocates to investing in Bitcoin based on his projected income and expenses.
The user then chooses either the duration of the Recurring Buy schedule or the daily purchase amount. The longer the better.
The frequency is each day and cannot be modified.
The user must submit a Bitcoin address before activating a Recurring Buy schedule. By default, every transaction will be sent to that Bitcoin address. It’s the fallback address in case they don’t provide multiple addresses later.
Once the user has filled the form with target amount, the duration and the Bitcoin address, he can activate the Recurring Buy Schedule.
The user is not required to already have funds in his account balance to activate the schedule.
We will randomly select a time of day at which his transaction will be processed (every hour, so 24 possible times). If the user insists on another time of day, he can cancel his Recurring Buy schedule and try again.
The Recurring Buy feature as displayed on bullbitcoin.com/recurring-buys
The schedule is then displayed to the user, showing the time and date at which transactions that will take place in the future. The user will be able to see how long his current balance will last.
He can follow the progress of the dollar-cost averaging schedule, monitor in real time his average acquisition cost, and audit each transaction individually.
At this point, the user can and should change the Bitcoin address of his next transactions to avoid address re-use. Address re-use is not forbidden, but it is highly discouraged.
After having modified the Bitcoin addresses, there is nothing left for the user to do except watch the bitcoins appear in his Bitcoin wallet every day!
The Bitcoins are sent right away at the time of purchase.
Bitcoin transactions using the Recurring Buy feature will have the lowest possible Bitcoin network transaction fee to avoid creating upwards pressure on the fee market impact other network users.
What users see after first activating a schedule
The Recurring Buy schedule will be cancelled automatically at the time of the next purchase if the balance is insufficient. He can add more funds to his balance whenever he wants.
The Recurring Buy schedule will continue until the target amount is reached or until the account balance runs out.
The user can cancel his Recurring Buy schedule whenever he wants.
If the user wants to change the amount or duration of the schedule, he can simply cancel his current schedule and create a new one.
Each schedule has a unique identifier so that users can keep track of various schedules they perform over time.
Once a schedule is completed, either fully or partially, a summary will be provided which shows the number of transactions completed, the average acquisition cost, the total amount of Bitcoin purchase and the total amount of fiat spent. Useful for accounting!
A partially completed Recurring Buy schedule cancelled after 9 days due to insufficient funds
Though process in making our design choices
Recurring Bitcoin Purchases vs. Recurring Payment/Funding
The first and most important design choice was to separate the processes of funding the account balance with fiat (the payment) from the process of buying Bitcoin (the purchase). Users do not need to make a bank transaction every time they do a Bitcoin purchase. They first fund their account manually on their own terms, and the recurring purchases are debited from their pre-funded account balance.
Another approach would have been to automatically withdraw fiat from the user’s bank account (e.g. a direct debit or subscription billing) for each transaction (like our friends at Amber) or to instruct the user to set-up recurring payments to Bull Bitcoin from their bank account (like our friends at Bittr). The downside of these strategies is that they require numerous bank transactions which increases transaction fees and the likelihood of triggering fraud and compliance flags at the user’s bank. However, this does remove the user’s need to keep larger amounts of fiat on the exchange and reduces the friction of having to make manual bank payments.
Bull Bitcoin is currently working on a separate “Recurring Funding” feature that will automatically debit fiat from the user’s bank accounts using a separate recurring schedule with a minimum frequency of once a week, with a target of once every two weeks or once a month to match the user’s income frequency. This can, and will, be used in combination from the “Recurring Buy” feature, but both can be used separately.
The ultimate experience that we wish to achieve is that users will automatically set aside, each paycheck (two weeks), a small budget to invest in Bitcoin using the “Recurring Funding” feature which is sufficient to refill their account balance for the next two weeks of daily recurring purchases.
Frequency of transactions
The second important decision was about customizing the frequency of the schedule. We decided to make it “each day” only. This is specifically to ensure users have a large enough sample size and remain consistent which are the two key components to a successful dollar-cost averaging strategy.
A higher amount of recurring transactions (larger sample size) will result in the user’s average acquisition being closer to the actual average Bitcoin price over that period of time. Weekly or monthly recurring purchases can provide the same effectiveness if they are performed over a duration of time which is 7x longer (weekly) or 30x longer (monthly).
It is our belief that the longer the duration of the schedule, the more likely the user is to cancel the recurring buy schedule in order to “buy the dip”. Dollar-cost averaging is boring, and watching sats appear in the wallet every day is a good way to reduce the temptation of breaking the consistency.
We do not force this on users: they can still cancel the schedule if they want and go all-in. We consider it more of a gentle nudge in the right direction.
Frequency of withdrawals (one purchase = one bitcoin transaction)
This is one of the most interesting design choices because it is a trade-off between scalability (costs), privacy and custody. Ultimately, we decided that trust-minimization (no custody) and privacy were the most important at the expense of long-term scalability and costs.
Realistically, Bitcoin network fees are currently low and we expect them to remain low for the near future, although they will certainly increase massively over the long-term. One of the ways we mitigated this problem was to select the smallest possible transaction fee for transactions done in the context of Recurring Buy, separate from regular transaction fees on regular Bitcoin purchases (which, at Bull Bitcoin, are very generous).
Note: users must merge their UTXOs periodically to avoid being stuck with a large amount of small UTXOs in the future when fees become more expensive. This is what makes me most uncomfortable about our solution. I hope to also solve this problem, but it is ultimately something Bitcoin wallets need to address as well. Perhaps an automated tool in Bitcoin wallets which merges UTXOs periodically when the fees are low? Food for thought.
When transaction fees and scalability becomes a problem for us, it will have become a problem for all other small payments on the Bitcoin network, and we will use whatever solution is most appropriate at that time.
It is possible that Lightning Network ends up being the scalability solution, although currently it is logistically very difficult to perform automated payouts to users using Lightning, particularly recurring payouts, which require users to create Bolt11 invoices and to convince other peers in the network to open channels and fund channels with them for inbound capacity.
These are the general trade-offs:
Send a Bitcoin transaction for every purchase (what we do) - Most expensive for the exchange - Most expensive for the user (many UTXOs) - Increases Bitcoin Network UTXOs set - Inefficient usage of block space - Most private - Zero custody risk
Keep custody of the Bitcoin until the schedule is over or when the user requests a withdrawal (what Coinbase does) - No additional costs -No blockchain bloating - Same level of privacy - High custody risk
Batch user transactions together at fixed intervals (e.g. every day) - Slightly lower transaction costs for the exchange - Same costs for the user - Slightly more efficient use of block space - Same level of UTXO set bloating - Much lower level of privacy - Slightly higher custody risk
Single address vs multiple addresses vs HD keys (xpubs)
The final decision we had to make was preventing address re-use and allowing users to provide an HD key (xpub) rather than a Bitcoin address.
Address re-use generally decreases privacy because it becomes possible for third-party blockchain snoops to figure out that multiple Bitcoin transactions are going to the same user. But we must also consider that even transactions are sent to multiple addresses, particularly if they are small amounts, it is highly likely that the user will “merge” the coins into a single transaction when spending from his wallet. It is always possible for users to prevent this using Coinjoin, in which there is a large privacy gain in not re-using addresses compared to using a single address.
It is important to note that this does not decrease privacy compared to regular Bitcoin purchases on Bull Bitcoin outside of “Recurring Buy”. Whether a user has one transaction of $1000 going to a Bitcoin address or 10x$100 going that same Bitcoin address doesn’t reveal any new information about the user other than the fact he is likely using a dollar-cost averaging mechanism. It is rather a missed opportunity to gain more privacy.
Another smaller decision was whether or not we should ask the user to provide all his addresses upfront before being able to activate the schedule, which would completely remove the possibility of address re-use. We ultimately decided that because this process can take a very long time (imagine doing Recurring Buy every day for 365 days) it is better to let the user do this at his own pace, particularly because he may eventually change his Bitcoin wallet and forget to change the addresses in the schedule.
There are also various legitimate use-cases where users have no choice but to re-use the same address . A discussion for another day!
Asking the user to provide an XPUB is a great solution to address re-use. The exchange must dynamically derive a new Bitcoin address for the user at each transaction, which is not really a technical challenge. As far as I can tell, Bittr is the only Bitcoin exchange exchange which has implemented this technique. Kudos!
It is however important that the user doesn’t reuse this XPUB for anything else, otherwise the exchange can track his entire wallet balance and transaction history.
It is worth noting that not all wallets support HD keys or have HD keys by default (e.g. Bitcoin Core). So it is imperative that we offer the option to give Bitcoin addresses. We believe there is a lot of potential to create wallet coordination mechanisms between senders and recipients which would make this process a lot more streamlined.
In the future, we will certainly allow users to submit an XPUB instead of having to manually input a different address. But for now, we wanted to reduce the complexity to a minimum.
Conclusion: personal thoughts
I have a somewhat unique perspective on Bitcoin users due to the fact that I worked at the Bitcoin Embassy for almost 4 years. During this time, I had the opportunity to discuss face-to-face with thousands of Bitcoin investors. One of my favourite anecdotes is a nocoiner showing up at our office in December 2013 with a bag full of cash attempting to buy Bitcoin, “I know how to read a chart”, furious after being turned away. Many people who went “all-in” for short-term gains (usually altcoins) would show up to the Bitcoin Embassy office months later with heart-breaking stories.
This isn’t what I signed up for. My goal is to help people opt-out of fiat and, ultimately, to destroy the fiat currency system entirely.
This instilled in me a deep-rooted concern for gambling addiction and strong aversion to “trading”. I do not believe that Bitcoin exchanges should blindly follow “what the market dictates”. More often than not, what dictates the market is bad habits users formed because of the other Bitcoin services they used in the past, what other people are used to, and what feels familiar. Running a Bitcoin company should be inseparable from educating users on the best practices, and embedding these best practices into the user experience is the best way for them to learn.
Another important anecdote which motivated me to build a dollar-cost averaging tool is a person very close to me that had made the decision to buy Bitcoin, but was so stressed out about when was the right time to buy that they ended up not buying Bitcoin for a whole 6 months after funding their Bull Bitcoin account. That person eventually gave up and ultimately invested a large amount all at once. In hindsight, it turned out to be one of the worst possible times to invest in Bitcoin during that year.
Investing in Bitcoin can, and should be, a positive and rewarding experience.
Buying Bitcoin every day is the right strategy, but it is not necessarily lead to the best outcome.
The reality is that the best time to buy Bitcoin is at when market hits rock bottom (obviously). Sometimes, the upside from buying the dip can be much bigger than the risk (e.g. when the price dropped below $200 in 2015). But these are exceptions rather than the rule. And the cost of chasing dips is very high: stress, investing time and mental energy, and the very real psychological trauma which results from making bad trading decisions. Ultimately, it’s better to do the right thing than being lucky, but it’s not always a bad idea to cheat on your dollar-cost averaging from time to time if you can live with the costs and consequences.