Crypto market cap: evaluating realistic price points

It may be tempting for new cryptocurrency investors to buy “cheap” coins because they assume a price of $0.03, for example, can turn them into future millionaires just by HODL-ing until it hits $100. Unfortunately, this is a common misconception as that future price may never materialize. This perspective only considers the demand side of the equation and completely omits data about the supply side to realistically estimate future crypto prices. ...

August 13, 2021 · Christopher Yee

Messaribot: cryptocurrency charts for Discord

tl;dr Messaribot (code) is a very simple bot which plots cryptocurrency data to assigned Discord channels. This is written in Python, crytpo data is pulled from the Messari API, and relies on the discord.py API wrapper to publish the finished graphs. Overview Most of the interesting crypto discussions happen on Discord (or Telegram). However, looking up market prices can be a hassle when you need to switch back and forth between different desktop or mobile apps. ...

July 1, 2021 · Christopher Yee

Types of cryptocurrency mining

Context: I had a friend email me about cryptocurrency mining and thought my response was helpful enough to share over Instagram. This led to other friends asking me about the crypto space in general. To keep the spirit of it I have posted the same email below (with some edits). Cryptocurrencies rely on distributed public ledger technology where you need a network of computers (in this case miners) to validate all those transactions. Different cryptocurrencies use different types of consensus algorithms to carry out that validation work by solving complex mathematical puzzles. This ensures the integrity of all past, present, and future records on the blockchain. ...

May 29, 2021 · Christopher Yee

Whimsical Otter: generating project code names with R

I love assigning project code names. However, after a certain point the increase in projects decrease the amount of time I am able to commit to assigning a meaningful code name to each one. I needed something more scalable that I could quickly use and revisit later if the idea or prototype had any legs to stand on. Why spend all that time on something if it would never see the light of day? ...

May 24, 2021 · Christopher Yee

[Updated] US firearm sales in 2020

My original exploratory analysis on the topic can be found at Firearm Sales: How are Americans coping with 2020? This post is a quick #rstats follow-up to visualize the final tally for 2020 data. Load libraries library(tidyverse) library(lubridate) library(scales) Download & parse data df_raw <- read_csv("https://raw.githubusercontent.com/BuzzFeedNews/nics-firearm-background-checks/master/data/nics-firearm-background-checks.csv") df <- df_raw df_clean <- df %>% filter(month >= "2016-01" & month < "2021-01") %>% select(month, state, handgun, long_gun) %>% arrange((month)) %>% mutate(month = as.Date(paste0(month, "-01"))) %>% group_by(month) %>% summarize(handgun = sum(handgun), long_gun = sum(long_gun)) %>% mutate(index_month = as.factor(month(month, label = TRUE)), index_year = as.factor(year(month))) %>% ungroup() Visualize data df_clean %>% group_by(index_year) %>% mutate(handgun = cumsum(handgun), long_gun = cumsum(long_gun)) %>% ungroup() %>% select(month, index_month, index_year, handgun, long_gun) %>% pivot_longer(handgun:long_gun, names_to = "type") %>% ggplot(aes(index_month, value, color = index_year, group = index_year)) + geom_line() + geom_point() + scale_y_continuous(labels = comma_format()) + scale_color_brewer(palette = 'Paired') + expand_limits(y = 0) + facet_grid(type ~ .) + labs(color = NULL, x = NULL, y = NULL, title = "NICS Firearm Background Checks: monthly cumulative per year by type", caption = "by: @eeysirhc\nsource: Federal Bureau of Investigation") + theme_bw() + theme(legend.position = 'top') ...

March 5, 2021 · Christopher Yee

Visualizing FB spend: image vs video creative

Objective: plot the comparison of total Facebook spend between image and video creatives for a small sample of DTC brands. The original piece without any visualization (e.g. tabulated data) can be found here but the main takeaway: Though it can be tempting to go all in on video assets, I intend to use this data as added inspiration to continue investing in and testing Images. Load modules import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns sns.set(style='darkgrid') Encode data labels = ['brand', 'total_spend', 'pct_image_spend', 'image_cpa', 'pct_video_spend', 'video_cpa'] df = [['Brand 1', 1880000, 17, 773, 83, 805], ['Brand 2', 1630000, 57, 350, 44, 463], ['Brand 3', 1610000, 34, 179, 66, 188], ['Brand 4', 1300000, 12, 132, 88, 169], ['Brand 5', 1230000, 63, 46, 37, 40], ['Brand 6', 800000, 15, 22, 85, 24], ['Brand 7', 690000, 7, 120, 93, 127], ['Brand 8', 590000, 87, 18, 13, 28], ['Brand 9', 400000, 3, 47, 97, 0.63], ['Brand 10', 230000, 24, 48, 75, 114], ['Brand 11', 220000, 20, 25, 80, 21], ['Brand 12', 180000, 40, 57, 59, 51], ['Brand 13', 170000, 3, 47, 95, 59], ['Brand 14', 120000, 13, 17, 90, 13]] df = pd.DataFrame(df) df.columns = labels Define function We will use this simple method to categorize the brands and their different ad spend levels on Facebook. ...

February 10, 2021 · Christopher Yee

10 Lessons Learned from 10 Years of Search Marketing

July 2020 marked the 10 year anniversary for my blog. If you asked me a decade ago what I would be blogging about now my answer would be SEO. I never would have guessed it would shift to data science and data visualization topics. To end this chaotic year on a high note I want to share the top 10 things I learned over the course of my career in search engine marketing. I hope someone will find this useful regardless of industry and tenure in their field. ...

December 31, 2020 · Christopher Yee

2020 US Elections: calculating win thresholds

The 2020 US presidential election is coming down to the wire and I thought it would be fun to share how I calculate the answer to the following question: What is the distribution of the remaining ballots that Biden/Trump needs to win the electoral college votes for a given state? If we join this data point with Biden vs Trump mail-in ballot rates, or any other information for that matter, then it returns a fairly decent estimate on how thin/wide the margins will be for the US presidential race. ...

November 6, 2020 · Christopher Yee