voly 0.0.183__py3-none-any.whl → 0.0.184__py3-none-any.whl
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/core/fit.py +2 -2
- voly/models.py +2 -2
- {voly-0.0.183.dist-info → voly-0.0.184.dist-info}/METADATA +1 -1
- {voly-0.0.183.dist-info → voly-0.0.184.dist-info}/RECORD +7 -7
- {voly-0.0.183.dist-info → voly-0.0.184.dist-info}/WHEEL +0 -0
- {voly-0.0.183.dist-info → voly-0.0.184.dist-info}/licenses/LICENSE +0 -0
- {voly-0.0.183.dist-info → voly-0.0.184.dist-info}/top_level.txt +0 -0
voly/core/fit.py
CHANGED
@@ -215,8 +215,8 @@ def fit_model(option_chain: pd.DataFrame) -> pd.DataFrame:
|
|
215
215
|
w1 = SVIModel.svi(k_val, a1 * t1, b1 * t1, m1, rho1, sigma1)
|
216
216
|
w2 = SVIModel.svi(k_val, a2 * t2, b2 * t2, m2, rho2, sigma2)
|
217
217
|
if w2 < w1 - 1e-6:
|
218
|
-
logger.warning(
|
219
|
-
|
218
|
+
logger.warning(f"Calendar arbitrage violation at t1={t1:.4f}, t2={t2:.4f}, k={k_val:.4f}: ")
|
219
|
+
logger.warning(f"w1={w1:.6f}, w2={w2:.6f}")
|
220
220
|
calendar_arbitrage_free = False
|
221
221
|
break
|
222
222
|
if not calendar_arbitrage_free:
|
voly/models.py
CHANGED
@@ -165,10 +165,10 @@ class SVIModel:
|
|
165
165
|
w_current = cls.svi(k_constraint, new_params[0] * t, new_params[1] * t, *new_params[2:])
|
166
166
|
w_prev = cls.svi(k_constraint, a_prev * prev_t, b_prev * prev_t, m_prev, rho_prev, sigma_prev)
|
167
167
|
violation = np.min(w_current - w_prev)
|
168
|
-
|
168
|
+
logger.info(f"Calendar arbitrage correction {'successful' if violation >= -1e-6 else 'failed'} for t={t:.4f}, "
|
169
169
|
f"min margin={violation:.6f}")
|
170
170
|
return new_params
|
171
|
-
|
171
|
+
logger.warning(f"Calendar arbitrage correction failed for t={t:.4f}")
|
172
172
|
return params
|
173
173
|
|
174
174
|
|
@@ -2,19 +2,19 @@ voly/__init__.py,sha256=8xyDk7rFCn_MOD5hxuv5cxxKZvBVRiSIM7TgaMPpwpw,211
|
|
2
2
|
voly/client.py,sha256=dPyRRmZ_Gvo1zCZMo9eFOx2oaYocmkOt71fzdmOXFyM,14387
|
3
3
|
voly/exceptions.py,sha256=PBsbn1vNMvKcCJwwJ4lBO6glD85jo1h2qiEmD7ArAjs,92
|
4
4
|
voly/formulas.py,sha256=JnEs6G0wlfRNH6X_YEJMe2RtLH-ryhzufjsim73Bj3c,11176
|
5
|
-
voly/models.py,sha256=
|
5
|
+
voly/models.py,sha256=A7zIUnIoH2rwb2_kp96xfFuOQ8CkGQ-XCx1cOGJSlco,7009
|
6
6
|
voly/core/__init__.py,sha256=bu6fS2I1Pj9fPPnl-zY3L7NqrZSY5Zy6NY2uMUvdhKs,183
|
7
7
|
voly/core/charts.py,sha256=2S-BfCo30aj1_xlNLqF-za5rQWxF_mWKIdtdOe5bgbw,12735
|
8
8
|
voly/core/data.py,sha256=9v9iuE2XdIIlzoRAB7q1ol7YghBzBsPGAiwZ11oDuis,13650
|
9
|
-
voly/core/fit.py,sha256=
|
9
|
+
voly/core/fit.py,sha256=CIayT6HKd-8pc8P76bc2vNivNmF_Uu4fHRNRqNup2R8,17210
|
10
10
|
voly/core/hd.py,sha256=UFAyLncNUHivpPAcko6IK1bC55mudVtdlRFfXp63HXE,14771
|
11
11
|
voly/core/interpolate.py,sha256=JkK172-FXyhesW3hY4pEeuJWG3Bugq7QZXbeKoRpLuo,5305
|
12
12
|
voly/core/rnd.py,sha256=GoC3m1Q46Wnk5tV_mstr-3_aktHeue6BBLh4DQTciW0,13307
|
13
13
|
voly/utils/__init__.py,sha256=E05mWatyC-PDOsCxQV1p5Xi1IgpOomxrNURyCx_gB-w,200
|
14
14
|
voly/utils/density.py,sha256=q0fX4im9TGwMCZ32Hzdv8CNh56KnJo8bmG5w0gVWZH8,5879
|
15
15
|
voly/utils/logger.py,sha256=4-_2bVJmq17Q0d7Rd2mPg1AeR8gxv6EPvcmBDMFWcSM,1744
|
16
|
-
voly-0.0.
|
17
|
-
voly-0.0.
|
18
|
-
voly-0.0.
|
19
|
-
voly-0.0.
|
20
|
-
voly-0.0.
|
16
|
+
voly-0.0.184.dist-info/licenses/LICENSE,sha256=wcHIVbE12jfcBOai_wqBKY6xvNQU5E909xL1zZNq_2Q,1065
|
17
|
+
voly-0.0.184.dist-info/METADATA,sha256=RoKiGHZQ4w4M5KsFMq6hCDmCe8KkTAKCKhcnEDc9C98,4115
|
18
|
+
voly-0.0.184.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
|
19
|
+
voly-0.0.184.dist-info/top_level.txt,sha256=ZfLw2sSxF-LrKAkgGjOmeTcw6_gD-30zvtdEY5W4B7c,5
|
20
|
+
voly-0.0.184.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|