A few weeks ago I wrote a post giving a back-of-the-envelope calculation regarding when the US would reach herd immunity to SARS-COV-2. As I pointed out repeatedly, this is only a rough estimate because it makes numerous simplifying assumptions and is based on numbers that have a lot of uncertainty around them. See that post for details.
That post was based on the assumption that 26 million Americans had been infected with the virus. I’ve heard other estimates of 50 million or 100 million.
Update: The CDC estimates that 83 million Americans were infected in 2020 alone. I don’t see that they’ve issued any updates to this figure, but everyone who has been infected in 2021 brings us closer to herd immunity.
The post was also based on the assumption that we’re vaccinating 1.3 million per day. A more recent estimate is 1.8 million per day. (Update: We’re at 2.7 million per day as of March 30, 2021.) So maybe my estimate was pessimistic. On the other hand, the estimate for the number of people with pre-existing immunity that I used may have been optimistic.
Because there is so much we don’t know, and because numbers are frequently being updated, I’ve written a little Python code to make all the assumptions explicit and easy to update. According to this calculation, we’re 45 days from herd immunity. (Update: We could be at herd immunity any time now, depending on how many people had pre-existing immunity.)
As I pointed out before, herd immunity is not a magical cutoff with an agreed-upon definition. I’m using a definition that was suggested a year ago. Viruses never  completely go away, so any cutoff is arbitrary.
Here’s the code. It’s Python, but you it would be trivial to port to any programming language. Just remove the underscores as thousands separators if your language doesn’t support them and change the comment marker if necessary.
US_population = 330_000_000 num_vaccinated = 50_500_000 # As of March 30, 2021 num_infected = 83_100_000 # As of January 1, 2021 vaccine_efficacy = 0.9 herd_immunity_portion = 0.70 # Some portion of the population had immunity to SARS-COV-2 # before the pandemic. I've seen estimates from 10% up to 60%. portion_pre_immune = 0.30 num_pre_immune = portion_pre_immune*US_population # Adjust for vaccines given to people who are already immune. portion_at_risk = 1.0 - (num_pre_immune + num_infected)/US_population num_new_vaccine_immune = num_vaccinated*vaccine_efficacy*portion_at_risk # Number immune at present num_immune = num_pre_immune + num_infected + num_new_vaccine_immune herd_immunity_target = herd_immunity_portion*US_population num_needed = herd_immunity_target - num_immune num_vaccines_per_day = 2_700_000 # As of March 30, 2021 num_new_immune_per_day = num_vaccines_per_day*portion_at_risk*vaccine_efficacy days_to_herd_immunity = num_needed / num_new_immune_per_day print(days_to_herd_immunity)
 One human virus has been eliminated. Smallpox was eradicated two centuries after the first modern vaccine.