numerblox


Namenumerblox JSON
Version 0.5.9 PyPI version JSON
download
home_pagehttps://github.com/crowdcent/numerblox/
SummaryTools for solid Numerai pipelines
upload_time2023-04-24 22:27:40
maintainer
docs_urlNone
authorJason Rosenfeld, Carlo Lepelaars and contributors
requires_python>=3.7
licenseApache Software License 2.0
keywords numerai machine learning
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            NumerBlox
================

<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

`numerblox` offers Numerai specific functionality, so you can worry less
about software/data engineering and focus more on building great Numerai
models!

Most of the components in this library are designed for solid weekly
inference pipelines, but tools like `NumerFrame`, preprocessors and
evaluators also greatly simplify the training process.

**Documentation:**
[crowdcent.github.io/numerblox](https://crowdcent.github.io/numerblox/)

![](https://img.shields.io/pypi/v/numerblox.png)
![](https://img.shields.io/pypi/pyversions/numerblox.png)
![](https://img.shields.io/github/contributors/crowdcent/numerblox.png)
![](https://img.shields.io/github/issues-raw/crowdcent/numerblox.png)
![](https://img.shields.io/github/repo-size/crowdcent/numerblox.png)
![](https://img.shields.io/github/workflow/status/crowdcent/numerblox/CI.png)

## 1. Install

## 1. Getting Started

**This document has been generated by
[NBDev](https://github.com/fastai/nbdev).** Please edit
`nbs/index.ipynb` instead of this `README.md`. Read `CONTRIBUTING.MD`
for more information on the contribution process and how to change
files. Thank you!

### 1.1 Installation

Install numerblox from PyPi by running:

`pip install numerblox`

Alternatively you can clone this repository and install it in
development mode running the following from the root of the repository:

`pip install -e .`

### 1.2 Running Notebooks

Start by spinning up your favorite Jupyter Notebook environment. Here
we’ll use:

`jupyter notebook`

Test your installation using one of the education notebooks in
`nbs/edu_nbs`. A good example is `numerframe_tutorial`. Run it in your
Notebook environment to quickly test if your installation has succeeded

### 2.1. Contents

#### 2.1.1. Core functionality

`numerblox` features the following functionality:

1.  Downloading data
2.  A custom data structure extending Pandas DataFrame (`NumerFrame`)
3.  A suite of preprocessors for Numerai Classic and Signals (feature
    selection, engineering and manipulation)
4.  Model objects for easy inference.
5.  A suite of postprocessors for Numerai Classic and Signals
    (standardization, ensembling, neutralization and penalization)
6.  Pipelines handling processing and prediction (`ModelPipeline` and
    `ModelPipelineCollection`)
7.  Evaluation (`NumeraiClassicEvaluator` and `NumeraiSignalsEvaluator`)
8.  Authentication (`Key` and `load_key_from_json`)
9.  Submitting (`NumeraiClassicSubmitter`, `NumeraiSignalsSubmitter` and
    `NumerBaySubmitter`)

#### 2.1.2. Educational notebooks

Example notebooks can be found in the `nbs/edu_nbs` directory.

`nbs/edu_nbs` currently contains the following examples: -
`numerframe_tutorial.ipynb`: A deep dive into what `NumerFrame` has to
offer. - `submitting.ipynb`: How to use Submitters for safe and easy
Numerai submissions. - `google_cloud_storage.ipynb`: How to use
Downloaders and Submitters to interact with Google Cloud Storage
(GCS). - `load_model_from_wandb.ipynb`: For [Weights &
Biases](https://wandb.ai/) users. Easily pull a model from W&B for
inference. - `numerbay_integration.ipynb`: How to use `NumerBlox` to
download and upload predictions listed on
[NumerBay](https://numerbay.ai). - `synthetic_data_generation.ipynb`:
Tutorial for generating synthetic data for training Numerai models.

Development notebooks are also in the `nbs` directory. These notebooks
are also used to generate the documentation.

**Full documentation:**
[crowdcent.github.io/numerblox](https://crowdcent.github.io/numerblox/)

### 2.2. Examples

Below we will illustrate a common use case for inference pipelines. To
learn more in-depth about the features of this library, check out
notebooks in `nbs/edu_nbs`.

#### 2.2.1. Numerai Classic

``` python
# --- 0. Numerblox dependencies ---
from numerblox.download import NumeraiClassicDownloader
from numerblox.numerframe import create_numerframe
from numerblox.postprocessing import FeatureNeutralizer
from numerblox.model import SingleModel
from numerblox.model_pipeline import ModelPipeline
from numerblox.key import load_key_from_json
from numerblox.submission import NumeraiClassicSubmitter

# --- 1. Download version 4 data ---
downloader = NumeraiClassicDownloader("data")
downloader.download_inference_data("current_round")

# --- 2. Initialize NumerFrame ---
dataf = create_numerframe(file_path="data/current_round/live.parquet")

# --- 3. Define and run pipeline ---
models = [SingleModel("test_assets/joblib_v2_example_model.joblib",
                      model_name="test")]
# No preprocessing and 0.5 feature neutralization
postprocessors = [FeatureNeutralizer(pred_name=f"prediction_test",
                                     proportion=0.5)]
pipeline = ModelPipeline(preprocessors=[],
                         models=models,
                         postprocessors=postprocessors)
dataf = pipeline(dataf)

# --- 4. Submit ---
# Load credentials from .json (random credentials in this example)
key = load_key_from_json("test_assets/test_credentials.json")
submitter = NumeraiClassicSubmitter(directory_path="sub_current_round", key=key)
# full_submission checks contents, saves as csv and submits.
submitter.full_submission(dataf=dataf,
                          cols=f"prediction_test_neutralized_0.5",
                          model_name="test")

# --- 5. Clean up environment (optional) ---
downloader.remove_base_directory()
submitter.remove_base_directory()
```

<pre style="white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace">💻 Directory structure before starting
<span style="color: #808080; text-decoration-color: #808080">┗━━ </span>📁 test_assets
<span style="color: #808080; text-decoration-color: #808080">    ┣━━ </span>📄 joblib_v2_example_model.joblib
<span style="color: #808080; text-decoration-color: #808080">    ┗━━ </span>📄 test_credentials.json
</pre>
<pre style="white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace">💻 Directory structure after submitting
<span style="color: #808080; text-decoration-color: #808080">┣━━ </span>📁 data
<span style="color: #808080; text-decoration-color: #808080">┃   ┗━━ </span>📁 current_round
<span style="color: #808080; text-decoration-color: #808080">┃       ┗━━ </span>📄 numerai_tournament_data.parquet
<span style="color: #808080; text-decoration-color: #808080">┗━━ </span>📁 sub_current_round
<span style="color: #808080; text-decoration-color: #808080">    ┗━━ </span>📄 test_model1.csv
</pre>

#### 2.2.2. Numerai Signals

``` python
# --- 0. Numerblox dependencies ---
from numerblox.download import KaggleDownloader
from numerblox.numerframe import create_numerframe
from numerblox.preprocessing import KatsuFeatureGenerator
from numerblox.model import SingleModel
from numerblox.model_pipeline import ModelPipeline
from numerblox.key import load_key_from_json
from numerblox.submission import NumeraiSignalsSubmitter

# --- 1. Download Katsu1110 yfinance dataset from Kaggle ---
kd = KaggleDownloader("data")
kd.download_inference_data("code1110/yfinance-stock-price-data-for-numerai-signals")

# --- 2. Initialize NumerFrame ---
dataf = create_numerframe("data/full_data.parquet")

# --- 3. Define and run pipeline ---
models = [SingleModel("models/signals_model.cbm", model_name="cb")]
# Simple and fast feature generator based on Katsu Signals starter notebook
# https://www.kaggle.com/code1110/numeraisignals-starter-for-beginners
pipeline = ModelPipeline(preprocessors=[KatsuFeatureGenerator(windows=[20, 40, 60])],
                         models=models,
                         postprocessors=[])
dataf = pipeline(dataf)

# --- 4. Submit ---
# Load credentials from .json (random credentials in this example)
key = load_key_from_json("test_assets/test_credentials.json")
submitter = NumeraiSignalsSubmitter(directory_path="sub_current_round", key=key)
# full_submission checks contents, saves as csv and submits.
# cols selection must at least contain 1 ticker column and a signal column.
dataf['signal'] = dataf['prediction_cb']
submitter.full_submission(dataf=dataf,
                          cols=['bloomberg_ticker', 'signal'],
                          model_name="test_model1")

# --- 5. Clean up environment (optional) ---
kd.remove_base_directory()
submitter.remove_base_directory()
```

<pre style="white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace">💻 Directory structure before starting
<span style="color: #808080; text-decoration-color: #808080">┣━━ </span>📁 test_assets
<span style="color: #808080; text-decoration-color: #808080">┃   ┗━━ </span>📄 test_credentials.json
<span style="color: #808080; text-decoration-color: #808080">┗━━ </span>📁 models
<span style="color: #808080; text-decoration-color: #808080">    ┗━━ </span>📄 signals_model.cbm
</pre>
<pre style="white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace">💻 Directory structure after submitting
<span style="color: #808080; text-decoration-color: #808080">┣━━ </span>📁 data
<span style="color: #808080; text-decoration-color: #808080">┃   ┗━━ </span>📄 full_data.parquet
<span style="color: #808080; text-decoration-color: #808080">┗━━ </span>📁 sub_current_round
<span style="color: #808080; text-decoration-color: #808080">    ┗━━ </span>📄 submission.csv
</pre>

## 3. Contributing

Be sure to read `CONTRIBUTING.md` for detailed instructions on
contributing.

If you have questions or want to discuss new ideas for `numerblox`,
check out
[rocketchat.numer.ai/channel/numerblox](https://rocketchat.numer.ai/channel/numerblox).

## 4. Branch structure

Every new feature should be implemented in a branch that branches from
`dev` and has the naming convention `feature/{FEATURE_DESCRIPTION}`.
Explicit bugfixes should be named `bugfix/{FIX_DESCRIPTION}`. An example
structure is given below.

<pre style="white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace">Branch structure
<span style="color: #808080; text-decoration-color: #808080">┗━━ </span>📦 master (release)
<span style="color: #808080; text-decoration-color: #808080">    ┗━━ </span>👨‍💻 dev
<span style="color: #808080; text-decoration-color: #808080">        ┣━━ </span>✨ feature/ta-signals-features
<span style="color: #808080; text-decoration-color: #808080">        ┣━━ </span>✨ feature/news-api-downloader
<span style="color: #808080; text-decoration-color: #808080">        ┣━━ </span>✨ feature/staking-portfolio-management
<span style="color: #808080; text-decoration-color: #808080">        ┗━━ </span>✨ bugfix/evaluator-metrics-fix
</pre>

## 5. Crediting sources

Some of the components in this library may be based on forum posts,
notebooks or ideas made public by the Numerai community. We have done
our best to ask all parties who posted a specific piece of code for
their permission and credit their work in the documentation. If your
code is used in this library without credits, please let us know, so we
can add a link to your article/code.

If you are contributing to `numerblox` and are using ideas posted
earlier by someone else, make sure to credit them by posting a link to
their article/code in documentation.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/crowdcent/numerblox/",
    "name": "numerblox",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "",
    "keywords": "Numerai,Machine Learning",
    "author": "Jason Rosenfeld, Carlo Lepelaars and contributors",
    "author_email": "support@crowdcent.com",
    "download_url": "https://files.pythonhosted.org/packages/04/80/db53213c22eff366cd8e157f29de10e96843fc5860b17a8f6cb88d2d1947/numerblox-0.5.9.tar.gz",
    "platform": null,
    "description": "NumerBlox\n================\n\n<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->\n\n`numerblox` offers Numerai specific functionality, so you can worry less\nabout software/data engineering and focus more on building great Numerai\nmodels!\n\nMost of the components in this library are designed for solid weekly\ninference pipelines, but tools like `NumerFrame`, preprocessors and\nevaluators also greatly simplify the training process.\n\n**Documentation:**\n[crowdcent.github.io/numerblox](https://crowdcent.github.io/numerblox/)\n\n![](https://img.shields.io/pypi/v/numerblox.png)\n![](https://img.shields.io/pypi/pyversions/numerblox.png)\n![](https://img.shields.io/github/contributors/crowdcent/numerblox.png)\n![](https://img.shields.io/github/issues-raw/crowdcent/numerblox.png)\n![](https://img.shields.io/github/repo-size/crowdcent/numerblox.png)\n![](https://img.shields.io/github/workflow/status/crowdcent/numerblox/CI.png)\n\n## 1. Install\n\n## 1. Getting Started\n\n**This document has been generated by\n[NBDev](https://github.com/fastai/nbdev).** Please edit\n`nbs/index.ipynb` instead of this `README.md`. Read `CONTRIBUTING.MD`\nfor more information on the contribution process and how to change\nfiles. Thank you!\n\n### 1.1 Installation\n\nInstall numerblox from PyPi by running:\n\n`pip install numerblox`\n\nAlternatively you can clone this repository and install it in\ndevelopment mode running the following from the root of the repository:\n\n`pip install -e .`\n\n### 1.2 Running Notebooks\n\nStart by spinning up your favorite Jupyter Notebook environment. Here\nwe\u2019ll use:\n\n`jupyter notebook`\n\nTest your installation using one of the education notebooks in\n`nbs/edu_nbs`. A good example is `numerframe_tutorial`. Run it in your\nNotebook environment to quickly test if your installation has succeeded\n\n### 2.1. Contents\n\n#### 2.1.1. Core functionality\n\n`numerblox` features the following functionality:\n\n1.  Downloading data\n2.  A custom data structure extending Pandas DataFrame (`NumerFrame`)\n3.  A suite of preprocessors for Numerai Classic and Signals (feature\n    selection, engineering and manipulation)\n4.  Model objects for easy inference.\n5.  A suite of postprocessors for Numerai Classic and Signals\n    (standardization, ensembling, neutralization and penalization)\n6.  Pipelines handling processing and prediction (`ModelPipeline` and\n    `ModelPipelineCollection`)\n7.  Evaluation (`NumeraiClassicEvaluator` and `NumeraiSignalsEvaluator`)\n8.  Authentication (`Key` and `load_key_from_json`)\n9.  Submitting (`NumeraiClassicSubmitter`, `NumeraiSignalsSubmitter` and\n    `NumerBaySubmitter`)\n\n#### 2.1.2. Educational notebooks\n\nExample notebooks can be found in the `nbs/edu_nbs` directory.\n\n`nbs/edu_nbs` currently contains the following examples: -\n`numerframe_tutorial.ipynb`: A deep dive into what `NumerFrame` has to\noffer. - `submitting.ipynb`: How to use Submitters for safe and easy\nNumerai submissions. - `google_cloud_storage.ipynb`: How to use\nDownloaders and Submitters to interact with Google Cloud Storage\n(GCS). - `load_model_from_wandb.ipynb`: For [Weights &\nBiases](https://wandb.ai/) users. Easily pull a model from W&B for\ninference. - `numerbay_integration.ipynb`: How to use `NumerBlox` to\ndownload and upload predictions listed on\n[NumerBay](https://numerbay.ai). - `synthetic_data_generation.ipynb`:\nTutorial for generating synthetic data for training Numerai models.\n\nDevelopment notebooks are also in the `nbs` directory. These notebooks\nare also used to generate the documentation.\n\n**Full documentation:**\n[crowdcent.github.io/numerblox](https://crowdcent.github.io/numerblox/)\n\n### 2.2. Examples\n\nBelow we will illustrate a common use case for inference pipelines. To\nlearn more in-depth about the features of this library, check out\nnotebooks in `nbs/edu_nbs`.\n\n#### 2.2.1. Numerai Classic\n\n``` python\n# --- 0. Numerblox dependencies ---\nfrom numerblox.download import NumeraiClassicDownloader\nfrom numerblox.numerframe import create_numerframe\nfrom numerblox.postprocessing import FeatureNeutralizer\nfrom numerblox.model import SingleModel\nfrom numerblox.model_pipeline import ModelPipeline\nfrom numerblox.key import load_key_from_json\nfrom numerblox.submission import NumeraiClassicSubmitter\n\n# --- 1. Download version 4 data ---\ndownloader = NumeraiClassicDownloader(\"data\")\ndownloader.download_inference_data(\"current_round\")\n\n# --- 2. Initialize NumerFrame ---\ndataf = create_numerframe(file_path=\"data/current_round/live.parquet\")\n\n# --- 3. Define and run pipeline ---\nmodels = [SingleModel(\"test_assets/joblib_v2_example_model.joblib\",\n                      model_name=\"test\")]\n# No preprocessing and 0.5 feature neutralization\npostprocessors = [FeatureNeutralizer(pred_name=f\"prediction_test\",\n                                     proportion=0.5)]\npipeline = ModelPipeline(preprocessors=[],\n                         models=models,\n                         postprocessors=postprocessors)\ndataf = pipeline(dataf)\n\n# --- 4. Submit ---\n# Load credentials from .json (random credentials in this example)\nkey = load_key_from_json(\"test_assets/test_credentials.json\")\nsubmitter = NumeraiClassicSubmitter(directory_path=\"sub_current_round\", key=key)\n# full_submission checks contents, saves as csv and submits.\nsubmitter.full_submission(dataf=dataf,\n                          cols=f\"prediction_test_neutralized_0.5\",\n                          model_name=\"test\")\n\n# --- 5. Clean up environment (optional) ---\ndownloader.remove_base_directory()\nsubmitter.remove_base_directory()\n```\n\n<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">\ud83d\udcbb Directory structure before starting\n<span style=\"color: #808080; text-decoration-color: #808080\">\u2517\u2501\u2501 </span>\ud83d\udcc1 test_assets\n<span style=\"color: #808080; text-decoration-color: #808080\">    \u2523\u2501\u2501 </span>\ud83d\udcc4 joblib_v2_example_model.joblib\n<span style=\"color: #808080; text-decoration-color: #808080\">    \u2517\u2501\u2501 </span>\ud83d\udcc4 test_credentials.json\n</pre>\n<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">\ud83d\udcbb Directory structure after submitting\n<span style=\"color: #808080; text-decoration-color: #808080\">\u2523\u2501\u2501 </span>\ud83d\udcc1 data\n<span style=\"color: #808080; text-decoration-color: #808080\">\u2503   \u2517\u2501\u2501 </span>\ud83d\udcc1 current_round\n<span style=\"color: #808080; text-decoration-color: #808080\">\u2503       \u2517\u2501\u2501 </span>\ud83d\udcc4 numerai_tournament_data.parquet\n<span style=\"color: #808080; text-decoration-color: #808080\">\u2517\u2501\u2501 </span>\ud83d\udcc1 sub_current_round\n<span style=\"color: #808080; text-decoration-color: #808080\">    \u2517\u2501\u2501 </span>\ud83d\udcc4 test_model1.csv\n</pre>\n\n#### 2.2.2. Numerai Signals\n\n``` python\n# --- 0. Numerblox dependencies ---\nfrom numerblox.download import KaggleDownloader\nfrom numerblox.numerframe import create_numerframe\nfrom numerblox.preprocessing import KatsuFeatureGenerator\nfrom numerblox.model import SingleModel\nfrom numerblox.model_pipeline import ModelPipeline\nfrom numerblox.key import load_key_from_json\nfrom numerblox.submission import NumeraiSignalsSubmitter\n\n# --- 1. Download Katsu1110 yfinance dataset from Kaggle ---\nkd = KaggleDownloader(\"data\")\nkd.download_inference_data(\"code1110/yfinance-stock-price-data-for-numerai-signals\")\n\n# --- 2. Initialize NumerFrame ---\ndataf = create_numerframe(\"data/full_data.parquet\")\n\n# --- 3. Define and run pipeline ---\nmodels = [SingleModel(\"models/signals_model.cbm\", model_name=\"cb\")]\n# Simple and fast feature generator based on Katsu Signals starter notebook\n# https://www.kaggle.com/code1110/numeraisignals-starter-for-beginners\npipeline = ModelPipeline(preprocessors=[KatsuFeatureGenerator(windows=[20, 40, 60])],\n                         models=models,\n                         postprocessors=[])\ndataf = pipeline(dataf)\n\n# --- 4. Submit ---\n# Load credentials from .json (random credentials in this example)\nkey = load_key_from_json(\"test_assets/test_credentials.json\")\nsubmitter = NumeraiSignalsSubmitter(directory_path=\"sub_current_round\", key=key)\n# full_submission checks contents, saves as csv and submits.\n# cols selection must at least contain 1 ticker column and a signal column.\ndataf['signal'] = dataf['prediction_cb']\nsubmitter.full_submission(dataf=dataf,\n                          cols=['bloomberg_ticker', 'signal'],\n                          model_name=\"test_model1\")\n\n# --- 5. Clean up environment (optional) ---\nkd.remove_base_directory()\nsubmitter.remove_base_directory()\n```\n\n<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">\ud83d\udcbb Directory structure before starting\n<span style=\"color: #808080; text-decoration-color: #808080\">\u2523\u2501\u2501 </span>\ud83d\udcc1 test_assets\n<span style=\"color: #808080; text-decoration-color: #808080\">\u2503   \u2517\u2501\u2501 </span>\ud83d\udcc4 test_credentials.json\n<span style=\"color: #808080; text-decoration-color: #808080\">\u2517\u2501\u2501 </span>\ud83d\udcc1 models\n<span style=\"color: #808080; text-decoration-color: #808080\">    \u2517\u2501\u2501 </span>\ud83d\udcc4 signals_model.cbm\n</pre>\n<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">\ud83d\udcbb Directory structure after submitting\n<span style=\"color: #808080; text-decoration-color: #808080\">\u2523\u2501\u2501 </span>\ud83d\udcc1 data\n<span style=\"color: #808080; text-decoration-color: #808080\">\u2503   \u2517\u2501\u2501 </span>\ud83d\udcc4 full_data.parquet\n<span style=\"color: #808080; text-decoration-color: #808080\">\u2517\u2501\u2501 </span>\ud83d\udcc1 sub_current_round\n<span style=\"color: #808080; text-decoration-color: #808080\">    \u2517\u2501\u2501 </span>\ud83d\udcc4 submission.csv\n</pre>\n\n## 3. Contributing\n\nBe sure to read `CONTRIBUTING.md` for detailed instructions on\ncontributing.\n\nIf you have questions or want to discuss new ideas for `numerblox`,\ncheck out\n[rocketchat.numer.ai/channel/numerblox](https://rocketchat.numer.ai/channel/numerblox).\n\n## 4. Branch structure\n\nEvery new feature should be implemented in a branch that branches from\n`dev` and has the naming convention `feature/{FEATURE_DESCRIPTION}`.\nExplicit bugfixes should be named `bugfix/{FIX_DESCRIPTION}`. An example\nstructure is given below.\n\n<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">Branch structure\n<span style=\"color: #808080; text-decoration-color: #808080\">\u2517\u2501\u2501 </span>\ud83d\udce6 master (release)\n<span style=\"color: #808080; text-decoration-color: #808080\">    \u2517\u2501\u2501 </span>\ud83d\udc68\u200d\ud83d\udcbb dev\n<span style=\"color: #808080; text-decoration-color: #808080\">        \u2523\u2501\u2501 </span>\u2728 feature/ta-signals-features\n<span style=\"color: #808080; text-decoration-color: #808080\">        \u2523\u2501\u2501 </span>\u2728 feature/news-api-downloader\n<span style=\"color: #808080; text-decoration-color: #808080\">        \u2523\u2501\u2501 </span>\u2728 feature/staking-portfolio-management\n<span style=\"color: #808080; text-decoration-color: #808080\">        \u2517\u2501\u2501 </span>\u2728 bugfix/evaluator-metrics-fix\n</pre>\n\n## 5. Crediting sources\n\nSome of the components in this library may be based on forum posts,\nnotebooks or ideas made public by the Numerai community. We have done\nour best to ask all parties who posted a specific piece of code for\ntheir permission and credit their work in the documentation. If your\ncode is used in this library without credits, please let us know, so we\ncan add a link to your article/code.\n\nIf you are contributing to `numerblox` and are using ideas posted\nearlier by someone else, make sure to credit them by posting a link to\ntheir article/code in documentation.\n",
    "bugtrack_url": null,
    "license": "Apache Software License 2.0",
    "summary": "Tools for solid Numerai pipelines",
    "version": "0.5.9",
    "split_keywords": [
        "numerai",
        "machine learning"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d12820ae3b55592479648c06c8198efe8864968b4febd68df182fc04fc64cd5f",
                "md5": "4e705306a475c741df80a7a573188498",
                "sha256": "fb5130aba8e4ffdae8e17a35f16d1255435165560792e79a5daca3bb8f663c91"
            },
            "downloads": -1,
            "filename": "numerblox-0.5.9-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "4e705306a475c741df80a7a573188498",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 65753,
            "upload_time": "2023-04-24T22:27:38",
            "upload_time_iso_8601": "2023-04-24T22:27:38.956335Z",
            "url": "https://files.pythonhosted.org/packages/d1/28/20ae3b55592479648c06c8198efe8864968b4febd68df182fc04fc64cd5f/numerblox-0.5.9-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0480db53213c22eff366cd8e157f29de10e96843fc5860b17a8f6cb88d2d1947",
                "md5": "15a46e62e86b5d5e5ceced541dfbd59d",
                "sha256": "1a8ff997472e92540436db144c426c6d8f2806b99435e4f6597cdbaaa54927e1"
            },
            "downloads": -1,
            "filename": "numerblox-0.5.9.tar.gz",
            "has_sig": false,
            "md5_digest": "15a46e62e86b5d5e5ceced541dfbd59d",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 67056,
            "upload_time": "2023-04-24T22:27:40",
            "upload_time_iso_8601": "2023-04-24T22:27:40.774466Z",
            "url": "https://files.pythonhosted.org/packages/04/80/db53213c22eff366cd8e157f29de10e96843fc5860b17a8f6cb88d2d1947/numerblox-0.5.9.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-04-24 22:27:40",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "crowdcent",
    "github_project": "numerblox",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "numerblox"
}
        
Elapsed time: 0.08496s