voly 0.0.190__py3-none-any.whl → 0.0.192__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 CHANGED
@@ -94,6 +94,7 @@ def fit_model(option_chain: pd.DataFrame) -> pd.DataFrame:
94
94
  maturity_data = pd.concat([unique_iv, cleaned_duplicated_iv])
95
95
  maturity_date = maturity_data['maturity_date'].iloc[0]
96
96
 
97
+
97
98
  t = group['t'].iloc[0]
98
99
  K = group['strikes'].values
99
100
  iv = group['mark_iv'].values
@@ -300,24 +301,26 @@ def fit_model(option_chain: pd.DataFrame) -> pd.DataFrame:
300
301
  butterfly_arbitrage_free = False
301
302
  break
302
303
 
303
- results_df.at[mat2, 'a'] = float(a_scaled)
304
- results_df.at[mat2, 'b'] = float(b_scaled)
305
- results_df.at[mat2, 'm'] = float(m)
306
- results_df.at[mat2, 'rho'] = float(rho)
307
- results_df.at[mat2, 'sigma'] = float(sigma)
308
- results_df.at[mat2, 'nu'] = float(nu)
309
- results_df.at[mat2, 'psi'] = float(psi)
310
- results_df.at[mat2, 'p'] = float(p)
311
- results_df.at[mat2, 'c'] = float(c)
312
- results_df.at[mat2, 'nu_tilde'] = float(nu_tilde)
313
- results_df.at[mat2, 'rmse'] = float(rmse)
314
- results_df.at[mat2, 'mae'] = float(mae)
315
- results_df.at[mat2, 'r2'] = float(r2)
316
- results_df.at[mat2, 'max_error'] = float(max_error)
317
- results_df.at[mat2, 'log_min_strike'] = float(log_min_strike)
318
- results_df.at[mat2, 'usd_min_strike'] = float(usd_min_strike)
319
- results_df.at[mat2, 'butterfly_arbitrage_free'] = butterfly_arbitrage_free
320
- results_df.at[mat2, 'fit_success'] = bool(not np.isnan(a))
304
+ # Update results_df using maturity_name
305
+ mat_name = group['maturity_name'].iloc[0]
306
+ results_df.loc[mat_name, 'a'] = float(a_scaled)
307
+ results_df.loc[mat_name, 'b'] = float(b_scaled)
308
+ results_df.loc[mat_name, 'm'] = float(m)
309
+ results_df.loc[mat_name, 'rho'] = float(rho)
310
+ results_df.loc[mat_name, 'sigma'] = float(sigma)
311
+ results_df.loc[mat_name, 'nu'] = float(nu)
312
+ results_df.loc[mat_name, 'psi'] = float(psi)
313
+ results_df.loc[mat_name, 'p'] = float(p)
314
+ results_df.loc[mat_name, 'c'] = float(c)
315
+ results_df.loc[mat_name, 'nu_tilde'] = float(nu_tilde)
316
+ results_df.loc[mat_name, 'rmse'] = float(rmse)
317
+ results_df.loc[mat_name, 'mae'] = float(mae)
318
+ results_df.loc[mat_name, 'r2'] = float(r2)
319
+ results_df.loc[mat_name, 'max_error'] = float(max_error)
320
+ results_df.loc[mat_name, 'log_min_strike'] = float(log_min_strike)
321
+ results_df.loc[mat_name, 'usd_min_strike'] = float(usd_min_strike)
322
+ results_df.loc[mat_name, 'butterfly_arbitrage_free'] = butterfly_arbitrage_free
323
+ results_df.loc[mat_name, 'fit_success'] = bool(not np.isnan(a))
321
324
 
322
325
  # Calendar arbitrage check (post-correction)
323
326
  calendar_arbitrage_free = True
@@ -348,8 +351,8 @@ def fit_model(option_chain: pd.DataFrame) -> pd.DataFrame:
348
351
  if not calendar_arbitrage_free:
349
352
  break
350
353
 
351
- for mat in sorted_maturities:
352
- results_df.at[mat, 'calendar_arbitrage_free'] = calendar_arbitrage_free
354
+ for mat in results_df['maturity_date']:
355
+ results_df.loc[results_df['maturity_date'] == mat, 'calendar_arbitrage_free'] = calendar_arbitrage_free
353
356
 
354
357
  # End overall timer and print total time
355
358
  end_total = time.time()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: voly
3
- Version: 0.0.190
3
+ Version: 0.0.192
4
4
  Summary: Options & volatility research package
5
5
  Author-email: Manu de Cara <manu.de.cara@gmail.com>
6
6
  License: MIT
@@ -6,15 +6,15 @@ voly/models.py,sha256=2aNGsF3joCx4jGbiF8m0zxEW_nvcSBERSYPSKCXV3us,7019
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=mkAa4t8g8T50V2iSJETUASvx0XnRWuCAlJpXHTC8_kk,16984
9
+ voly/core/fit.py,sha256=Ldy68cLLFXLTbtYfGSqwzE9JxcY4wvQhjfvwZfrUaKs,17215
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.190.dist-info/licenses/LICENSE,sha256=wcHIVbE12jfcBOai_wqBKY6xvNQU5E909xL1zZNq_2Q,1065
17
- voly-0.0.190.dist-info/METADATA,sha256=CDyywRiwcw-Slx2rGNOdbRj2QDPRYGsM0jqt3QXmKlU,4115
18
- voly-0.0.190.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
19
- voly-0.0.190.dist-info/top_level.txt,sha256=ZfLw2sSxF-LrKAkgGjOmeTcw6_gD-30zvtdEY5W4B7c,5
20
- voly-0.0.190.dist-info/RECORD,,
16
+ voly-0.0.192.dist-info/licenses/LICENSE,sha256=wcHIVbE12jfcBOai_wqBKY6xvNQU5E909xL1zZNq_2Q,1065
17
+ voly-0.0.192.dist-info/METADATA,sha256=WdHim-V9t07mLSBl1ixX5h5WJ4K2xs82UJ_rmK2zyVo,4115
18
+ voly-0.0.192.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
19
+ voly-0.0.192.dist-info/top_level.txt,sha256=ZfLw2sSxF-LrKAkgGjOmeTcw6_gD-30zvtdEY5W4B7c,5
20
+ voly-0.0.192.dist-info/RECORD,,
File without changes