proof-of-portfolio 0.0.99__tar.gz → 0.0.100__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.
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/PKG-INFO +1 -1
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/_version.py +1 -1
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/components/src/core/omega.nr +9 -8
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/components/src/core/sortino.nr +8 -3
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/src/main.nr +3 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/target/circuits.json +1 -1
- proof_of_portfolio-0.0.100/proof_of_portfolio/circuits/vk/vk +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/proof_generator.py +5 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio.egg-info/PKG-INFO +1 -1
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/pyproject.toml +1 -1
- proof_of_portfolio-0.0.99/proof_of_portfolio/circuits/vk/vk +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/README.md +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/__init__.py +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/analyze_data.py +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/Nargo.toml +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/components/Nargo.toml +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/components/src/core/calmar.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/components/src/core/drawdown.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/components/src/core/merkle.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/components/src/core/mod.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/components/src/core/pnl_score.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/components/src/core/position.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/components/src/core/sharpe.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/components/src/core/tstat.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/components/src/lib.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/components/src/utils/ann_excess_return.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/components/src/utils/ann_volatility.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/components/src/utils/average.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/components/src/utils/constants.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/components/src/utils/mod.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/components/src/utils/risk_normalization.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/components/src/utils/sqrt.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/components/src/utils/variance.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/components/src/utils/weighting_distribution.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/generate_inputs.py +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_calmar/Nargo.toml +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_calmar/src/main.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_calmar/target/just_calmar.json +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_cps_to_log_return/Nargo.toml +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_cps_to_log_return/src/main.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_cps_to_log_return/target/just_cps_to_log_return.json +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_drawdown/Nargo.toml +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_drawdown/src/main.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_drawdown/target/just_drawdown.json +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_omega/Nargo.toml +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_omega/src/main.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_omega/target/just_omega.json +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_pnl/Nargo.toml +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_pnl/src/main.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_sharpe/Nargo.toml +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_sharpe/src/main.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_sharpe/target/just_sharpe.json +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_sortino/Nargo.toml +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_sortino/src/main.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_sortino/target/just_sortino.json +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_tstat/Nargo.toml +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_tstat/src/main.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/just_tstat/target/just_tstat.json +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/merkle_generator/Nargo.toml +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demo/merkle_generator/src/main.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demos/all.py +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demos/calmar.py +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demos/drawdown.py +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demos/generate_input_data.py +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demos/log_returns.py +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demos/main.py +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demos/omega.py +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demos/sharpe.py +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demos/sortino.py +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demos/tstat.py +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/demos/utils.py +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/main.py +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/min_metrics.py +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/miner.py +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/parsing_utils.py +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/post_install.py +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/returns_generator/Nargo.toml +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/returns_generator/src/main.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/returns_generator/target/returns_generator.json +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/signal_processor.py +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/tree_generator/Nargo.toml +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/tree_generator/src/main.nr +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/tree_generator/target/tree_generator.json +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/tree_generator/target.gz +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/validator.py +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio.egg-info/SOURCES.txt +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio.egg-info/dependency_links.txt +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio.egg-info/entry_points.txt +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio.egg-info/requires.txt +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio.egg-info/top_level.txt +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/setup.cfg +0 -0
- {proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/setup.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: proof-of-portfolio
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.100
|
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,2 +1,2 @@
|
|
1
1
|
# This file is auto-generated during build
|
2
|
-
__version__ = "0.0.
|
2
|
+
__version__ = "0.0.100"
|
@@ -9,6 +9,7 @@ pub fn omega(
|
|
9
9
|
use_weighting: bool,
|
10
10
|
bypass_confidence: bool,
|
11
11
|
omega_loss_min: i64,
|
12
|
+
daily_rf: i64,
|
12
13
|
) -> i64 {
|
13
14
|
if !bypass_confidence & actual_len < STATISTICAL_CONFIDENCE_MINIMUM_N {
|
14
15
|
OMEGA_NOCONFIDENCE_VALUE
|
@@ -23,10 +24,10 @@ pub fn omega(
|
|
23
24
|
if (i as u32) < actual_len {
|
24
25
|
let weight = weights[i];
|
25
26
|
let log_return = log_returns[i];
|
26
|
-
if log_return >
|
27
|
+
if log_return > daily_rf {
|
27
28
|
product_sum_positive += log_return * weight;
|
28
29
|
sum_weights_positive += weight;
|
29
|
-
} else if log_return <
|
30
|
+
} else if log_return < daily_rf {
|
30
31
|
product_sum_negative += log_return * weight;
|
31
32
|
sum_weights_negative += weight;
|
32
33
|
}
|
@@ -58,10 +59,10 @@ pub fn omega(
|
|
58
59
|
|
59
60
|
for i in 0..ARRAY_SIZE {
|
60
61
|
if (i as u32) < actual_len {
|
61
|
-
if log_returns[i] >
|
62
|
+
if log_returns[i] > daily_rf {
|
62
63
|
positive_sum += log_returns[i];
|
63
64
|
count_pos += 1;
|
64
|
-
} else if log_returns[i] <
|
65
|
+
} else if log_returns[i] < daily_rf {
|
65
66
|
negative_sum += (-log_returns[i]);
|
66
67
|
count_neg += 1;
|
67
68
|
}
|
@@ -97,7 +98,7 @@ fn test_omega_all_positive() {
|
|
97
98
|
}
|
98
99
|
|
99
100
|
let weights = [100000; ARRAY_SIZE];
|
100
|
-
let result = omega(returns, 5, weights, false, false, 10000000);
|
101
|
+
let result = omega(returns, 5, weights, false, false, 10000000, 0);
|
101
102
|
assert(result == 10000000);
|
102
103
|
}
|
103
104
|
|
@@ -109,7 +110,7 @@ fn test_omega_all_negative() {
|
|
109
110
|
}
|
110
111
|
|
111
112
|
let weights = [100000; ARRAY_SIZE];
|
112
|
-
let result = omega(returns, 5, weights, false, false, 10000000);
|
113
|
+
let result = omega(returns, 5, weights, false, false, 10000000, 0);
|
113
114
|
assert(result == 0);
|
114
115
|
}
|
115
116
|
|
@@ -122,7 +123,7 @@ fn test_omega_mixed_returns() {
|
|
122
123
|
returns[3] = -300;
|
123
124
|
|
124
125
|
let weights = [100000; ARRAY_SIZE];
|
125
|
-
let result = omega(returns, 4, weights, false, false, 10000000);
|
126
|
+
let result = omega(returns, 4, weights, false, false, 10000000, 0);
|
126
127
|
assert(result == 22500000);
|
127
128
|
}
|
128
129
|
|
@@ -134,6 +135,6 @@ fn test_omega_zero_returns() {
|
|
134
135
|
}
|
135
136
|
|
136
137
|
let weights = [100000; ARRAY_SIZE];
|
137
|
-
let result = omega(returns, 5, weights, false, false, 10000000);
|
138
|
+
let result = omega(returns, 5, weights, false, false, 10000000, 0);
|
138
139
|
assert(result == 10000000);
|
139
140
|
}
|
@@ -18,6 +18,7 @@ pub fn sortino(
|
|
18
18
|
avg_daily_return: i64,
|
19
19
|
variance_val: i64,
|
20
20
|
ann_excess_return_val: i64,
|
21
|
+
daily_rf: i64,
|
21
22
|
) -> i64 {
|
22
23
|
if !bypass_confidence & actual_len < STATISTICAL_CONFIDENCE_MINIMUM_N {
|
23
24
|
SORTINO_NOCONFIDENCE_VALUE
|
@@ -31,7 +32,7 @@ pub fn sortino(
|
|
31
32
|
|
32
33
|
for i in 0..ARRAY_SIZE {
|
33
34
|
if (i as u32) < actual_len {
|
34
|
-
if log_returns[i] <
|
35
|
+
if log_returns[i] < daily_rf {
|
35
36
|
downside_returns_sum += log_returns[i];
|
36
37
|
negative_count += 1;
|
37
38
|
if use_weighting {
|
@@ -57,7 +58,7 @@ pub fn sortino(
|
|
57
58
|
let mut weighted_sum_sq_diff: i64 = 0;
|
58
59
|
for i in 0..ARRAY_SIZE {
|
59
60
|
if (i as u32) < actual_len {
|
60
|
-
if log_returns[i] <
|
61
|
+
if log_returns[i] < daily_rf {
|
61
62
|
let diff = log_returns[i] - downside_mean;
|
62
63
|
let sq_diff = (diff * diff) / 1000000;
|
63
64
|
weighted_sum_sq_diff += sq_diff * weights[i];
|
@@ -73,7 +74,7 @@ pub fn sortino(
|
|
73
74
|
let mut sum_sq_diff: i64 = 0;
|
74
75
|
for i in 0..ARRAY_SIZE {
|
75
76
|
if (i as u32) < actual_len {
|
76
|
-
if log_returns[i] <
|
77
|
+
if log_returns[i] < daily_rf {
|
77
78
|
let diff = log_returns[i] - downside_mean;
|
78
79
|
let sq_diff = (diff * diff) / 1000000;
|
79
80
|
sum_sq_diff += sq_diff;
|
@@ -126,6 +127,7 @@ fn test_sortino_normal_case() {
|
|
126
127
|
avg,
|
127
128
|
variance_val,
|
128
129
|
ann_excess,
|
130
|
+
0,
|
129
131
|
);
|
130
132
|
assert(result != 0);
|
131
133
|
}
|
@@ -151,6 +153,7 @@ fn test_sortino_no_negative_returns() {
|
|
151
153
|
avg,
|
152
154
|
variance_val,
|
153
155
|
ann_excess,
|
156
|
+
0,
|
154
157
|
);
|
155
158
|
assert(result == 0);
|
156
159
|
}
|
@@ -176,6 +179,7 @@ fn test_sortino_all_negative_returns() {
|
|
176
179
|
avg,
|
177
180
|
variance_val,
|
178
181
|
ann_excess,
|
182
|
+
0,
|
179
183
|
);
|
180
184
|
assert(result != 0);
|
181
185
|
}
|
@@ -203,6 +207,7 @@ fn test_sortino_high_downside_volatility() {
|
|
203
207
|
avg,
|
204
208
|
variance_val,
|
205
209
|
ann_excess,
|
210
|
+
0,
|
206
211
|
);
|
207
212
|
assert(result != 0);
|
208
213
|
}
|
{proof_of_portfolio-0.0.99 → proof_of_portfolio-0.0.100}/proof_of_portfolio/circuits/src/main.nr
RENAMED
@@ -29,6 +29,7 @@ fn main(
|
|
29
29
|
days_in_year: i64,
|
30
30
|
omega_loss_min: i64,
|
31
31
|
annual_risk_free: i64,
|
32
|
+
daily_rf: i64,
|
32
33
|
drawdown_max_percent: i64,
|
33
34
|
) -> pub [Field; 9] {
|
34
35
|
// Verify all trading signals are included in the merkle tree
|
@@ -137,6 +138,7 @@ fn main(
|
|
137
138
|
use_weighting,
|
138
139
|
bypass_confidence,
|
139
140
|
omega_loss_min,
|
141
|
+
daily_rf,
|
140
142
|
);
|
141
143
|
let sortino_ratio = sortino(
|
142
144
|
returns_array,
|
@@ -148,6 +150,7 @@ fn main(
|
|
148
150
|
avg_daily_return,
|
149
151
|
variance_val,
|
150
152
|
ann_excess_return_val,
|
153
|
+
daily_rf,
|
151
154
|
);
|
152
155
|
let stat_confidence = statistical_confidence(
|
153
156
|
returns_array,
|