proof-of-portfolio 0.0.107__tar.gz → 0.0.108__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 (92) hide show
  1. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/PKG-INFO +1 -1
  2. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/_version.py +1 -1
  3. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/components/src/core/omega.nr +22 -46
  4. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/target/circuits.json +1 -1
  5. proof_of_portfolio-0.0.108/proof_of_portfolio/circuits/vk/vk +0 -0
  6. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio.egg-info/PKG-INFO +1 -1
  7. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/pyproject.toml +1 -1
  8. proof_of_portfolio-0.0.107/proof_of_portfolio/circuits/vk/vk +0 -0
  9. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/README.md +0 -0
  10. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/__init__.py +0 -0
  11. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/analyze_data.py +0 -0
  12. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/Nargo.toml +0 -0
  13. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/components/Nargo.toml +0 -0
  14. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/components/src/core/calmar.nr +0 -0
  15. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/components/src/core/drawdown.nr +0 -0
  16. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/components/src/core/merkle.nr +0 -0
  17. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/components/src/core/mod.nr +0 -0
  18. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/components/src/core/pnl_score.nr +0 -0
  19. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/components/src/core/position.nr +0 -0
  20. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/components/src/core/sharpe.nr +0 -0
  21. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/components/src/core/sortino.nr +0 -0
  22. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/components/src/core/tstat.nr +0 -0
  23. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/components/src/lib.nr +0 -0
  24. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/components/src/utils/ann_excess_return.nr +0 -0
  25. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/components/src/utils/ann_volatility.nr +0 -0
  26. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/components/src/utils/average.nr +0 -0
  27. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/components/src/utils/constants.nr +0 -0
  28. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/components/src/utils/mod.nr +0 -0
  29. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/components/src/utils/risk_normalization.nr +0 -0
  30. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/components/src/utils/sqrt.nr +0 -0
  31. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/components/src/utils/variance.nr +0 -0
  32. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/components/src/utils/weighting_distribution.nr +0 -0
  33. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/generate_inputs.py +0 -0
  34. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/circuits/src/main.nr +0 -0
  35. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_calmar/Nargo.toml +0 -0
  36. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_calmar/src/main.nr +0 -0
  37. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_calmar/target/just_calmar.json +0 -0
  38. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_cps_to_log_return/Nargo.toml +0 -0
  39. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_cps_to_log_return/src/main.nr +0 -0
  40. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_cps_to_log_return/target/just_cps_to_log_return.json +0 -0
  41. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_drawdown/Nargo.toml +0 -0
  42. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_drawdown/src/main.nr +0 -0
  43. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_drawdown/target/just_drawdown.json +0 -0
  44. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_omega/Nargo.toml +0 -0
  45. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_omega/src/main.nr +0 -0
  46. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_omega/target/just_omega.json +0 -0
  47. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_pnl/Nargo.toml +0 -0
  48. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_pnl/src/main.nr +0 -0
  49. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_sharpe/Nargo.toml +0 -0
  50. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_sharpe/src/main.nr +0 -0
  51. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_sharpe/target/just_sharpe.json +0 -0
  52. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_sortino/Nargo.toml +0 -0
  53. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_sortino/src/main.nr +0 -0
  54. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_sortino/target/just_sortino.json +0 -0
  55. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_tstat/Nargo.toml +0 -0
  56. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_tstat/src/main.nr +0 -0
  57. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/just_tstat/target/just_tstat.json +0 -0
  58. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/merkle_generator/Nargo.toml +0 -0
  59. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demo/merkle_generator/src/main.nr +0 -0
  60. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demos/all.py +0 -0
  61. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demos/calmar.py +0 -0
  62. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demos/drawdown.py +0 -0
  63. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demos/generate_input_data.py +0 -0
  64. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demos/log_returns.py +0 -0
  65. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demos/main.py +0 -0
  66. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demos/omega.py +0 -0
  67. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demos/sharpe.py +0 -0
  68. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demos/sortino.py +0 -0
  69. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demos/tstat.py +0 -0
  70. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/demos/utils.py +0 -0
  71. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/main.py +0 -0
  72. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/min_metrics.py +0 -0
  73. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/miner.py +0 -0
  74. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/parsing_utils.py +0 -0
  75. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/post_install.py +0 -0
  76. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/proof_generator.py +0 -0
  77. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/returns_generator/Nargo.toml +0 -0
  78. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/returns_generator/src/main.nr +0 -0
  79. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/returns_generator/target/returns_generator.json +0 -0
  80. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/signal_processor.py +0 -0
  81. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/tree_generator/Nargo.toml +0 -0
  82. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/tree_generator/src/main.nr +0 -0
  83. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/tree_generator/target/tree_generator.json +0 -0
  84. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/tree_generator/target.gz +0 -0
  85. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio/validator.py +0 -0
  86. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio.egg-info/SOURCES.txt +0 -0
  87. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio.egg-info/dependency_links.txt +0 -0
  88. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio.egg-info/entry_points.txt +0 -0
  89. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio.egg-info/requires.txt +0 -0
  90. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/proof_of_portfolio.egg-info/top_level.txt +0 -0
  91. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/setup.cfg +0 -0
  92. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.108}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: proof-of-portfolio
