proof-of-portfolio 0.0.83__py3-none-any.whl → 0.0.86__py3-none-any.whl
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.
- proof_of_portfolio/__init__.py +1 -4
- proof_of_portfolio/_version.py +1 -1
- proof_of_portfolio/circuits/components/src/utils/constants.nr +15 -17
- proof_of_portfolio/circuits/src/main.nr +19 -11
- proof_of_portfolio/circuits/target/circuits.json +1 -1
- proof_of_portfolio/circuits/vk/vk +0 -0
- proof_of_portfolio/proof_generator.py +60 -55
- {proof_of_portfolio-0.0.83.dist-info → proof_of_portfolio-0.0.86.dist-info}/METADATA +1 -1
- {proof_of_portfolio-0.0.83.dist-info → proof_of_portfolio-0.0.86.dist-info}/RECORD +12 -12
- {proof_of_portfolio-0.0.83.dist-info → proof_of_portfolio-0.0.86.dist-info}/WHEEL +0 -0
- {proof_of_portfolio-0.0.83.dist-info → proof_of_portfolio-0.0.86.dist-info}/entry_points.txt +0 -0
- {proof_of_portfolio-0.0.83.dist-info → proof_of_portfolio-0.0.86.dist-info}/top_level.txt +0 -0
Binary file
|
@@ -5,11 +5,12 @@ import os
|
|
5
5
|
import time
|
6
6
|
import json
|
7
7
|
import bittensor as bt
|
8
|
+
import traceback
|
8
9
|
|
9
10
|
MAX_DAYS = 120
|
10
11
|
MAX_SIGNALS = 256
|
11
12
|
MERKLE_DEPTH = 8
|
12
|
-
SCALING_FACTOR = 10**
|
13
|
+
SCALING_FACTOR = 10**9
|
13
14
|
RATIO_SCALE_FACTOR = 1_000_000
|
14
15
|
PRIME = 21888242871839275222246405745257275088548364400416034343698204186575808495617
|
15
16
|
|
@@ -247,61 +248,65 @@ def generate_proof(
|
|
247
248
|
scaled_log_returns += [0] * (MAX_DAYS - len(scaled_log_returns))
|
248
249
|
|
249
250
|
log_verbose(verbose, "info", f"Using {n_returns} daily returns from PTN")
|
251
|
+
try:
|
252
|
+
all_orders = []
|
253
|
+
for pos in positions:
|
254
|
+
all_orders.extend(get_attr(pos, "orders"))
|
250
255
|
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
)
|
256
|
+
signals_count = len(all_orders)
|
257
|
+
if signals_count > MAX_SIGNALS:
|
258
|
+
log_verbose(
|
259
|
+
verbose,
|
260
|
+
"warning",
|
261
|
+
f"Truncating {signals_count} signals to {MAX_SIGNALS} (circuit limit)",
|
262
|
+
)
|
263
|
+
all_orders = all_orders[:MAX_SIGNALS]
|
264
|
+
signals_count = MAX_SIGNALS
|
265
|
+
|
266
|
+
trade_pair_map = {}
|
267
|
+
trade_pair_counter = 0
|
268
|
+
|
269
|
+
signals = []
|
270
|
+
for order in all_orders:
|
271
|
+
trade_pair = get_attr(order, "trade_pair")
|
272
|
+
trade_pair_str = (
|
273
|
+
str(trade_pair).split(".")[1]
|
274
|
+
if hasattr(trade_pair, "name")
|
275
|
+
else str(trade_pair)
|
276
|
+
)
|
277
|
+
if trade_pair_str not in trade_pair_map:
|
278
|
+
trade_pair_map[trade_pair_str] = trade_pair_counter
|
279
|
+
trade_pair_counter += 1
|
280
|
+
|
281
|
+
order_type = get_attr(order, "order_type")
|
282
|
+
order_type_str = (
|
283
|
+
str(order_type).split(".")[1]
|
284
|
+
if hasattr(order_type, "name")
|
285
|
+
else str(order_type)
|
286
|
+
)
|
287
|
+
order_type_map = {"SHORT": 2, "LONG": 1, "FLAT": 0}
|
288
|
+
price = int(get_attr(order, "price") * SCALING_FACTOR)
|
289
|
+
order_uuid = get_attr(order, "order_uuid")
|
290
|
+
bid = int(get_attr(order, "bid") * SCALING_FACTOR)
|
291
|
+
ask = int(get_attr(order, "ask") * SCALING_FACTOR)
|
292
|
+
processed_ms = get_attr(order, "processed_ms")
|
293
|
+
|
294
|
+
signals.append(
|
295
|
+
{
|
296
|
+
"trade_pair": str(trade_pair_map[trade_pair_str]),
|
297
|
+
"order_type": str(order_type_map.get(order_type_str, 0)),
|
298
|
+
"leverage": str(
|
299
|
+
int(abs(get_attr(order, "leverage")) * SCALING_FACTOR)
|
300
|
+
),
|
301
|
+
"price": str(price),
|
302
|
+
"processed_ms": str(processed_ms),
|
303
|
+
"order_uuid": f"0x{order_uuid.replace('-', '')}",
|
304
|
+
"bid": str(bid),
|
305
|
+
"ask": str(ask),
|
306
|
+
}
|
307
|
+
)
|
308
|
+
except Exception:
|
309
|
+
traceback.print_exc()
|
305
310
|
|
306
311
|
# Pad signals too
|
307
312
|
signals += [
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: proof-of-portfolio
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.86
|
4
4
|
Summary: Zero-Knowledge Proof framework for verifiable, private portfolio performance metrics
|
5
5
|
Author-email: "Inference Labs, Inc." <info@inferencelabs.com>
|
6
6
|
Requires-Python: >=3.10
|
@@ -1,12 +1,12 @@
|
|
1
|
-
proof_of_portfolio/__init__.py,sha256=
|
2
|
-
proof_of_portfolio/_version.py,sha256=
|
1
|
+
proof_of_portfolio/__init__.py,sha256=gqM3xkqAO2az6Rhgez0qIREUzZqB3DZYV4IIQHdpwMA,4845
|
2
|
+
proof_of_portfolio/_version.py,sha256=RtTTECsZPNhxHhUaprFbR8v3v_NAF49FwcOw5tNe9hg,66
|
3
3
|
proof_of_portfolio/analyze_data.py,sha256=t80ueFtBUzcWTrPiamiC1HXvw5Em-151zXJx0cCk8sQ,3709
|
4
4
|
proof_of_portfolio/main.py,sha256=JbvdAK7B6hw2sQdjT0EVCiglCQZgN3urKphdeWcW43w,30994
|
5
5
|
proof_of_portfolio/min_metrics.py,sha256=U16B7YRl0UbCterdJ1ksqFOxR5DiQeslUzMVGEWNyog,13211
|
6
6
|
proof_of_portfolio/miner.py,sha256=eGXcPMRQVAepzXJj1ePbbDAf-72E9Yj9n-yfP7GohLw,17177
|
7
7
|
proof_of_portfolio/parsing_utils.py,sha256=Hx61Sby5mEbC6uzhG9G69K7YPCLbjU6vK8fazpNBeLc,6463
|
8
8
|
proof_of_portfolio/post_install.py,sha256=e-57Z_h-svQdjA8ibsM985MXmdV6-KLyymQm3Cgu8YM,5654
|
9
|
-
proof_of_portfolio/proof_generator.py,sha256=
|
9
|
+
proof_of_portfolio/proof_generator.py,sha256=DmvJrE1eOeM0IzXxDdvbR1pSyQ2M0zP5L53XkObGTpU,21216
|
10
10
|
proof_of_portfolio/signal_processor.py,sha256=JQjnkMJEbv_MWIgKNrjKjrBIcIT5pAkAlCneEOGsqT0,6702
|
11
11
|
proof_of_portfolio/validator.py,sha256=kt3BeaXOffv-h52PZBKV1YHUWtiGsnPte16m3EJpITY,3839
|
12
12
|
proof_of_portfolio/circuits/Nargo.toml,sha256=D6ycN7H3xiTcWHH5wz4qXYTXn7Ht0WgPr9w4B7d8ZGw,141
|
@@ -26,14 +26,14 @@ proof_of_portfolio/circuits/components/src/core/tstat.nr,sha256=SLL2UnyfeVUN3NdJ
|
|
26
26
|
proof_of_portfolio/circuits/components/src/utils/ann_excess_return.nr,sha256=5xryh8HMMA2oHs039_usGHMKPcRoJpl19ZPmPKfDiYQ,1892
|
27
27
|
proof_of_portfolio/circuits/components/src/utils/ann_volatility.nr,sha256=XTQhYuqwj5R8OhDklgyCUVwkW2_L0aThVQerk45fAdk,2118
|
28
28
|
proof_of_portfolio/circuits/components/src/utils/average.nr,sha256=L6YGvEcwOvOd-c5vMHN_fItGweLyGXaRNOHlevn5mJ4,2246
|
29
|
-
proof_of_portfolio/circuits/components/src/utils/constants.nr,sha256
|
29
|
+
proof_of_portfolio/circuits/components/src/utils/constants.nr,sha256=0sjT1oX9SBbAhzfbJNG9I-7atJcr21s0_G4_74zI2UE,1945
|
30
30
|
proof_of_portfolio/circuits/components/src/utils/mod.nr,sha256=j1Fwx2shGJcbB3UY6sPtFrFDzbnBhFT3s-RzfzZByCA,151
|
31
31
|
proof_of_portfolio/circuits/components/src/utils/sqrt.nr,sha256=pkCqXr4cBgfb49fzi_N6JypD31GlNYuMdMUoVssVzFQ,2318
|
32
32
|
proof_of_portfolio/circuits/components/src/utils/variance.nr,sha256=p_5NWnLu98FOwOT5GPhI88ksRlxiXBmIVMAtaJB5rrY,2854
|
33
33
|
proof_of_portfolio/circuits/components/src/utils/weighting_distribution.nr,sha256=CRfX7k8Hbav1q-NggOyY0f--M0gwtZsXQruQRG2ulbM,1158
|
34
|
-
proof_of_portfolio/circuits/src/main.nr,sha256=
|
35
|
-
proof_of_portfolio/circuits/target/circuits.json,sha256=
|
36
|
-
proof_of_portfolio/circuits/vk/vk,sha256=
|
34
|
+
proof_of_portfolio/circuits/src/main.nr,sha256=NEGYq92l8N92NH4xRBq_846iz57ROQ1A5AMhhXFS0Lk,5236
|
35
|
+
proof_of_portfolio/circuits/target/circuits.json,sha256=1yH8TBpoV-5yUEJLi9D-_XogPjZL3voM1fn3Ue7y4CQ,13840768
|
36
|
+
proof_of_portfolio/circuits/vk/vk,sha256=PwtQEVwss0D5fMV01jMzOiBv-rwdq1UjuYjzPTwH1Wk,1764
|
37
37
|
proof_of_portfolio/demo/just_calmar/Nargo.toml,sha256=wJ7j03ThqHr4N_jk4ifjvGzAnhnO0CrSouNHdo6pIl8,77
|
38
38
|
proof_of_portfolio/demo/just_calmar/src/main.nr,sha256=xLzzAwAJf-q43IKvChhf08qcmb1BhDP4sVT6bOsSBRs,5351
|
39
39
|
proof_of_portfolio/demo/just_calmar/target/just_calmar.json,sha256=s_7h0ZLMUM3NURBaEtDxrkbgWlVSBkpa7CLPiLYLhk8,1820536
|
@@ -77,8 +77,8 @@ proof_of_portfolio/tree_generator/Nargo.toml,sha256=O6iSvb-EpV0XcETiDxNgSp7XKNiY
|
|
77
77
|
proof_of_portfolio/tree_generator/target.gz,sha256=J55ZC5QuFy6vGC2dSJ-0rEWjUKzzxwXwKGDTDUGp06U,225314
|
78
78
|
proof_of_portfolio/tree_generator/src/main.nr,sha256=5Jb46e5PyZ3kpmIJn4W1gVtN3AgHs-fCmTochVB7uOU,2427
|
79
79
|
proof_of_portfolio/tree_generator/target/tree_generator.json,sha256=Uy9AFLrbsd2SayMFTPgmow91-BIs1DrqP3qGfxfZAa0,1540901
|
80
|
-
proof_of_portfolio-0.0.
|
81
|
-
proof_of_portfolio-0.0.
|
82
|
-
proof_of_portfolio-0.0.
|
83
|
-
proof_of_portfolio-0.0.
|
84
|
-
proof_of_portfolio-0.0.
|
80
|
+
proof_of_portfolio-0.0.86.dist-info/METADATA,sha256=Bs8UYkELW5OlpeVlGp1Vop1MUspsHhHrihSqCwJqeEM,7076
|
81
|
+
proof_of_portfolio-0.0.86.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
82
|
+
proof_of_portfolio-0.0.86.dist-info/entry_points.txt,sha256=KeLSJT_UJtr1WiLTkhlGqWQuPKbO_ylgj6OXOC2gJV4,53
|
83
|
+
proof_of_portfolio-0.0.86.dist-info/top_level.txt,sha256=sY5xZnE6YuiISK1IuRHPfl71NV0vXO3N3YA2li_SPXU,19
|
84
|
+
proof_of_portfolio-0.0.86.dist-info/RECORD,,
|
File without changes
|
{proof_of_portfolio-0.0.83.dist-info → proof_of_portfolio-0.0.86.dist-info}/entry_points.txt
RENAMED
File without changes
|
File without changes
|