voly 0.0.194__tar.gz → 0.0.195__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 (26) hide show
  1. {voly-0.0.194/src/voly.egg-info → voly-0.0.195}/PKG-INFO +1 -1
  2. {voly-0.0.194 → voly-0.0.195}/pyproject.toml +2 -2
  3. {voly-0.0.194 → voly-0.0.195}/src/voly/models.py +8 -6
  4. {voly-0.0.194 → voly-0.0.195/src/voly.egg-info}/PKG-INFO +1 -1
  5. {voly-0.0.194 → voly-0.0.195}/LICENSE +0 -0
  6. {voly-0.0.194 → voly-0.0.195}/README.md +0 -0
  7. {voly-0.0.194 → voly-0.0.195}/setup.cfg +0 -0
  8. {voly-0.0.194 → voly-0.0.195}/setup.py +0 -0
  9. {voly-0.0.194 → voly-0.0.195}/src/voly/__init__.py +0 -0
  10. {voly-0.0.194 → voly-0.0.195}/src/voly/client.py +0 -0
  11. {voly-0.0.194 → voly-0.0.195}/src/voly/core/__init__.py +0 -0
  12. {voly-0.0.194 → voly-0.0.195}/src/voly/core/charts.py +0 -0
  13. {voly-0.0.194 → voly-0.0.195}/src/voly/core/data.py +0 -0
  14. {voly-0.0.194 → voly-0.0.195}/src/voly/core/fit.py +0 -0
  15. {voly-0.0.194 → voly-0.0.195}/src/voly/core/hd.py +0 -0
  16. {voly-0.0.194 → voly-0.0.195}/src/voly/core/interpolate.py +0 -0
  17. {voly-0.0.194 → voly-0.0.195}/src/voly/core/rnd.py +0 -0
  18. {voly-0.0.194 → voly-0.0.195}/src/voly/exceptions.py +0 -0
  19. {voly-0.0.194 → voly-0.0.195}/src/voly/formulas.py +0 -0
  20. {voly-0.0.194 → voly-0.0.195}/src/voly/utils/__init__.py +0 -0
  21. {voly-0.0.194 → voly-0.0.195}/src/voly/utils/density.py +0 -0
  22. {voly-0.0.194 → voly-0.0.195}/src/voly/utils/logger.py +0 -0
  23. {voly-0.0.194 → voly-0.0.195}/src/voly.egg-info/SOURCES.txt +0 -0
  24. {voly-0.0.194 → voly-0.0.195}/src/voly.egg-info/dependency_links.txt +0 -0
  25. {voly-0.0.194 → voly-0.0.195}/src/voly.egg-info/requires.txt +0 -0
  26. {voly-0.0.194 → voly-0.0.195}/src/voly.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: voly
3
- Version: 0.0.194
3
+ Version: 0.0.195
4
4
  Summary: Options & volatility research package
5
5
  Author-email: Manu de Cara <manu.de.cara@gmail.com>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "voly"
7
- version = "0.0.194"
7
+ version = "0.0.195"
8
8
  description = "Options & volatility research package"
9
9
  readme = "README.md"
10
10
  authors = [
@@ -60,7 +60,7 @@ line_length = 100
60
60
  multi_line_output = 3
61
61
 
62
62
  [tool.mypy]
63
- python_version = "0.0.194"
63
+ python_version = "0.0.195"
64
64
  warn_return_any = true
65
65
  warn_unused_configs = true
66
66
  disallow_untyped_defs = true
@@ -90,8 +90,6 @@ class SVIModel:
90
90
  if len(k) <= 5:
91
91
  return [np.nan] * 5, np.inf
92
92
 
93
- from scipy.optimize import minimize
94
-
95
93
  vega = vega / vega.max() if vega.max() > 0 else np.ones_like(vega)
96
94
  m_init = np.mean(k)
97
95
  sigma_init = max(0.1, np.std(k) * 0.1)
@@ -102,7 +100,7 @@ class SVIModel:
102
100
  return loss
103
101
 
104
102
  result = minimize(score, [sigma_init, m_init], bounds=[(0.001, None), (None, None)],
105
- tol=1e-16, method="SLSQP", options={'maxfun': 5000})
103
+ tol=1e-16, method="SLSQP", options={'maxfun': 5000})
106
104
 
107
105
  sigma, m = result.x
108
106
  c, d, a_calib, loss = cls.calibration(tiv, vega, k, m, sigma)
@@ -116,7 +114,9 @@ class SVIModel:
116
114
  a_svi = a_calib / tau
117
115
  rho_svi = b_svi = 0
118
116
 
119
- return [a_svi, b_svi, m, rho_svi, sigma], loss
117
+ # Validate parameters
118
+ params = [a_svi, b_svi, m, rho_svi, sigma]
119
+ return params, loss
120
120
 
121
121
  @classmethod
122
122
  def correct_calendar_arbitrage(cls, params, t, tiv, vega, k, prev_params, prev_t, k_grid):
@@ -162,11 +162,13 @@ class SVIModel:
162
162
 
163
163
  if result.success:
164
164
  new_params = result.x
165
- w_current = cls.svi(k_constraint, new_params[0] * t, new_params[1] * t, *new_params[2:])
165
+ a, b, m, rho, sigma = new_params
166
+ a_scaled, b_scaled = a * t, b * t
167
+ w_current = cls.svi(k_constraint, a_scaled, b_scaled, m, rho, sigma)
166
168
  w_prev = cls.svi(k_constraint, a_prev * prev_t, b_prev * prev_t, m_prev, rho_prev, sigma_prev)
167
169
  violation = np.min(w_current - w_prev)
168
170
  logger.info(f"Calendar arbitrage correction {'successful' if violation >= -1e-6 else 'failed'} for t={t:.4f}, "
169
- f"min margin={violation:.6f}")
171
+ f"min margin={violation:.6f}")
170
172
  return new_params
171
173
  logger.warning(f"Calendar arbitrage correction failed for t={t:.4f}")
172
174
  return params
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: voly
3
- Version: 0.0.194
3
+ Version: 0.0.195
4
4
  Summary: Options & volatility research package
5
5
  Author-email: Manu de Cara <manu.de.cara@gmail.com>
6
6
  License: MIT
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes