numerai-cli 1.1.4__tar.gz → 1.1.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. {numerai_cli-1.1.4/numerai_cli.egg-info → numerai_cli-1.1.6}/PKG-INFO +1 -1
  2. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/examples/signals-python3/predict.py +5 -14
  3. numerai_cli-1.1.6/numerai/examples/signals-python3/train.py +5 -0
  4. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/examples/tournament-python3/predict.py +1 -1
  5. {numerai_cli-1.1.4 → numerai_cli-1.1.6/numerai_cli.egg-info}/PKG-INFO +1 -1
  6. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai_cli.egg-info/SOURCES.txt +2 -1
  7. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/setup.py +1 -1
  8. numerai_cli-1.1.6/tests/test_signals_example.py +74 -0
  9. numerai_cli-1.1.4/numerai/examples/tournament-python3/train.py +0 -10
  10. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/LICENSE +0 -0
  11. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/MANIFEST.in +0 -0
  12. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/README.md +0 -0
  13. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/__init__.py +0 -0
  14. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/cli/__init__.py +0 -0
  15. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/cli/constants.py +0 -0
  16. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/cli/destroy_all.py +0 -0
  17. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/cli/doctor.py +0 -0
  18. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/cli/misc.py +0 -0
  19. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/cli/node/__init__.py +0 -0
  20. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/cli/node/config.py +0 -0
  21. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/cli/node/deploy.py +0 -0
  22. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/cli/node/destroy.py +0 -0
  23. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/cli/node/test.py +0 -0
  24. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/cli/setup.py +0 -0
  25. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/cli/uninstall.py +0 -0
  26. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/cli/upgrade.py +0 -0
  27. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/cli/util/__init__.py +0 -0
  28. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/cli/util/debug.py +0 -0
  29. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/cli/util/docker.py +0 -0
  30. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/cli/util/files.py +0 -0
  31. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/cli/util/keys.py +0 -0
  32. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/cli/util/terraform.py +0 -0
  33. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/examples/crypto-python3/Dockerfile +0 -0
  34. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/examples/crypto-python3/predict.py +0 -0
  35. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/examples/crypto-python3/requirements.txt +0 -0
  36. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/examples/signals-python3/Dockerfile +0 -0
  37. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/examples/signals-python3/requirements.txt +0 -0
  38. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/examples/tournament-python3/Dockerfile +0 -0
  39. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/examples/tournament-python3/requirements.txt +0 -0
  40. {numerai_cli-1.1.4/numerai/examples/signals-python3 → numerai_cli-1.1.6/numerai/examples/tournament-python3}/train.py +0 -0
  41. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/examples/tournament-rlang/Dockerfile +0 -0
  42. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/examples/tournament-rlang/install_packages.R +0 -0
  43. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/examples/tournament-rlang/main.R +0 -0
  44. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/aws/-inputs.tf +0 -0
  45. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/aws/-main.tf +0 -0
  46. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/aws/-outputs.tf +0 -0
  47. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/aws/aws/-inputs.tf +0 -0
  48. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/aws/aws/-locals.tf +0 -0
  49. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/aws/aws/-outputs.tf +0 -0
  50. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/aws/aws/cluster.tf +0 -0
  51. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/aws/aws/main.zip +0 -0
  52. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/aws/aws/network.tf +0 -0
  53. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/aws/aws/webhook.tf +0 -0
  54. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/azure/azure/cluster.tf +0 -0
  55. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/azure/azure/input.tf +0 -0
  56. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/azure/azure/locals.tf +0 -0
  57. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/azure/azure/outputs.tf +0 -0
  58. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/azure/azure/webhook.tf +0 -0
  59. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/azure/azure_cron_trigger.zip +0 -0
  60. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/azure/azure_trigger.zip +0 -0
  61. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/azure/input.tf +0 -0
  62. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/azure/main.tf +0 -0
  63. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/azure/outputs.tf +0 -0
  64. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/azure/registry.tf +0 -0
  65. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/gcp/-inputs.tf +0 -0
  66. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/gcp/-main.tf +0 -0
  67. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/gcp/-outputs.tf +0 -0
  68. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/gcp/cloud-function.zip +0 -0
  69. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/gcp/gcp/-inputs.tf +0 -0
  70. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/gcp/gcp/-locals.tf +0 -0
  71. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/gcp/gcp/-outputs.tf +0 -0
  72. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/gcp/gcp/cluster.tf +0 -0
  73. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/gcp/gcp/webhook.tf +0 -0
  74. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/gcp/gcp/workflow-source.yaml +0 -0
  75. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/gcp/registry.tf +0 -0
  76. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai/terraform/gcp/services.tf +0 -0
  77. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai_cli.egg-info/dependency_links.txt +0 -0
  78. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai_cli.egg-info/entry_points.txt +0 -0
  79. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai_cli.egg-info/requires.txt +0 -0
  80. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/numerai_cli.egg-info/top_level.txt +0 -0
  81. {numerai_cli-1.1.4 → numerai_cli-1.1.6}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: numerai-cli
