proof-of-portfolio 0.0.107__tar.gz → 0.0.109__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 (91) hide show
  1. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/PKG-INFO +1 -1
  2. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/_version.py +1 -1
  3. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/components/src/core/omega.nr +15 -29
  4. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/target/circuits.json +1 -1
  5. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/proof_generator.py +1 -1
  6. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio.egg-info/PKG-INFO +1 -1
  7. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/pyproject.toml +1 -1
  8. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/README.md +0 -0
  9. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/__init__.py +0 -0
  10. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/analyze_data.py +0 -0
  11. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/Nargo.toml +0 -0
  12. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/components/Nargo.toml +0 -0
  13. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/components/src/core/calmar.nr +0 -0
  14. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/components/src/core/drawdown.nr +0 -0
  15. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/components/src/core/merkle.nr +0 -0
  16. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/components/src/core/mod.nr +0 -0
  17. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/components/src/core/pnl_score.nr +0 -0
  18. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/components/src/core/position.nr +0 -0
  19. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/components/src/core/sharpe.nr +0 -0
  20. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/components/src/core/sortino.nr +0 -0
  21. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/components/src/core/tstat.nr +0 -0
  22. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/components/src/lib.nr +0 -0
  23. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/components/src/utils/ann_excess_return.nr +0 -0
  24. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/components/src/utils/ann_volatility.nr +0 -0
  25. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/components/src/utils/average.nr +0 -0
  26. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/components/src/utils/constants.nr +0 -0
  27. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/components/src/utils/mod.nr +0 -0
  28. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/components/src/utils/risk_normalization.nr +0 -0
  29. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/components/src/utils/sqrt.nr +0 -0
  30. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/components/src/utils/variance.nr +0 -0
  31. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/components/src/utils/weighting_distribution.nr +0 -0
  32. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/generate_inputs.py +0 -0
  33. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/src/main.nr +0 -0
  34. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/circuits/vk/vk +0 -0
  35. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demo/just_calmar/Nargo.toml +0 -0
  36. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demo/just_calmar/src/main.nr +0 -0
  37. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demo/just_calmar/target/just_calmar.json +0 -0
  38. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/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.109}/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.109}/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.109}/proof_of_portfolio/demo/just_drawdown/Nargo.toml +0 -0
  42. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demo/just_drawdown/src/main.nr +0 -0
  43. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demo/just_drawdown/target/just_drawdown.json +0 -0
  44. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demo/just_omega/Nargo.toml +0 -0
  45. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demo/just_omega/src/main.nr +0 -0
  46. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demo/just_omega/target/just_omega.json +0 -0
  47. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demo/just_pnl/Nargo.toml +0 -0
  48. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demo/just_pnl/src/main.nr +0 -0
  49. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demo/just_sharpe/Nargo.toml +0 -0
  50. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demo/just_sharpe/src/main.nr +0 -0
  51. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demo/just_sharpe/target/just_sharpe.json +0 -0
  52. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demo/just_sortino/Nargo.toml +0 -0
  53. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demo/just_sortino/src/main.nr +0 -0
  54. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demo/just_sortino/target/just_sortino.json +0 -0
  55. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demo/just_tstat/Nargo.toml +0 -0
  56. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demo/just_tstat/src/main.nr +0 -0
  57. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demo/just_tstat/target/just_tstat.json +0 -0
  58. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demo/merkle_generator/Nargo.toml +0 -0
  59. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demo/merkle_generator/src/main.nr +0 -0
  60. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demos/all.py +0 -0
  61. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demos/calmar.py +0 -0
  62. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demos/drawdown.py +0 -0
  63. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demos/generate_input_data.py +0 -0
  64. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demos/log_returns.py +0 -0
  65. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demos/main.py +0 -0
  66. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demos/omega.py +0 -0
  67. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demos/sharpe.py +0 -0
  68. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demos/sortino.py +0 -0
  69. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demos/tstat.py +0 -0
  70. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/demos/utils.py +0 -0
  71. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/main.py +0 -0
  72. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/min_metrics.py +0 -0
  73. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/miner.py +0 -0
  74. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/parsing_utils.py +0 -0
  75. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/post_install.py +0 -0
  76. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/returns_generator/Nargo.toml +0 -0
  77. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/returns_generator/src/main.nr +0 -0
  78. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/returns_generator/target/returns_generator.json +0 -0
  79. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/signal_processor.py +0 -0
  80. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/tree_generator/Nargo.toml +0 -0
  81. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/tree_generator/src/main.nr +0 -0
  82. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/tree_generator/target/tree_generator.json +0 -0
  83. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/tree_generator/target.gz +0 -0
  84. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio/validator.py +0 -0
  85. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio.egg-info/SOURCES.txt +0 -0
  86. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio.egg-info/dependency_links.txt +0 -0
  87. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio.egg-info/entry_points.txt +0 -0
  88. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio.egg-info/requires.txt +0 -0
  89. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/proof_of_portfolio.egg-info/top_level.txt +0 -0
  90. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/setup.cfg +0 -0
  91. {proof_of_portfolio-0.0.107 → proof_of_portfolio-0.0.109}/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.109
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.109"
@@ -35,7 +35,6 @@ pub fn omega(
35
35
  }
