proof-of-portfolio 0.0.55__tar.gz → 0.0.57__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 (95) hide show
  1. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/PKG-INFO +1 -1
  2. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/_version.py +1 -1
  3. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/proof_generator.py +5 -5
  4. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/returns_generator/src/main.nr +7 -45
  5. proof_of_portfolio-0.0.57/proof_of_portfolio/returns_generator/target/returns_generator.json +1 -0
  6. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio.egg-info/PKG-INFO +1 -1
  7. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/pyproject.toml +1 -1
  8. proof_of_portfolio-0.0.55/proof_of_portfolio/returns_generator/target/returns_generator.json +0 -1
  9. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/README.md +0 -0
  10. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/__init__.py +0 -0
  11. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/analyze_data.py +0 -0
  12. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/Nargo.toml +0 -0
  13. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/Nargo.toml +0 -0
  14. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/core/calmar.nr +0 -0
  15. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/core/cps_to_log_returns.nr +0 -0
  16. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/core/drawdown.nr +0 -0
  17. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/core/merkle.nr +0 -0
  18. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/core/mod.nr +0 -0
  19. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/core/omega.nr +0 -0
  20. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/core/position.nr +0 -0
  21. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/core/sharpe.nr +0 -0
  22. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/core/sortino.nr +0 -0
  23. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/core/tstat.nr +0 -0
  24. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/float/Nargo.toml +0 -0
  25. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/float/Verifier.toml +0 -0
  26. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/float/src/lib.nr +0 -0
  27. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/lib.nr +0 -0
  28. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/nrstat.nr +0 -0
  29. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/utils/ann_excess_return.nr +0 -0
  30. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/utils/ann_volatility.nr +0 -0
  31. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/utils/average.nr +0 -0
  32. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/utils/constants.nr +0 -0
  33. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/utils/mod.nr +0 -0
  34. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/utils/sqrt.nr +0 -0
  35. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/utils/variance.nr +0 -0
  36. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/components/src/utils/weighting_distribution.nr +0 -0
  37. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/generate_inputs.py +0 -0
  38. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/proof/proof +0 -0
  39. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/proof/public_inputs +0 -0
  40. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/src/main.nr +0 -0
  41. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/target/circuits.json +0 -0
  42. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/circuits/vk/vk +0 -0
  43. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/just_calmar/Nargo.toml +0 -0
  44. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/just_calmar/src/main.nr +0 -0
  45. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/just_calmar/target/just_calmar.json +0 -0
  46. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/just_cps_to_log_return/Nargo.toml +0 -0
  47. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/just_cps_to_log_return/src/main.nr +0 -0
  48. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/just_cps_to_log_return/target/just_cps_to_log_return.json +0 -0
  49. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/just_drawdown/Nargo.toml +0 -0
  50. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/just_drawdown/src/main.nr +0 -0
  51. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/just_drawdown/target/just_drawdown.json +0 -0
  52. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/just_omega/Nargo.toml +0 -0
  53. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/just_omega/src/main.nr +0 -0
  54. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/just_omega/target/just_omega.json +0 -0
  55. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/just_sharpe/Nargo.toml +0 -0
  56. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/just_sharpe/src/main.nr +0 -0
  57. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/just_sharpe/target/just_sharpe.json +0 -0
  58. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/just_sortino/Nargo.toml +0 -0
  59. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/just_sortino/src/main.nr +0 -0
  60. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/just_sortino/target/just_sortino.json +0 -0
  61. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/just_tstat/Nargo.toml +0 -0
  62. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/just_tstat/src/main.nr +0 -0
  63. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/just_tstat/target/just_tstat.json +0 -0
  64. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/merkle_generator/Nargo.toml +0 -0
  65. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demo/merkle_generator/src/main.nr +0 -0
  66. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demos/all.py +0 -0
  67. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demos/calmar.py +0 -0
  68. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demos/drawdown.py +0 -0
  69. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demos/generate_input_data.py +0 -0
  70. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demos/log_returns.py +0 -0
  71. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demos/main.py +0 -0
  72. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demos/omega.py +0 -0
  73. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demos/sharpe.py +0 -0
  74. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demos/sortino.py +0 -0
  75. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demos/tstat.py +0 -0
  76. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/demos/utils.py +0 -0
  77. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/main.py +0 -0
  78. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/min_metrics.py +0 -0
  79. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/miner.py +0 -0
  80. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/parsing_utils.py +0 -0
  81. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/post_install.py +0 -0
  82. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/returns_generator/Nargo.toml +0 -0
  83. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/signal_processor.py +0 -0
  84. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/tree_generator/Nargo.toml +0 -0
  85. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/tree_generator/src/main.nr +0 -0
  86. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/tree_generator/target/tree_generator.json +0 -0
  87. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/tree_generator/target.gz +0 -0
  88. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio/validator.py +0 -0
  89. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio.egg-info/SOURCES.txt +0 -0
  90. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio.egg-info/dependency_links.txt +0 -0
  91. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio.egg-info/entry_points.txt +0 -0
  92. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio.egg-info/requires.txt +0 -0
  93. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/proof_of_portfolio.egg-info/top_level.txt +0 -0
  94. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/setup.cfg +0 -0
  95. {proof_of_portfolio-0.0.55 → proof_of_portfolio-0.0.57}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: proof-of-portfolio