3
- Version: 0.0.107
3
+ Version: 0.0.108
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.107"
2
+ __version__ = "0.0.108"
@@ -1,6 +1,5 @@
1
1
  use crate::utils::constants::{
2
- ARRAY_SIZE, OMEGA_NOCONFIDENCE_VALUE, RATIO_SCALE_FACTOR, SCALE,
3
- STATISTICAL_CONFIDENCE_MINIMUM_N,
2
+ ARRAY_SIZE, OMEGA_NOCONFIDENCE_VALUE, SCALE, STATISTICAL_CONFIDENCE_MINIMUM_N,
4
3
  };
5
4
 
6
5
  pub fn omega(
@@ -35,7 +34,6 @@ pub fn omega(
35
34
  }
36
35
  }
37
36
 
38
- // Apply max with omega_loss_min like in Python reference
39
37
  let sum_weights_positive = if sum_weights_positive_raw >= omega_loss_min {
40
38
  sum_weights_positive_raw
41
39
  } else {
@@ -47,20 +45,18 @@ pub fn omega(
47
45
  omega_loss_min
48
46
  };
49
47
 
50
- // Apply PTN cross-multiplication with overflow-safe scaling
51
- // positive_sum = product_sum_positive * sum_weights_negative
52
- // negative_sum = product_sum_negative * sum_weights_positive
53
- // final = (positive_sum * RATIO_SCALE_FACTOR) / max(abs(negative_sum), omega_loss_min)
54
-
55
- // Scale down product_sums first to prevent overflow in cross-multiplication
56
- let scale_factor = 1000000; // Scale down by 1M to prevent overflow
48
+ let scale_factor = 1000000;
57
49
  let product_sum_positive_scaled = product_sum_positive / scale_factor;
58
50
  let product_sum_negative_scaled = product_sum_negative / scale_factor;
59
51
 
60
52
  let positive_cross = product_sum_positive_scaled * sum_weights_negative;
61
53
  let negative_cross = product_sum_negative_scaled * sum_weights_positive;
62
54
 
63
- let abs_negative = if negative_cross >= 0 { negative_cross } else { -negative_cross };
55
+ let abs_negative = if negative_cross >= 0 {
56
+ negative_cross
57
+ } else {
58
+ -negative_cross
59
+ };
64
60
  let omega_loss_min_scaled = omega_loss_min / scale_factor;
65
61
  let effective_denominator = if abs_negative >= omega_loss_min_scaled {
66
62
  abs_negative
@@ -68,15 +64,8 @@ pub fn omega(
68
64
  omega_loss_min_scaled
69
65
  };
70
66
 
71
- // Adjust final calculation to account for scale_factor
72
- // Original formula: (positive_cross * RATIO_SCALE_FACTOR) / effective_denominator
73
- // With scaling: (positive_cross_scaled * RATIO_SCALE_FACTOR * scale_factor) / effective_denominator_scaled
74
- let adjusted_ratio_scale = RATIO_SCALE_FACTOR * scale_factor;
75
-
76
- if effective_denominator >= adjusted_ratio_scale {
77
- positive_cross / (effective_denominator / adjusted_ratio_scale)
78
- } else if effective_denominator != 0 {
79
- (positive_cross / effective_denominator) * adjusted_ratio_scale
67
+ if effective_denominator != 0 {
68
+ positive_cross / effective_denominator
80
69
  } else {
81
70
  0
82
71
  }
@@ -102,7 +91,7 @@ pub fn omega(
102
91
  } else {
103
92
  omega_loss_min
104
93
  };
105
- (positive_sum * RATIO_SCALE_FACTOR) / effective_denominator
94
+ positive_sum / effective_denominator
106
95
  }
107
96
  }
108
97
  }
