Avoid selling tokens on Wednesdays, Thursdays and Saturdays
Avoid at all costs selling tokens between day 11-26 in the month
Fridays have historically been the best weekday to sell
Sell tokens at months end/transitions (29,30,31 or 1, 2 of next month), preferably on a Friday in one of these days
The data is collected from Bitstamp ETH/USD pair and every price point is the price at the daily close.

It’s quite noteworthy that with 93 months of historical data, there are still 4 dates that have still not had a monthly high daily candlestick. Additionally, 13 dates have only had 2 or fewer candles.
In order to get a bit more data points, I’ve compiled the 3 highest daily closes per months instead with the intent to depict the Ebb and Flow of capital over the course of the months.

The trend can be further interpreted with more data points, and it seems even more clear that the period of day 11-27 are really weak. Selling on any of those days and you have a minimal chance of selling in any of the better days of the month.
With more data points in figure 2, it’s also more evident that it’s not just day 1 in the month that is strong, but also a few additional early days of the month.
This concludes that you have the best likelihood to sell in the top 10% of the monthly price performance if you sell in any of the following days 1,2 or 29,30,31.
Historically there have been an interesting dynamic with intraweek prices in crypto. Since the trading is 24/7, but due to banks being closed on weekdays, there are limited ways new money can hit the market during the weekend. Which leads to the situation where there is no hinder for sell pressure, but buy pressure is crippled.
I thought it would be interesting to see this dynamic:

Friday is clearly the champ, but Tuesday is not far off.
I’m a bit surprised that the weekend days have historical hold up pretty well. From personal observations over the years, I’ve recognized that if prices are a bit suppressed (or extended) during the weekend it often doesn’t mean much for the closing price as a “battle” of bulls and bears often occurs in the last hours leading up to the Sunday close which renders the intraday price action often irrelevant.
Thoughts:
All the data here are on the closing prices, but I do suspect there are intraday forces that could be considered for an even better selling strategy. Particularly for Fridays.
Most of the capital “whiplash” that is illustrated here is probably just due to monthly salaries in many countries hitting at the end of the and by the overall positive trend in crypto during the past decade (meaning more likely to have higher prices the further in the future you go).
Next post I will extrapolate over trend conditions (i.e moving averages) to find further input parameters for when to sell and intraday price tops
Code:
public class Main {
public static List<EntryLog> entries = new ArrayList<>();
public static void main(String[] args) {
initilaize();
List<EntryLog> month = new ArrayList<>();
for (int i = 0; i < entries.size(); i++) {
if (i + 1 >= entries.size()) break;
month.add(entries.get(i));
if (entries.get(i+1).month != month.get(0).month) {
month.sort((o1, o2) -> Double.compare(o2.price, o1.price));
EntryLog max0 = month.get(0);
EntryLog max1 = month.get(1);
EntryLog max2 = month.get(2);
System.out.println(max0.year + "-" + max0.month + "-" + max0.day + ","+ max0.day + "," + max0.weekDay);
System.out.println(max1.year + "-" + max1.month + "-" + max1.day + ","+ max1.day + "," + max1.weekDay);
System.out.println(max2.year + "-" + max2.month + "-" + max2.day + ","+ max2.day + "," + max2.weekDay);
month.clear();
}
}
}
private static class EntryLog {
int unix;
int year;
int month;
int day;
int weekDay;
double price;
LocalDateTime ldt;
public EntryLog (int unix, double price) {
this.unix = unix;
this.price = price;
Instant instant = Instant.ofEpochSecond(unix);
ldt = LocalDateTime.ofInstant(instant, ZoneId.of("UTC"));
year = ldt.getYear();
month = ldt.getMonth().getValue();
day = ldt.getDayOfMonth();
weekDay = ldt.getDayOfWeek().getValue();
}
}
private static void initilaize()
{
// entries.add(.....
}
}