36
36
  }
37
37
 
38
- // Apply max with omega_loss_min like in Python reference
39
38
  let sum_weights_positive = if sum_weights_positive_raw >= omega_loss_min {
40
39
  sum_weights_positive_raw
41
40
  } else {
@@ -47,20 +46,18 @@ pub fn omega(
47
46
  omega_loss_min
48
47
  };
49
48
 
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
49
+ let scale_factor = 1000000;
57
50
  let product_sum_positive_scaled = product_sum_positive / scale_factor;
58
51
  let product_sum_negative_scaled = product_sum_negative / scale_factor;
59
52
 
60
53
  let positive_cross = product_sum_positive_scaled * sum_weights_negative;
61
54
  let negative_cross = product_sum_negative_scaled * sum_weights_positive;
62
55
 
63
- let abs_negative = if negative_cross >= 0 { negative_cross } else { -negative_cross };
56
+ let abs_negative = if negative_cross >= 0 {
57
+ negative_cross
58
+ } else {
59
+ -negative_cross
60
+ };
64
61
  let omega_loss_min_scaled = omega_loss_min / scale_factor;
65
62
  let effective_denominator = if abs_negative >= omega_loss_min_scaled {
66
63
  abs_negative
@@ -68,9 +65,6 @@ pub fn omega(
68
65
  omega_loss_min_scaled
69
66
  };
70
67
 
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
68
  let adjusted_ratio_scale = RATIO_SCALE_FACTOR * scale_factor;
75
69
 
76
70
  if effective_denominator >= adjusted_ratio_scale {
@@ -163,7 +157,7 @@ fn test_omega_ptn_parity() {
163
157
  returns[1] = -20000000;
164
158
  returns[2] = 0;
165
159
  returns[3] = 15000000;
166
- let weights = [0; ARRAY_SIZE]; // not used since unweighted
160
+ let weights = [0; ARRAY_SIZE];
167
161
  let result = omega(returns, 4, weights, false, true, 10000000, 0);
168
162
  assert(result == 1250000);
169
163
  }
@@ -171,13 +165,13 @@ fn test_omega_ptn_parity() {
171
165
  #[test]
172
166
  fn test_omega_scaling() {
173
167
  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
168
+ log_returns[0] = SCALE / 100;
169
+ log_returns[1] = -SCALE / 200;
176
170
  let actual_len = 60u32;
177
171
  let weights = [100000; ARRAY_SIZE];
178
172
  let use_weighting = false;
179
173
  let bypass_confidence = true;
180
- let omega_loss_min = SCALE / 10; // 0.1 * SCALE
174
+ let omega_loss_min = SCALE / 10;
181
175
  let daily_rf = 0;
182
176
  let result = omega(
183
177
  log_returns,
@@ -188,25 +182,17 @@ fn test_omega_scaling() {
188
182
  omega_loss_min,
189
183
  daily_rf,
190
184
  );
191
- assert(result > 0); // scaling test, result should be positive
185
+ assert(result > 0);
192
186
  }
193
187
 
194
188
  #[test]
195
189
  fn test_omega_parity() {
196
190
  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
191
+ returns[0] = 1000000i64;
192
+ returns[1] = -2000000i64;
193
+ returns[2] = 1500000i64;
200
194
  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
- );
195
+ let result = omega(returns, 3u32, weights, false, true, 10000000i64, 0i64);
210
196
  let expected = 250000i64;
211
197
  let diff = if result > expected {
212
198
  result - expected