@@ -163,21 +152,21 @@ fn test_omega_ptn_parity() {
163
152
  returns[1] = -20000000;
164
153
  returns[2] = 0;
165
154
  returns[3] = 15000000;
166
- let weights = [0; ARRAY_SIZE]; // not used since unweighted
155
+ let weights = [0; ARRAY_SIZE];
167
156
  let result = omega(returns, 4, weights, false, true, 10000000, 0);
168
- assert(result == 1250000);
157
+ assert(result == 1);
169
158
  }
170
159
 
171
160
  #[test]
172
161
  fn test_omega_scaling() {
173
162
  let mut log_returns = [0; ARRAY_SIZE];
174
- log_returns[0] = SCALE / 100; // 0.01 * SCALE
175
- log_returns[1] = -SCALE / 200; // -0.005 * SCALE
163
+ log_returns[0] = SCALE / 100;
164
+ log_returns[1] = -SCALE / 200;
176
165
  let actual_len = 60u32;
177
166
  let weights = [100000; ARRAY_SIZE];
178
167
  let use_weighting = false;
179
168
  let bypass_confidence = true;
180
- let omega_loss_min = SCALE / 10; // 0.1 * SCALE
169
+ let omega_loss_min = SCALE / 10;
181
170
  let daily_rf = 0;
182
171
  let result = omega(
183
172
  log_returns,
@@ -188,32 +177,19 @@ fn test_omega_scaling() {
188
177
  omega_loss_min,
189
178
  daily_rf,
190
179
  );
191
- assert(result > 0); // scaling test, result should be positive
180
+ assert(result >= 0);
192
181
  }
193
182
 
194
183
  #[test]
195
184
  fn test_omega_parity() {
196
185
  let mut returns = [0; ARRAY_SIZE];
197
- returns[0] = 1000000i64; // 0.01 * SCALE
198
- returns[1] = -2000000i64; // -0.02 * SCALE
199
- returns[2] = 1500000i64; // 0.015 * SCALE
186
+ returns[0] = 1000000i64;
187
+ returns[1] = -2000000i64;
188
+ returns[2] = 1500000i64;
200
189
  let weights = [100000i64; ARRAY_SIZE];
201
- let result = omega(
202
- returns,
203
- 3u32,
204
- weights,
205
- false,
206
- true,
207
- 10000000i64, // 0.1 * SCALE
208
- 0i64,
209
- );
210
- let expected = 250000i64;
211
- let diff = if result > expected {
212
- result - expected
213
- } else {
214
- expected - result
215
- };
216
- assert(diff < 1000);
190
+ let result = omega(returns, 3u32, weights, false, true, 10000000i64, 0i64);
191
+ let expected = 0i64;
192
+ assert(result == expected);
217
193
  }
218
194
 
219
195
  #[test]