{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering" ], "description": "[![PyPI](https://img.shields.io/pypi/v/numerauto.svg)](https://pypi.python.org/pypi/numerauto)\n\n# Numerauto\nNumerauto is a Python daemon that facilates automatic weekly participation in\nthe Numerai machine learning competition (http://numer.ai).\n\nUsers can implement custom event handlers to handle new training data, apply\nmodels to new tournament data when a new round starts, and more. Example\nevent handlers are included for training SKLearn classifiers and uploading\npredictions.\n\nIf you encounter a problem or have suggestions, feel free to open an issue.\n\n# Installation\nTo install the latest release:\n\n`pip install --upgrade numerauto`\n\nIf you prefer to use the latest development version, clone this github reposistory:\n\n`git clone https://github.com/thebrain85/numerauto`\n\nAnd then run the following command in the numerauto directory.\n\n`python setup.py install`\n\n\n# Usage\n\n## Example\nAlthough Numerauto can be run without any event handlers for testing, it will\nnot do anything except detecting round changes and downloading the new dataset\nevery week.\n\nSee `example.py` for a basic example that trains a scikit-learn logistic\nregression model and uploads its predictions.\n\nThe example uses the `PredictionUploader` event handler to upload predictions\nto Numerai. This requires you to register an API key in your Numerai account.\nThis can be done in Account settings -> Your API Keys -> Add. Select\n'Upload submissions' to be able to upload predictions using this API key. Replace\n'insert your publickey/secretkey here' in the code with your own API public/secret\nAPI key pair to allow the example code to upload the prediction to your account.\n\nSee `example2.py` for an example that uses the `CommandlineExecutor` event\nhandler to call a custom commandline once a new round is detected. You can\nmodify the command line to execute your own code, e.g. `python myscript.py`,\nlike you would do manually. This is an easy and quick way to make use of\nNumerauto's automatic detection of new rounds in Numerai.\n\n## Custom event handlers\nImplementing your own event handler is easy. Simply create a subclass of\nnumerauto.eventhandlers.EventHandler and overload the on_* methods that you\nneed to implement your own functionality. The event handler can then be added\nto a Numerauto instance using the `add_event_handler` method. Then start the\nmain loop of the Numerauto daemon by calling the `run` method.\n\nCurrently these events are supported:\n- `def on_start(self)`: Called when the daemon starts.\n- `def on_shutdown(self)`: Called when the daemon shuts down.\n- `def on_round_begin(self, round_number)`: Called when a new round has started.\n- `def on_new_training_data(self, round_number)`: Called when the daemon has detected that new training data is available.\n- `def on_new_tournament_data(self, round_number)`: Called every round to signal that there is new tournament data.\n\nNote that event handlers are called in the order they are added to the\nNumerauto instance. Also note that all handlers for one event are called before\nthe next event is handled, keep this in mind when designing event handlers that\ninteract with one another, or that keep large amounts of data in memory.\nIdeally, the handler should clean up memory in `on_new_tournament_data` to\nprevent memory being used while the daemon is idle and waiting for the next\nround.\n\n## Running Numerauto\nBy default, the `run` method of Numerauto will keep running indefinitely until\ninterrupted using a SIGINT (ctrl-c) or SIGTERM signal. This way, you only have\nto start your Numerauto script once, for example on startup, or running inside\n[screen](https://www.gnu.org/software/screen/manual/screen.html) on linux.\n`example.py` runs Numerauto this way.\n\nAlternatively, you can provide the argument `single_run` to the `run` method of\nNumerauto. This will cause Numerauto to only wait once for a new round (and with\na maximum of 24 hours). This is ideally suited for calling Numerauto from a\ntask scheduler, such as cron on Linux or the Windows Task Scheduler. Make sure\nyou schedule Numerauto to run a little before the official round start time,\nit will wait and run as soon as the dataset is available.\n`example2.py` runs Numerauto this way.\n\n## Persistent state: state.pickle\nNumerauto stores a persistent state in the `state.pickle` file in the directory\nfrom which the daemon is being run. By default, the Numerauto daemon stores\nthe last round number that was processed (`last_round_processed`) and the last\nround number on which training was performed (`last_round_trained`). You can\nforce the system to reprocess and retrain by stopping the daemon and removing\nthe state.pickle file.\n\nCustom event handlers can store persistent information in the `persistent_state`\ndictionary of the Numerauto instance.\n\n## Round report\nEvent handlers have access to a special dictionary in the numerauto instance\nvia `self.numerauto.report`. This dictionary is reset every round and can be\nused to report values that are relevant to the event handler. For example,\n`SKLearnModelTrainer` reports back the filenames of the trained model (if\napplicable) and the generated predictions, and `PredictionStatisticsGenerator`\nreports the validation metrics of a prediction.\n\nThe report can be written to file every round with `BasicReportWriter`, or\nemailed with `BasicReportEmailer`, both using only simple formatting.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/thebrain85/numerauto", "keywords": "", "license": "GNU General Public License v3", "maintainer": "The Brain", "maintainer_email": "thebrainz1985@gmail.com", "name": "numerauto", "package_url": "https://pypi.org/project/numerauto/", "platform": "OS Independent", "project_url": "https://pypi.org/project/numerauto/", "project_urls": { "Homepage": "https://github.com/thebrain85/numerauto" }, "release_url": "https://pypi.org/project/numerauto/0.3.1/", "requires_dist": [ "requests", "pytz", "python-dateutil", "pandas", "numerapi" ], "requires_python": ">=3", "summary": "Daemon to facilitate automatically competing in the Numerai machine learning competition", "version": "0.3.1" }, "last_serial": 5528458, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "924f34fd92641eb9237857a1571eae4e", "sha256": "0ef55403d22d61d21a9ff5ac6ba371de1c8073763198c20b558d9570dff2ce29" }, "downloads": -1, "filename": "numerauto-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "924f34fd92641eb9237857a1571eae4e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 11332, "upload_time": "2018-05-19T00:00:20", "url": "https://files.pythonhosted.org/packages/83/3d/57747b206a12dff22aa7ec45702668bcd2b8dfb2a78477eb6a53232e5f0a/numerauto-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "50a4fee7c0eb946b602aae52d7ccebbb", "sha256": "6c94b8271f3760e7118481acae4f456532fc4719ebd8fdba09379ff5fa29b16e" }, "downloads": -1, "filename": "numerauto-0.1.0.tar.gz", "has_sig": false, "md5_digest": "50a4fee7c0eb946b602aae52d7ccebbb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 9742, "upload_time": "2018-05-19T00:00:22", "url": "https://files.pythonhosted.org/packages/00/c2/4957f31dd47f0c48f15e4435b511bf34bed46b92eb106cc5814364b5ea07/numerauto-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "f989e1d8e4da3291d5c06e623402f3bf", "sha256": "5f2a5283f60994cf02f8b871f1765238408f16f888b5f629630480ad33d4ae8c" }, "downloads": -1, "filename": "numerauto-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f989e1d8e4da3291d5c06e623402f3bf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 12959, "upload_time": "2018-06-07T21:51:28", "url": "https://files.pythonhosted.org/packages/90/09/f8a8008a6c45950dbf28214f20cbe963a14f21b3b9a2cce5fb1ef44e7c74/numerauto-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "edc95cb4a27e88abbde1f5a61a12fdb2", "sha256": "ced509da125faf125ece484b783acbe7491e09f4524e5764bee5a43cf444282d" }, "downloads": -1, "filename": "numerauto-0.2.0.tar.gz", "has_sig": false, "md5_digest": "edc95cb4a27e88abbde1f5a61a12fdb2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 11297, "upload_time": "2018-06-07T21:51:30", "url": "https://files.pythonhosted.org/packages/98/97/2bc85d07cf44957ad4b380846003678e06e322b1da31f4cc1e6d2cf48fb6/numerauto-0.2.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "bf549527546d79eeecec6d0f1dade411", "sha256": "cd844f4d2ff75bf4d28f1d8bdeb35763250505f9916c7616e0f5d0ddcdd5a32a" }, "downloads": -1, "filename": "numerauto-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "bf549527546d79eeecec6d0f1dade411", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 28345, "upload_time": "2019-07-14T00:03:27", "url": "https://files.pythonhosted.org/packages/72/b4/f38e07deed80c32095e5abbffd08047f1311e95b8faeebe864a94a640ae4/numerauto-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7beb6f9fe723b59aea9bc05bc97f2fb5", "sha256": "2bc0a9db2e724178c8a9e9b355304dd0c18a2be14aae2fd4752d1cc67f4c28d4" }, "downloads": -1, "filename": "numerauto-0.3.1.tar.gz", "has_sig": false, "md5_digest": "7beb6f9fe723b59aea9bc05bc97f2fb5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 16470, "upload_time": "2019-07-14T00:03:30", "url": "https://files.pythonhosted.org/packages/42/44/62864a2c6576412b995134d6567af09a5f96adadb79c084e3c18cf5291ec/numerauto-0.3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bf549527546d79eeecec6d0f1dade411", "sha256": "cd844f4d2ff75bf4d28f1d8bdeb35763250505f9916c7616e0f5d0ddcdd5a32a" }, "downloads": -1, "filename": "numerauto-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "bf549527546d79eeecec6d0f1dade411", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 28345, "upload_time": "2019-07-14T00:03:27", "url": "https://files.pythonhosted.org/packages/72/b4/f38e07deed80c32095e5abbffd08047f1311e95b8faeebe864a94a640ae4/numerauto-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7beb6f9fe723b59aea9bc05bc97f2fb5", "sha256": "2bc0a9db2e724178c8a9e9b355304dd0c18a2be14aae2fd4752d1cc67f4c28d4" }, "downloads": -1, "filename": "numerauto-0.3.1.tar.gz", "has_sig": false, "md5_digest": "7beb6f9fe723b59aea9bc05bc97f2fb5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 16470, "upload_time": "2019-07-14T00:03:30", "url": "https://files.pythonhosted.org/packages/42/44/62864a2c6576412b995134d6567af09a5f96adadb79c084e3c18cf5291ec/numerauto-0.3.1.tar.gz" } ] }