1712n / challenge

Challenge Program
65 stars 27 forks source link

MarketCapBot - Automate posting on Twitter #86

Closed sofiasedlova closed 1 year ago

sofiasedlova commented 1 year ago

The goal of this challenge is to build a Python Twitter bot using GitHub Actions and MongoDB.

Required functionality

A Python function will compose and post a tweet with the latest values from MongoDB time series collections using the logic described below.

Algo

  1. query ohlcv_db for the top 100 pairs by compound volume
  2. query posts_db for the latest documents corresponding to those 100 pairs
  3. sort results by the oldest timestamp to find the pairs that haven't been posted for a while, then corresponding volume to find the biggest markets among them and select the pair_to_post
  4. compose message_to_post for the pair_to_post with corresponding latest volumes by market values from ohlcv_db using this example:
    Top Market Venues for BTC-USDC:
    Binance 30.10%
    Coinbase 20.20%
    Kraken 10.30%
    Bitstamp 5.40%
    Huobi 2.50%
    Others 31.5%
  5. keep similar tweets in one thread. if pair_to_post tweets already exists in posts_db, post tweet to the corresponding Twitter thread. else, post a new tweet.
  6. add your message_to_post to posts_db

Important notes

Find all other technical instructions here. Feel free to ask questions in the comment section below, or email challenge@blockshop.org. As soon as we get a good enough solution from a candidate, we start the interviewing process. If you are ready with your branch, create a pull request and assign it to us for review.

Vlhss commented 1 year ago

hey, do you have a discord account so that we can communicate somewhere about this project? I am interested

evgenydmitriev commented 1 year ago

Please email challenge@blockshop.org if you have questions that can't be resolved in the comments section of the issue.

Vlhss commented 1 year ago

is this like a challenge or as a job looking for a developer to hire? I am not looking for something that cant guarantee me money so I need to know before I start making this

sofiasedlova commented 1 year ago

@Vlhss we are always searching for talents! that's why we are feeding the challenge program community with interesting tasks. this challenge task is built in the hiring pipeline. read general rules to get more information on the pay-out.

jalmonter commented 1 year ago

Hey @sofiasedlova I'd like to give this a try. Can you please assign to me?

aleksandra1998e commented 1 year ago

Hey @sofiasedlova I'd like to give this a try too. I send my resume and a link to this challenge to email. So, I decide to write here too.

xksd commented 1 year ago

Hi @sofiasedlova, I would like to participate in this challenge. Just sent my CV to an email. Exciting task, can't wait to start!

kateusanova commented 1 year ago

Hi @sofiasedlova, I'd like to give it a try too. Just sent my CV and link to this challenge to email.

Saa4s commented 1 year ago

Hello @sofiasedlova, i wanna give this task a try, too!

p17m0 commented 1 year ago

i don't want to do it! I don't give this task a try!

ivan-gorin commented 1 year ago

Hi @sofiasedlova , what exactly does "top 100 pairs by compound volume" mean? Just sorting all documents by volume or should we aggregate by pairs first? Also, should we use all documents or only the most recent, for example the last hour?

ivan-gorin commented 1 year ago

Just sorting all documents by volume or should we aggregate by pairs first?

exactly

So, which approach is correct, the first one or the second one?

sofiasedlova commented 1 year ago

A reminder for all participants and others who still hesitate! Give this challenge a try, demonstrate your skills in the best light and get your deserved reward!

mirmozavr commented 1 year ago

A reminder for all participants and others who still hesitate! Give this challenge a try, demonstrate your skills in the best light and get your deserved reward!

What's the reward?

sofiasedlova commented 1 year ago

@mirmozavr find all information in the labels section and go through the general rules

DamirShamsutdinov commented 1 year ago

I want to try solve this case too

sofiasedlova commented 1 year ago

cool! to start send your resume and a link to this challenge to challenge-submission@blockshop.org. then we'll add you to collaborators and share all necessary credentials.

mlyaaana commented 1 year ago

Hi, @sofiasedlova, I'd like to give this a try too. I send my resume and a link to this challenge to email.

sofiasedlova commented 1 year ago

thanks everyone for submitting to this challenge! by the end of this week we'll announce the winner. this means that we are no longer adding new outside collaborators. however, our team is waiting for the last changes to the branches with solutions from the ones who have already got access.

sofiasedlova commented 1 year ago

Hey guys! It was a pleasure to see considerable attention to our Challenge Program and this Python task specifically.

Throughout this round, more than 60 users were added as outside collaborators, 30+ branches were created, 17 pull requests were reviewed. You have differently approached this problem using elegant aggregations, showing off OOP native style and unit tests.

Let me announce the winner of the challenge. The most pythonic solution was submitted by @eg-mart! šŸ§ 

BorisThereIs commented 1 year ago

My congratulations to the winner. Thanks for this challenge. I've learned some new things. It was useful experience. Best wishes to all participants )

eg-mart commented 1 year ago

Thank you for this interesting challenge! It was a pleasure to do, and the financial reward was quite a nice bonus) I really am looking forward to further cooperation with Inca Digital. I wish all other participants to keep trying and to succeed eventually!