3
- Version: 1.1.4
3
+ Version: 1.1.6
4
4
  Summary: A library for deploying Numer.ai Prediction Nodes.
5
5
  Home-page: https://github.com/numerai/numerai-cli
6
6
  Author: Numer.ai
@@ -1,7 +1,6 @@
1
1
  """ Sample tournament model in python 3 """
2
2
 
3
3
  import os
4
- import json
5
4
  import logging
6
5
  import joblib
7
6
  import numerapi
@@ -11,9 +10,10 @@ import lightgbm as lgbm
11
10
  logging.basicConfig(filename="log.txt", filemode="a")
12
11
 
13
12
  TOURNAMENT = 11
14
- DATA_VERSION = "signals/v2.0"
13
+ DATA_VERSION = "signals/v3.0"
15
14
  TARGET_COL = "target"
16
- TRAINED_MODEL_PREFIX = "./trained_model"
15
+ # Keep models trained on older Signals datasets separate from this version.
16
+ TRAINED_MODEL_PREFIX = f"./trained_model_{DATA_VERSION.replace('/', '_')}"
17
17
 
18
18
  DEFAULT_MODEL_ID = None
19
19
  DEFAULT_PUBLIC_ID = None
@@ -59,7 +59,7 @@ def train(napi, model_id, force_training=False):
59
59
  num_leaves=2**5 - 1,
60
60
  colsample_bytree=0.1,
61
61
  )
62
- model.fit(train_data[feature_cols], train_data["target"])
62
+ model.fit(train_data[feature_cols], train_data[TARGET_COL])
63
63
 
64
64
  logging.info("saving model")
65
65
  joblib.dump(model, model_name)
@@ -72,16 +72,8 @@ def predict(napi, model):
72
72
  predict_data = pd.read_parquet(f"{DATA_VERSION}/live.parquet").set_index(
73
73
  'numerai_ticker'
74
74
  )
75
- feature_cols = [
76
- col
77
- for col in predict_data.columns
78
- if col.startswith('feature_')
79
- and col not in ("feature_country", "feature_exchange_code")
80
- ]
81
- print(predict_data)
82
-
83
75
  logging.info("generating predictions")
84
- predictions = model.predict(predict_data[feature_cols])
76
+ predictions = model.predict(predict_data[model.feature_name_])
85
77
  predictions = pd.DataFrame(
86
78
  predictions, columns=["prediction"], index=predict_data.index
87
79
  )
@@ -92,7 +84,6 @@ def submit(predictions, predict_output_path="predictions.csv", model_id=None):
92
84
  logging.info("writing predictions to file and submitting")
93
85
  include_index = predictions.index.name is not None
94
86
  predictions.to_csv(predict_output_path, index=include_index)
95
- print(predictions)
96
87
  napi.upload_predictions(predict_output_path, model_id=model_id)
97
88
 
98
89
 
@@ -0,0 +1,5 @@
1
+ """ An extra entry point specifically for training. Used when running locally """
2
+
3
+ import predict
4
+
5
+ predict.train(predict.napi, predict.MODEL_ID, force_training=True)
@@ -11,7 +11,7 @@ import lightgbm as lgbm
11
11
  logging.basicConfig(filename="log.txt", filemode="a")
12
12
 
13
13
  TOURNAMENT = 8
14
- DATA_VERSION = "v5.2"
14
+ DATA_VERSION = "v5.3"
15
15
  ERA_COL = "era"
16
16
  TARGET_COL = "target"
17
17
  TRAINED_MODEL_PREFIX = "./trained_model"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: numerai-cli
3
- Version: 1.1.4
3
+ Version: 1.1.6
4
4
  Summary: A library for deploying Numer.ai Prediction Nodes.
5
5
  Home-page: https://github.com/numerai/numerai-cli
6
6
  Author: Numer.ai
@@ -74,4 +74,5 @@ numerai_cli.egg-info/SOURCES.txt
74
74
  numerai_cli.egg-info/dependency_links.txt
75
75
  numerai_cli.egg-info/entry_points.txt
