voly 0.0.161__tar.gz → 0.0.162__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.161/src/voly.egg-info → voly-0.0.162}/PKG-INFO +1 -1
  2. {voly-0.0.161 → voly-0.0.162}/pyproject.toml +2 -2
  3. {voly-0.0.161 → voly-0.0.162}/src/voly/formulas.py +28 -7
  4. {voly-0.0.161 → voly-0.0.162/src/voly.egg-info}/PKG-INFO +1 -1
  5. {voly-0.0.161 → voly-0.0.162}/LICENSE +0 -0
  6. {voly-0.0.161 → voly-0.0.162}/README.md +0 -0
  7. {voly-0.0.161 → voly-0.0.162}/setup.cfg +0 -0
  8. {voly-0.0.161 → voly-0.0.162}/setup.py +0 -0
  9. {voly-0.0.161 → voly-0.0.162}/src/voly/__init__.py +0 -0
  10. {voly-0.0.161 → voly-0.0.162}/src/voly/client.py +0 -0
  11. {voly-0.0.161 → voly-0.0.162}/src/voly/core/__init__.py +0 -0
  12. {voly-0.0.161 → voly-0.0.162}/src/voly/core/charts.py +0 -0
  13. {voly-0.0.161 → voly-0.0.162}/src/voly/core/data.py +0 -0
  14. {voly-0.0.161 → voly-0.0.162}/src/voly/core/fit.py +0 -0
  15. {voly-0.0.161 → voly-0.0.162}/src/voly/core/hd.py +0 -0
  16. {voly-0.0.161 → voly-0.0.162}/src/voly/core/interpolate.py +0 -0
  17. {voly-0.0.161 → voly-0.0.162}/src/voly/core/rnd.py +0 -0
  18. {voly-0.0.161 → voly-0.0.162}/src/voly/exceptions.py +0 -0
  19. {voly-0.0.161 → voly-0.0.162}/src/voly/models.py +0 -0
  20. {voly-0.0.161 → voly-0.0.162}/src/voly/utils/__init__.py +0 -0
  21. {voly-0.0.161 → voly-0.0.162}/src/voly/utils/density.py +0 -0
  22. {voly-0.0.161 → voly-0.0.162}/src/voly/utils/logger.py +0 -0
  23. {voly-0.0.161 → voly-0.0.162}/src/voly.egg-info/SOURCES.txt +0 -0
  24. {voly-0.0.161 → voly-0.0.162}/src/voly.egg-info/dependency_links.txt +0 -0
  25. {voly-0.0.161 → voly-0.0.162}/src/voly.egg-info/requires.txt +0 -0
  26. {voly-0.0.161 → voly-0.0.162}/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.161
3
+ Version: 0.0.162
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.161"
7
+ version = "0.0.162"
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.161"
63
+ python_version = "0.0.162"
64
64
  warn_return_any = true
65
65
  warn_unused_configs = true
66
66
  disallow_untyped_defs = true
@@ -15,22 +15,43 @@ from typing import Tuple
15
15
  def vectorize_inputs(func):
16
16
  """
17
17
  Decorator to vectorize Black-Scholes functions to handle both scalar and array inputs.
18
+ For invalid inputs (K <= 0, o <= 0, or t <= 0), returns np.nan instead of trying to compute.
18
19
  """
20
+
19
21
  def wrapper(s, K, r, o, t, option_type='call'):
20
22
  # Check if inputs are scalar
21
23
  K_scalar = np.isscalar(K)
22
24
  o_scalar = np.isscalar(o)
23
-
24
- # If both inputs are scalar, use the original function directly
25
- if K_scalar and o_scalar:
25
+ t_scalar = np.isscalar(t)
26
+
27
+ # Convert pandas Series to numpy arrays if needed
28
+ if isinstance(K, pd.Series):
29
+ K = K.values
30
+ if isinstance(o, pd.Series):
31
+ o = o.values
32
+ if isinstance(t, pd.Series):
33
+ t = t.values
34
+
35
+ # If all inputs are scalar, use the original function directly
36
+ if K_scalar and o_scalar and t_scalar:
26
37
  return func(s, K, r, o, t, option_type)
27
38
 
28
- # Use NumPy's vectorize to handle array inputs
29
- vectorized_func = np.vectorize(lambda K_val, o_val:
30
- func(s, K_val, r, o_val, t, option_type))
39
+ # For arrays, we need to apply the function element-wise
40
+ # Instead of using np.vectorize directly, we'll create a custom vectorized function
41
+ # that handles the conditions properly
42
+ def safe_vectorized_func(K_val, o_val, t_val):
43
+ # Check for invalid strike price, volatility, or time values
44
+ if K_val <= 0 or o_val <= 0 or t_val <= 0:
45
+ return np.nan # Return NaN for invalid inputs
46
+ else:
47
+ # Only call the function if inputs are valid
48
+ return func(s, K_val, r, o_val, t_val, option_type)
49
+
50
+ # Now use numpy's vectorize on our safe function
51
+ vectorized_func = np.vectorize(safe_vectorized_func)
31
52
 
32
53
  # Call the vectorized function with the inputs
33
- return vectorized_func(K, o)
54
+ return vectorized_func(K, o, t)
34
55
 
35
56
  return wrapper
36
57
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: voly
3
- Version: 0.0.161
3
+ Version: 0.0.162
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