3
- Version: 0.0.55
3
+ Version: 0.0.57
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.55"
2
+ __version__ = "0.0.57"
@@ -519,11 +519,11 @@ def generate_proof(
519
519
  returns_generator_dir = os.path.join(current_dir, "returns_generator")
520
520
 
521
521
  returns_prover_input = {
522
- "gains": [str(g) for g in gains],
523
- "losses": [str(l) for l in losses],
524
- "last_update_times": [str(t) for t in last_update_times],
525
- "accum_times": [str(a) for a in accum_times],
526
- "checkpoint_count": str(checkpoint_count),
522
+ "gains": [str(g) for g in aggregated_gains],
523
+ "losses": [str(l) for l in aggregated_losses],
524
+ "last_update_times": [str(t) for t in aggregated_last_update_times],
525
+ "accum_times": [str(a) for a in aggregated_accum_times],
526
+ "checkpoint_count": str(aggregated_checkpoint_count),
527
527
  "target_duration": str(target_duration),
528
528
  }
529
529
 
@@ -51,7 +51,7 @@ pub fn build_merkle_root(leaves: [Field; MAX_RETURNS], num_leaves: u32) -> Field
51
51
  }
52
52
  }
53
53
 
54
- // Converts checkpoint data to daily log returns.
54
+ // Accepts pre-processed daily returns directly (no filtering/aggregation)
55
55
  pub fn calculate_daily_returns(
56
56
  gains: [i64; MAX_CHECKPOINTS],
57
57
  losses: [i64; MAX_CHECKPOINTS],
@@ -61,54 +61,16 @@ pub fn calculate_daily_returns(
61
61
  target_duration: u64,
62
62
  ) -> ([i64; MAX_DAYS], u32) {
63
63
  let mut daily_returns: [i64; MAX_DAYS] = [0; MAX_DAYS];
64
- let mut daily_counts: [u32; MAX_DAYS] = [0; MAX_DAYS];
65
- let mut daily_sums: [i64; MAX_DAYS] = [0; MAX_DAYS];
66
- let mut unique_days: [u64; MAX_DAYS] = [0; MAX_DAYS];
67
- let mut num_days: u32 = 0;
68
64
 
69
- for i in 0..MAX_CHECKPOINTS {
70
- if (i as u32) < checkpoint_count {
71
- if accum_times[i] == target_duration {
72
- let start_time = last_update_times[i] - accum_times[i];
73
- let day_timestamp = start_time / (SECONDS_PER_DAY * 1000);
74
- let mut day_index: u32 = MAX_DAYS as u32;
75
- let mut found = false;
76
- for j in 0..MAX_DAYS {
77
- if !found {
78
- if unique_days[j] == day_timestamp {
79
- day_index = j as u32;
80
- found = true;
81
- } else {
82
- if unique_days[j] == 0 {
83
- if day_index == (MAX_DAYS as u32) {
84
- unique_days[j] = day_timestamp;
85
- day_index = j as u32;
86
- if (j as u32) >= num_days {
87
- num_days = (j as u32) + 1;
88
- }
89
- found = true;
90
- }
91
- }
92
- }
93
- }
94
- }
95
- if day_index < (MAX_DAYS as u32) {
96
- daily_sums[day_index] += gains[i] + losses[i];
97
- daily_counts[day_index] += 1;
98
- }
99
- }
100
- }
101
- }
102
- let mut valid_days: u32 = 0;
65
+ // Since Python pre-processes the data to match subnet logic,
66
+ // we just pass through the aggregated daily returns directly
103
67
  for i in 0..MAX_DAYS {
104
- if daily_counts[i] == DAILY_CHECKPOINTS {
105
- if valid_days < (MAX_DAYS as u32) {
106
- daily_returns[valid_days] = daily_sums[i];
107
- valid_days += 1;
108
- }
68
+ if (i as u32) < checkpoint_count {
69
+ daily_returns[i] = gains[i] + losses[i];
109
70
  }
110
71
  }
111
- (daily_returns, valid_days)
72
+
73
+ (daily_returns, checkpoint_count)
112
74
  }
113
75
 
114
76
  pub fn cps_to_log_returns(