Skip to main content

Client for www.microprediction.org turnkey community prediction

Project description

microprediction tests deploy

Looking for the microprediction client or hello world?

Lucky you!

Running this script makes a heck of a lot more economic sense than bitcoin mining - but few know that. There's an even gentler introduction taking the form of a colab notebook you can open and run now.

Me and my slacking

This was supposed to be the microprediction client page! Github made this a "user page". Grumble. Well, hi this is my dog. This is my blog. I've always worked in the private sector, though very occasionally publish. My book is out soon. I'm dynamic and fascinating. Not really but I run a slack channel for those interested in collective open-source time-series, covariance prediction, and optimization (here's the slack invite). Join the google meet Fri noon EST - see the slack. If the Slack invite requires an email domain, it has expired so DM me on Linked-In for a new one.

The TimeMachines, Precise, and HumpDay packages

I maintain three benchmarking packages to help me, and maybe you, surf the open-source wave.

Topic Package Elo ratings Methods Data sources
Univariate time-series timemachines Timeseries Elo ratings Most popular packages (list) microprediction streams
Global derivative-free optimization humpday Optimizer Elo ratings Most popular packages (list) A mix of classic and new objectives
Covariance, precision, correlation precise See notebooks See notebook Stocks, timeseries residuals etc

These packages aspire to advance online autonomous prediction in a small way, but also help me notice if anyone else does!

The microprediction.org streams ($50,000 in prediction prizes)

I also maintain a live exchange where distributional time-series prediction algorithms (Python, R, Julia mostly) duke it out.

  • I publish live data repeatedly, like this say, and it creates a stream (like this stream or this one or any from the listing).
  • Algorithms like this guy compete to make distributional predictions 1 min ahead, 5 min ahead, 15 min ahead and 1 hr ahead.

In this way I can:

  • Get live prediction of public data for free (sometimes I make the "public" data obscure)
  • Indirectly benefit from hundreds of packages from Github of uncertain quality, and not just Python.

I then sip pina coladas while the accuracy magically improves over time. Read about this example.

Wanna use it?

Knock yourself out. My company funds the platform because algorithms that help solve your problem might also help solve mine. The marginal cost of their doing so is tiny. There are even video instructions.

Wanna make it better?

On the flip side you can:

  • Contribute predictive intelligence, win beer money (see competitions) and then trash talk people in our slack channel. About $50,000 a year in prizes complements the scientific motivations.
  • Automatically benchmark your work or find unexpected uses to include in your next paper. You just need to know how to predict data streams, which amounts to modifying a Python script and running it.

It's up to you if you choose to reveal your code.

Microprediction Python client

pip install --upgrade pip
pip install microprediction

The client assists use of the microprediction api. If you don't know about the live algorithm frenzy at microprediction.org making this possible because you skipped down this page, did I mention that an extremely simple way to grok it is to open this colab notebook and run it on Google's dime? Why yes I did mention that. This will create an identity for you and enter your algorithm in an ongoing contest to predict the next roll of a die. You'll also be exactly half way to understanding the four critical pieces of functionality.

Task Method or function Full code example Video tutorial
A Create a write_key new_key enter_die_contest_one_off.py python-1: Your first submission
B Publish one scalar value at a time, usually representing a live measurement. MicroWriter.set() creating_a_stream.py python-4: Creating a stream
C Send 225 guesses of the next value of a stream, after a fixed quarantine period. MicroWriter.submit() enter_die_contest_one_off.py python-2: Creating your first crawler
D Retrieve community predictions (PDF) 1min, 5min, 15min or 1hr ahead. MicroWriter.get_own_predictions() defassa_dog.py colab example

Someone wanting something predicted performs A, B and D. Someone providing predictions performs A and C (mindful of the reward mechanism explained in Collective Distributional Prediction).

Memorable Unique Identifiers and other platform repos

  • The muid identifier package is explained in this video.
  • microconventions captures things common to client and server, and may answer many of your more specific questions about prediction horizons, et cetera.
  • rediz contains server side code. For the brave.
  • There are other rats and mice like getjson, runthis and momentum.

Some of my other packages:

  • winning - A recently published fast algorithm for inferring relative ability from win probability.
  • embarrassingly - A speculative approach to robust optimization that sends impure objective functions to optimizers.
  • pandemic - Ornstein-Uhlenbeck epidemic simulation (related paper)

For (American) football fans

  • firstdown - The repo that aspires to ruin the great game of football. See Wilmott paper.

For M6 competitors:

  • m6 - Illustrates fast numerical rank probability calculations, using winning. However since the rules changed, this isn't that useful for M6 anymore. There are some other resources there although you might be better served by precise. Good luck.

Microprediction versus TimeMachines

The TimeMachines package is traditional open-source software for point-estimates and confidence, whereas the Microprediction client offers live crowd based distributional prediction. Hundreds of algorithms compete at Microprediction and quite a few of the TimeMachines algorithms (see /skaters) are involved, drawn from packages like river, pydlm, tbats, pmdarima, statsmodels.tsa, neuralprophet, Facebook Prophet, Uber's orbit, Facebook's greykite and more. Some are open source (look for CODE badges on leaderboards) but others are private to their author.

StreamSkaters

One bridge between the /skaters and the microprediction leaderboards is provided by the StreamSkater class in the microprediction package, illustrated in the StreamSkater examples folder. This makes it trivial to use any skater from the TimeMachines package in a MicroCrawler (a live algorithm).

More about the Microprediction Python Client

See also README_EXAMPLES.md or README_LONGER.md

Class Hierarchy

Use MicroReader if you just need to get data and don't care to use a key..

MicroReader
   |
MicroWriter ----------------------------
   |                                   |
MicroPoll                         MicroCrawler
(feed creator)               (self-navigating algorithm)

You can pull most data directly, by the way, without a key.

Scheduled submissions versus "crawling"

The MicroWriter class can publish data or submit predictions. However if you intend to run a continuous process you might consider the MicroCrawler class or its derivatives.

Type Suggestion Example More examples
Scheduled submission MicroWriter Ambassy Fox submission_examples_transition
Running process MicroCrawler Malaxable Fox crawler_examples
Running process using timemachines StreamSkater Shole Gazelle crawler_skater_examples

A more complete picture would include SimpleCrawler, RegularCrawler, OnlineHorizonCrawler, OnlineStreamCrawler and ReportingCrawler.

Publishing absolute quantities versus changes

It is often better to publish changes in values than actual values of live quantities, to avoid race conditions or latency issues. There is a discussion in the README_LONGER.md.

Certainly it is easy to publish live quantities using only the MicroWriter as shown in traffic_live.py. However you might consider:

Microprediction.Com versus Microprediction.org

The former contains the blog, a knowledge center with video tutorials, details of competitions and prizemoney, and so forth. The latter is browser for humans looking to see how their algorithms are are performing, or whether their streams are updating.

Slack & Google Meets Tue 8pm/ Fri noon EST

Most people looking to contribute to this open initiative (and win beer money) join the microprediction slack. If that invite fails there might be one in the knowledge center that hasn't expired. There you will find Google Meet invite details for our regular informal chats.

Microprediction bookmarks

Data: stream list | stream explanations | csv Client: client | reader | writer | crawler | crawler examples | notebook examples Resources: popular timeseries packages | knowledge center | faq | linked-in | microprediction.org (dashboard) | microprediction.com (resources) | what | blog | contact | competitions | make-predictions | get-predictions | applications | collective epidemiology Video tutorials : 1: non-registration | 2: first crawler |3: retrieving historical data | 4: creating a data stream | 5: modifying your crawler's algorithm | 6: modifying crawler navigation Colab notebooks creating a new key | listing current prizes | submitting a prediction | choosing streams | retrieving historical data Related humpday | timemachines | timemachines-testing | microconventions | muid | causality graphs | embarrassingly | key maker | real data| chess ratings prediction Eye candy copula plots | causality plots | electricity case study

Probably best to start in the knowledge center and remember Dorothy, You're Not in Kaggle Anymore.

Cite

See CITE.md

FAQ:

FAQ

Video tutorials

See the Knowledge Center

Hey, where did the old README go?

README_LONGER.md

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

microprediction-0.23.1.tar.gz (64.3 kB view hashes)

Uploaded Source

Built Distribution

microprediction-0.23.1-py3-none-any.whl (75.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page