voly 0.0.172__tar.gz → 0.0.174__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.172/src/voly.egg-info → voly-0.0.174}/PKG-INFO +1 -1
  2. {voly-0.0.172 → voly-0.0.174}/pyproject.toml +2 -2
  3. {voly-0.0.172 → voly-0.0.174}/src/voly/models.py +9 -9
  4. {voly-0.0.172 → voly-0.0.174/src/voly.egg-info}/PKG-INFO +1 -1
  5. {voly-0.0.172 → voly-0.0.174}/LICENSE +0 -0
  6. {voly-0.0.172 → voly-0.0.174}/README.md +0 -0
  7. {voly-0.0.172 → voly-0.0.174}/setup.cfg +0 -0
  8. {voly-0.0.172 → voly-0.0.174}/setup.py +0 -0
  9. {voly-0.0.172 → voly-0.0.174}/src/voly/__init__.py +0 -0
  10. {voly-0.0.172 → voly-0.0.174}/src/voly/client.py +0 -0
  11. {voly-0.0.172 → voly-0.0.174}/src/voly/core/__init__.py +0 -0
  12. {voly-0.0.172 → voly-0.0.174}/src/voly/core/charts.py +0 -0
  13. {voly-0.0.172 → voly-0.0.174}/src/voly/core/data.py +0 -0
  14. {voly-0.0.172 → voly-0.0.174}/src/voly/core/fit.py +0 -0
  15. {voly-0.0.172 → voly-0.0.174}/src/voly/core/hd.py +0 -0
  16. {voly-0.0.172 → voly-0.0.174}/src/voly/core/interpolate.py +0 -0
  17. {voly-0.0.172 → voly-0.0.174}/src/voly/core/rnd.py +0 -0
  18. {voly-0.0.172 → voly-0.0.174}/src/voly/exceptions.py +0 -0
  19. {voly-0.0.172 → voly-0.0.174}/src/voly/formulas.py +0 -0
  20. {voly-0.0.172 → voly-0.0.174}/src/voly/utils/__init__.py +0 -0
  21. {voly-0.0.172 → voly-0.0.174}/src/voly/utils/density.py +0 -0
  22. {voly-0.0.172 → voly-0.0.174}/src/voly/utils/logger.py +0 -0
  23. {voly-0.0.172 → voly-0.0.174}/src/voly.egg-info/SOURCES.txt +0 -0
  24. {voly-0.0.172 → voly-0.0.174}/src/voly.egg-info/dependency_links.txt +0 -0
  25. {voly-0.0.172 → voly-0.0.174}/src/voly.egg-info/requires.txt +0 -0
  26. {voly-0.0.172 → voly-0.0.174}/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.172
3
+ Version: 0.0.174
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.172"
7
+ version = "0.0.174"
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.172"
63
+ python_version = "0.0.174"
64
64
  warn_return_any = true
65
65
  warn_unused_configs = true
66
66
  disallow_untyped_defs = true
@@ -24,9 +24,9 @@ class SVIModel:
24
24
  PARAM_DESCRIPTIONS = {
25
25
  'a': 'Base level of total implied variance',
26
26
  'b': 'Volatility skewness/smile modulation (controls wing slopes)',
27
- 'sigma': 'Convexity control of the volatility smile (reduces ATM curvature)',
28
- 'rho': 'Skewness/slope of the volatility smile (-1 to 1, rotates smile)',
29
27
  'm': 'Horizontal shift of the smile peak',
28
+ 'rho': 'Skewness/slope of the volatility smile (-1 to 1, rotates smile)',
29
+ 'sigma': 'Convexity control of the volatility smile (reduces ATM curvature)',
30
30
  'nu': 'ATM variance (level of ATM volatility)',
31
31
  'psi': 'ATM volatility skew (affects the gradient of the curve at ATM point)',
32
32
  'p': 'Slope of put wing (left side of curve)',
@@ -35,7 +35,7 @@ class SVIModel:
35
35
  }
36
36
 
37
37
  @staticmethod
38
- def svi_raw(k, a, b, m, rho, sigma):
38
+ def svi(k, a, b, m, rho, sigma):
39
39
  assert b >= 0, 'b must be non-negative'
40
40
  assert abs(rho) <= 1, '|rho| must be <= 1'
41
41
  assert sigma >= 0, 'sigma must be non-negative'
@@ -43,7 +43,7 @@ class SVIModel:
43
43
  return a + b * (rho * (k - m) + sqrt((k - m) ** 2 + sigma ** 2))
44
44
 
45
45
  @staticmethod
46
- def svi(LM: float, a: float, b: float, sigma: float, rho: float, m: float) -> float:
46
+ def svi_raw(LM: float, a: float, b: float, m: float, rho: float, sigma: float) -> float:
47
47
  return a + b * (rho * (LM - m) + np.sqrt((LM - m) ** 2 + sigma ** 2))
48
48
 
49
49
  @staticmethod
@@ -183,13 +183,13 @@ class SVIModel:
183
183
  if np.any(np.isnan(params)) or np.any(np.isnan(prev_params)):
184
184
  return params
185
185
 
186
- a_init, b_init, sigma_init, rho_init, m_init = params
187
- a_prev, b_prev, sigma_prev, rho_prev, m_prev = prev_params
186
+ a_init, b_init, m_init, rho_init, sigma_init = params
187
+ a_prev, b_prev, m_prev, rho_prev, sigma_prev = prev_params
188
188
  k_constraint = np.unique(np.concatenate([k, np.linspace(min(k), max(k), len(k_grid))]))
189
189
 
190
190
  def objective(x):
191
- a, b, sigma, rho, m = x
192
- w_model = cls.svi(k, a * t, b * t, sigma, rho, m)
191
+ a, b, m, rho, sigma = x
192
+ w_model = cls.svi(k, a * t, b * t, m, rho, sigma)
193
193
  fit_loss = ((w_model - tiv) ** 2 * vega).mean()
194
194
  param_deviation = sum(((x[i] - params[i]) / max(abs(params[i]), 1e-6)) ** 2
195
195
  for i in range(len(params)))
@@ -215,7 +215,7 @@ class SVIModel:
215
215
  ]
216
216
 
217
217
  result = minimize(
218
- objective, [a_init, b_init, sigma_init, rho_init, m_init],
218
+ objective, [a_init, b_init, m_init, rho_init, sigma_init],
219
219
  bounds=bounds, constraints=constraints, method='SLSQP',
220
220
  options={'disp': False, 'maxiter': 1000, 'ftol': 1e-8}
221
221
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: voly
3
- Version: 0.0.172
3
+ Version: 0.0.174
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