76
76
  numerai_cli.egg-info/requires.txt
77
- numerai_cli.egg-info/top_level.txt
77
+ numerai_cli.egg-info/top_level.txt
78
+ tests/test_signals_example.py
@@ -9,7 +9,7 @@ with open(path.join(this_directory, "README.md"), encoding="utf-8") as f:
9
9
 
10
10
  setup(
11
11
  name="numerai-cli",
12
- version="1.1.4",
12
+ version="1.1.6",
13
13
  description="A library for deploying Numer.ai Prediction Nodes.",
14
14
  url="https://github.com/numerai/numerai-cli",
15
15
  author="Numer.ai",
@@ -0,0 +1,74 @@
1
+ """Checks for the deployable Signals example without downloading full datasets."""
2
+
3
+ import importlib.util
4
+ from pathlib import Path
5
+ import runpy
6
+ import sys
7
+ import tempfile
8
+ import unittest
9
+ from unittest.mock import Mock, patch
10
+
11
+ import pandas as pd
12
+
13
+
14
+ EXAMPLE = Path(__file__).resolve().parents[1] / "numerai/examples/signals-python3/predict.py"
15
+ spec = importlib.util.spec_from_file_location("signals_example", EXAMPLE)
16
+ signals = importlib.util.module_from_spec(spec)
17
+ with patch("logging.basicConfig"):
18
+ spec.loader.exec_module(signals)
19
+
20
+
21
+ class SignalsExampleTest(unittest.TestCase):
22
+ def test_training_entry_point(self):
23
+ example_dir = EXAMPLE.parent
24
+ with patch.dict(sys.modules, {"predict": signals}), patch.object(signals, "train") as train:
25
+ runpy.run_path(str(example_dir / "train.py"), run_name="__main__")
26
+ train.assert_called_once_with(signals.napi, signals.MODEL_ID, force_training=True)
27
+
28
+ def test_train_and_predict_with_v3_data(self):
29
+ train_data = pd.DataFrame(
30
+ {
31
+ "feature_alpha": [0.1, 0.2],
32
+ "feature_beta": [0.3, 0.4],
33
+ "feature_country": ["US", "GB"],
34
+ "target": [0.2, 0.8],
35
+ }
36
+ )
37
+ live_data = pd.DataFrame(
38
+ {
39
+ "numerai_ticker": ["A", "B"],
40
+ "feature_beta": [0.5, 0.6],
41
+ "feature_alpha": [0.7, 0.8],
42
+ "feature_country": ["US", "GB"],
43
+ }
44
+ )
45
+ api = Mock()
46
+ model = Mock()
47
+ model.feature_name_ = ["feature_alpha", "feature_beta"]
48
+ model.predict.return_value = [0.1, 0.9]
49
+
50
+ def read_parquet(path):
51
+ return train_data if path.endswith("train.parquet") else live_data
52
+
53
+ with tempfile.TemporaryDirectory() as directory:
54
+ with (
55
+ patch.object(signals, "TRAINED_MODEL_PREFIX", f"{directory}/trained_model_signals_v3.0"),
56
+ patch.object(signals.pd, "read_parquet", side_effect=read_parquet),
57
+ patch.object(signals.lgbm, "LGBMRegressor", return_value=model),
58
+ patch.object(signals.joblib, "dump"),
59
+ ):
60
+ trained_model = signals.train(api, "model-id")
61
+ predictions = signals.predict(api, trained_model)
62
+
63
+ self.assertEqual(
64
+ [call.args[0] for call in api.download_dataset.call_args_list],
65
+ ["signals/v3.0/train.parquet", "signals/v3.0/live.parquet"],
66
+ )
67
+ self.assertEqual(list(model.fit.call_args.args[0].columns), model.feature_name_)
68
+ self.assertEqual(list(model.predict.call_args.args[0].columns), model.feature_name_)
69
+ self.assertEqual(predictions.index.name, "numerai_ticker")
70
+ self.assertEqual(predictions["prediction"].tolist(), [0.1, 0.9])
71
+
72
+
73
+ if __name__ == "__main__":
74
+ unittest.main()
@@ -1,10 +0,0 @@
1
- """ An extra entry point specifically for training. Used when running locally """
2
-
3
- import predict
4
-
5
- train_data_path, predict_data_path, predict_output_path = predict.download_data()
6
-
7
- model_id = predict.MODEL_ID
8
- model_type = predict.MODEL
9
-
10
- predict.train(train_data_path, model_id, model_type, force_training=True)
File without changes
File without changes
File without changes
File without changes