voly 0.0.149__tar.gz → 0.0.151__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.
- {voly-0.0.149/src/voly.egg-info → voly-0.0.151}/PKG-INFO +1 -1
- {voly-0.0.149 → voly-0.0.151}/pyproject.toml +2 -2
- {voly-0.0.149 → voly-0.0.151}/src/voly/core/hd.py +19 -4
- {voly-0.0.149 → voly-0.0.151/src/voly.egg-info}/PKG-INFO +1 -1
- {voly-0.0.149 → voly-0.0.151}/LICENSE +0 -0
- {voly-0.0.149 → voly-0.0.151}/README.md +0 -0
- {voly-0.0.149 → voly-0.0.151}/setup.cfg +0 -0
- {voly-0.0.149 → voly-0.0.151}/setup.py +0 -0
- {voly-0.0.149 → voly-0.0.151}/src/voly/__init__.py +0 -0
- {voly-0.0.149 → voly-0.0.151}/src/voly/client.py +0 -0
- {voly-0.0.149 → voly-0.0.151}/src/voly/core/__init__.py +0 -0
- {voly-0.0.149 → voly-0.0.151}/src/voly/core/charts.py +0 -0
- {voly-0.0.149 → voly-0.0.151}/src/voly/core/data.py +0 -0
- {voly-0.0.149 → voly-0.0.151}/src/voly/core/fit.py +0 -0
- {voly-0.0.149 → voly-0.0.151}/src/voly/core/interpolate.py +0 -0
- {voly-0.0.149 → voly-0.0.151}/src/voly/core/rnd.py +0 -0
- {voly-0.0.149 → voly-0.0.151}/src/voly/exceptions.py +0 -0
- {voly-0.0.149 → voly-0.0.151}/src/voly/formulas.py +0 -0
- {voly-0.0.149 → voly-0.0.151}/src/voly/models.py +0 -0
- {voly-0.0.149 → voly-0.0.151}/src/voly/utils/__init__.py +0 -0
- {voly-0.0.149 → voly-0.0.151}/src/voly/utils/logger.py +0 -0
- {voly-0.0.149 → voly-0.0.151}/src/voly.egg-info/SOURCES.txt +0 -0
- {voly-0.0.149 → voly-0.0.151}/src/voly.egg-info/dependency_links.txt +0 -0
- {voly-0.0.149 → voly-0.0.151}/src/voly.egg-info/requires.txt +0 -0
- {voly-0.0.149 → voly-0.0.151}/src/voly.egg-info/top_level.txt +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "voly"
|
|
7
|
-
version = "0.0.
|
|
7
|
+
version = "0.0.151"
|
|
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.
|
|
63
|
+
python_version = "0.0.151"
|
|
64
64
|
warn_return_any = true
|
|
65
65
|
warn_unused_configs = true
|
|
66
66
|
disallow_untyped_defs = true
|
|
@@ -531,12 +531,27 @@ def calculate_basic_density(df_hist: pd.DataFrame,
|
|
|
531
531
|
K = domains['strikes']
|
|
532
532
|
dx = domains['dx']
|
|
533
533
|
|
|
534
|
-
# Filter historical data for the maturity's lookback period
|
|
535
|
-
|
|
534
|
+
# Filter historical data for the maturity's lookback period - use exact time to expiry
|
|
535
|
+
lookback_days = t * 365.25 # Exact number of days to expiry
|
|
536
|
+
start_date = pd.Timestamp.now() - pd.Timedelta(days=lookback_days)
|
|
536
537
|
maturity_hist = df_hist[df_hist.index >= start_date].copy()
|
|
537
538
|
|
|
538
|
-
|
|
539
|
-
|
|
539
|
+
# Better diagnostics for debugging
|
|
540
|
+
if len(maturity_hist) < 2:
|
|
541
|
+
n_available = len(df_hist)
|
|
542
|
+
earliest = df_hist.index[0] if n_available > 0 else "N/A"
|
|
543
|
+
latest = df_hist.index[-1] if n_available > 0 else "N/A"
|
|
544
|
+
|
|
545
|
+
logger.warning(f"Insufficient data for t={t:.4f} years ({lookback_days:.2f} days lookback)")
|
|
546
|
+
logger.warning(f"Available data: {n_available} points from {earliest} to {latest}")
|
|
547
|
+
logger.warning(f"Required start date: {start_date}")
|
|
548
|
+
|
|
549
|
+
# Try using all available data as fallback
|
|
550
|
+
if n_available >= 2:
|
|
551
|
+
logger.warning(f"Using all available {n_available} data points as fallback")
|
|
552
|
+
maturity_hist = df_hist.copy()
|
|
553
|
+
else:
|
|
554
|
+
raise VolyError(f"Not enough historical data for maturity (t={t:.4f})")
|
|
540
555
|
|
|
541
556
|
# Calculate scaled returns
|
|
542
557
|
maturity_hist['log_returns'] = np.log(maturity_hist['close'] / maturity_hist['close'].shift(1)) * np.sqrt(n_periods)
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|