proof-of-portfolio 0.0.99__py3-none-any.whl → 0.0.100__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/_version.py +1 -1
- proof_of_portfolio/circuits/components/src/core/omega.nr +9 -8
- proof_of_portfolio/circuits/components/src/core/sortino.nr +8 -3
- proof_of_portfolio/circuits/src/main.nr +3 -0
- proof_of_portfolio/circuits/target/circuits.json +1 -1
- proof_of_portfolio/circuits/vk/vk +0 -0
- proof_of_portfolio/proof_generator.py +5 -0
- {proof_of_portfolio-0.0.99.dist-info → proof_of_portfolio-0.0.100.dist-info}/METADATA +1 -1
- {proof_of_portfolio-0.0.99.dist-info → proof_of_portfolio-0.0.100.dist-info}/RECORD +12 -12
- {proof_of_portfolio-0.0.99.dist-info → proof_of_portfolio-0.0.100.dist-info}/WHEEL +0 -0
- {proof_of_portfolio-0.0.99.dist-info → proof_of_portfolio-0.0.100.dist-info}/entry_points.txt +0 -0
- {proof_of_portfolio-0.0.99.dist-info → proof_of_portfolio-0.0.100.dist-info}/top_level.txt +0 -0
proof_of_portfolio/_version.py
CHANGED
@@ -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
|
}
|
@@ -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,
|