The Best Time to Post on Steemit

in #steemit8 years ago

I have collected some data from the blockchain to try and answer the question: what time of day should you post?

We all want to maximize our rewards on Steemit. The best way to do so is to improve the quality of our writing, pick new/interesting/underrepresented topics, and be creative. But there may be another factor at play: the time of posting.


"time" by bigbirdz on flickr (CC-BY)

It seems obvious that publishing your post at 4 am in the morning will not yield a lot of exposure, and thus, result in fewer votes. The ideal time of posting varies wildly between different web sites, as it depends on the user demographic.

Thanks to the open nature of Steem, we can get a list of all posts ever made, the time they were posted, and the rewards they got, all in a computer-readable format. This data can be used for a statistical analysis of our question. Let's do it!

My theory

I would expect the majority of Steem users are living in America or Europe. The prime time is likely in the evening, as that is when most people will come home from work / school / other commitments.

If you are aiming for the front page, you may want to post a few hours earlier than prime time, to account for the time it takes for your post to gain steam (no pun intended) and reach the front page. You want to be already on the front page when the rush hour starts.

Based on these assumptions, I would guess the ideal publishing time to be around 6 PM Central Standard Time.

The script

Now let's get down and dirty with the blockchain. I quickly hacked together the following python script. It is fairly simple and could be improved in a number of ways. Interestingly I am using both piston and python-steem as there seems to be currently a bug in piston that prevented me from doing the stream_comments part with piston.

from piston.steem import Steem
from steemapi.steemnoderpc import SteemNodeRPC
from collections import Counter
from datetime import datetime

counter = Counter()
postcounter = Counter()

start_block = 3145790 # 2016-07-12

rpc = SteemNodeRPC("ws://localhost:8090")
steem = Steem(node="ws://localhost:8090", nobroadcast=True)

for c in rpc.stream("comment", start=start_block):
    if c["parent_author"]:
        continue # only interested in posts, not comments

    try:
        post = steem.get_content("@" + c["author"] + "/" + c["permlink"])
    except:
        continue

    dt = datetime.strptime(post.created, "%Y-%m-%dT%H:%M:%S")

    print("\n" + str(dt))

    payout = float(post.total_payout_value.split(" ")[0]) + float(post.pending_payout_value.split(" ")[0])

    counter[dt.hour] = counter[dt.hour] + payout
    postcounter[dt.hour] = postcounter[dt.hour] + 1

    for i in range(24):
        if postcounter[i]:
            print(str(counter[i] / float(postcounter[i])))
        else:
            print("0")

To run this script, you will need a local steemd node. When running steemd, disable standard output like this: ./steemd --rpc-endpoint &> /dev/null, else the log output will slow things down tremendously.

The script will print a list of numbers, that is the average payout value for posting at each hour of the day.

The result

Paste the numbers into LibreOffice and we get a nice graph.

This graph shows the average Steem Dollar payout per post (vertical axis) vs. the time of day these posts were published (horizontal axis, GMT).

As you can see, there is a clear trend showing that posts published between 22:00-23:00 GMT (17:00-18:00 CST) earn the most rewards.

Unfortunately the data set for this experiment was limited (2016-07-12 to 2016-07-19). I wanted to use a larger data set, but I was hitting connection reset errors on certain blocks that prevented me from doing this. I am unsure if the bug is in python-steem, steemd or somewhere else. If anyone can help me resolve this, please let me know. Steem is very new tech so there are some kinks left to be worked out!

Finally, note that correlation != causation! Take the numbers with a grain of salt. In germany we have a nice saying: traue keiner Statistik, die du nicht selbst gefälscht hast (Don't trust a statistic you didn't fake yourself) ;)

Sort:  
Loading...

Ironically, I published my post on the most unlucky time slot (0 am CST).

So we will see if there's any ground to my statements, based on the payout that this post will get. :)

I came to the same conclusion without the awesome data you presented. I feel like most of the Whales and Dolphins live on the East coast and are sleeping. My post I just put up mentioned this and it is stalling. Just glancing shows that we both put a lot of time into our posts. https://steemit.com/steem/@brianphobos/how-steemit-is-like-tinder-detailed-explanation-and-advice

Thanks for sharing this. I'm still working on the "gaining steam" part you mention...but posting at the right times couldn't hurt!

Would be cool to get an update on this post. Do the numbers still run the same. A lot more posting data available these days.

Makes sense as at this point most Steemit users are from US and that is the time most people get online after work. Good job putting the code together!

The only thing I am wondering now is why didn't you post this at 6 pm CST?

I asked myself the exact same thing after I hit publish! I guess I'm just impatient.

We will see if there's any ground to the statements in my article, based on the payout that it gets. Hehe.

Well this is a good post. I am sure you have a winner. This will break the time barrier. Good work. All the best.

Maybe he wants to have an even graph !? ;)

With this kind of post he may be able to achieve it too.

This is pretty awesome. Good info. I can imagine your next step being some kind of realtime website showing the stats as they happen. Thanks for sharing.

BTW why are you posting so early (GMT) where we see the least SD?

Yeah,that's near about when I posted my verification,and it exploded. So maybe you are right, but for me,waiting always the end of the day will be hard watching others doing good calls

Yeah, myself I couldn't be arsed to wait another 20 hours to post this. I guess I'm too impatient.

Good point, by waiting you always take a risk that someone else posts about the same thing first.

Any recommendation how I get started with steemd? I used to program until a decade and a half ago and need to catch up a bit. The piston/python I can figure out (I think). Thx.

These links helped me with setting up steemd:

https://steem.io/documentation/how-to-build/
https://steemit.com/steem/@tuck-fheman/how-to-mine-steem-in-windows

I came across an issue where steemd would report a parser error with multiple seed nodes in the config file, so I had to delete all but one.

I've been wanting to see this. Thanks!

Funny...I've been posting at around 11 PM Mountain time... which is 6 GMT...pretty bad. I'll try a different time tomorrow.
D

wow! nice!

Thank you! I think it is so because US users are more than 18% of all users.

Great stuff you really went out your way for this one

Thank you for detailed explanation.

thanks for the info, so i am thinking 6 pm CST is about 11 am Australia, seems for me the best times are between 9 and 11 am AEST. have you done a study on the best days to post?