voly 0.0.231__py3-none-any.whl → 0.0.233__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/data.py +17 -10
- {voly-0.0.231.dist-info → voly-0.0.233.dist-info}/METADATA +1 -1
- {voly-0.0.231.dist-info → voly-0.0.233.dist-info}/RECORD +6 -6
- {voly-0.0.231.dist-info → voly-0.0.233.dist-info}/WHEEL +0 -0
- {voly-0.0.231.dist-info → voly-0.0.233.dist-info}/licenses/LICENSE +0 -0
- {voly-0.0.231.dist-info → voly-0.0.233.dist-info}/top_level.txt +0 -0
voly/core/data.py
CHANGED
@@ -250,7 +250,7 @@ def process_option_chain(df: pd.DataFrame, currency: str) -> pd.DataFrame:
|
|
250
250
|
logger.info(f"Processing data for {currency}...")
|
251
251
|
|
252
252
|
# Apply extraction to create new columns
|
253
|
-
df['spot_price'] = df['index_price']
|
253
|
+
df['spot_price'] = df['index_price'].iloc[0]
|
254
254
|
s = df['spot_price'].iloc[0]
|
255
255
|
df['instrument'] = df['instrument_name']
|
256
256
|
splits = df['instrument'].str.split('-')
|
@@ -272,9 +272,9 @@ def process_option_chain(df: pd.DataFrame, currency: str) -> pd.DataFrame:
|
|
272
272
|
df['bid_iv'] = df['bid_iv'].replace({0: np.nan}) / 100
|
273
273
|
df['ask_iv'] = df['ask_iv'].replace({0: np.nan}) / 100
|
274
274
|
|
275
|
-
df['mark_price'] = df['mark_price'] *
|
276
|
-
df['bid_price'] = df['best_bid_price'] *
|
277
|
-
df['ask_price'] = df['best_ask_price'] *
|
275
|
+
df['mark_price'] = df['mark_price'] * s
|
276
|
+
df['bid_price'] = df['best_bid_price'] * s
|
277
|
+
df['ask_price'] = df['best_ask_price'] * s
|
278
278
|
df['bid_amount'] = df['best_bid_amount']
|
279
279
|
df['ask_amount'] = df['best_ask_amount']
|
280
280
|
|
@@ -285,8 +285,8 @@ def process_option_chain(df: pd.DataFrame, currency: str) -> pd.DataFrame:
|
|
285
285
|
for bid in row['bids']:
|
286
286
|
if len(bid) >= 3:
|
287
287
|
# Extract price and quantity, removing 'new' if present
|
288
|
-
price = float(bid[1] * s) if bid[0] == 'new' else float(bid[0] * s)
|
289
|
-
qty = float(bid[2]) if bid[0] == 'new' else float(bid[1])
|
288
|
+
price = round(float(bid[1] * s) if bid[0] == 'new' else float(bid[0] * s), 8)
|
289
|
+
qty = round(float(bid[2]) if bid[0] == 'new' else float(bid[1]), 8)
|
290
290
|
clean_bids.append((price, qty))
|
291
291
|
if clean_bids:
|
292
292
|
df.at[idx, 'bids'] = clean_bids
|
@@ -297,16 +297,23 @@ def process_option_chain(df: pd.DataFrame, currency: str) -> pd.DataFrame:
|
|
297
297
|
for ask in row['asks']:
|
298
298
|
if len(ask) >= 3:
|
299
299
|
# Extract price and quantity, removing 'new' if present
|
300
|
-
price = float(ask[1] * s) if ask[0] == 'new' else float(ask[0] * s)
|
301
|
-
qty = float(ask[2]) if ask[0] == 'new' else float(ask[1])
|
300
|
+
price = round(float(ask[1] * s) if ask[0] == 'new' else float(ask[0] * s), 8)
|
301
|
+
qty = round(float(ask[2]) if ask[0] == 'new' else float(ask[1]), 8)
|
302
302
|
clean_asks.append((price, qty))
|
303
303
|
if clean_asks:
|
304
304
|
df.at[idx, 'asks'] = clean_asks
|
305
305
|
|
306
306
|
df['bid_depth'] = df['bids']
|
307
307
|
df['ask_depth'] = df['asks']
|
308
|
-
|
309
|
-
df['
|
308
|
+
|
309
|
+
df['delta'] = voly.delta(s, df['strikes'], 0, df['mark_iv'], df['t'])
|
310
|
+
df['gamma'] = voly.gamma(s, df['strikes'], 0, df['mark_iv'], df['t']) * 10000
|
311
|
+
df['vega'] = voly.vega(s, df['strikes'], 0, df['mark_iv'], df['t'])
|
312
|
+
df['theta'] = voly.theta(s, df['strikes'], 0, df['mark_iv'], df['t'])
|
313
|
+
df['rho'] = voly.rho(s, df['strikes'], 0, df['mark_iv'], df['t'])
|
314
|
+
|
315
|
+
df['open_interest'] = df['open_interest'] * s
|
316
|
+
df['volume'] = df['volume'] * s
|
310
317
|
|
311
318
|
df = df[['currency', 'spot_price',
|
312
319
|
'timestamp', 'instrument', 'maturity', 'strikes', 'flag', 'expiry',
|
@@ -5,7 +5,7 @@ voly/formulas.py,sha256=Jx2QSTkN3S_X1YWYXN3T0gBcxMKB_VLsqgDPg32ApmM,10833
|
|
5
5
|
voly/models.py,sha256=CGJQr13Uie7iwtx2hjViN9lMXeRN_uOqzp4u8NPaTlA,9282
|
6
6
|
voly/core/__init__.py,sha256=bu6fS2I1Pj9fPPnl-zY3L7NqrZSY5Zy6NY2uMUvdhKs,183
|
7
7
|
voly/core/charts.py,sha256=6MSU0z01fPOVSssodxdnFqchzDfupSmXq_e71WwDmVQ,12635
|
8
|
-
voly/core/data.py,sha256=
|
8
|
+
voly/core/data.py,sha256=vFdJnlPODJAjAEixruRYY1OelAvGNvo7cgIjLXbpz-o,12899
|
9
9
|
voly/core/fit.py,sha256=R3aDgCjvZ30PujoE9pgnGQXPQOTTMbk7_-RQ0ZMx5ig,13918
|
10
10
|
voly/core/hd.py,sha256=dSv197RmSWFWbRRdoBzMrD_poT7ZiJ8hdD_wKE-Li_M,13559
|
11
11
|
voly/core/interpolate.py,sha256=GAkrqaar7A0D6UMipXQUp4vSHRfb44TmCG5Xiv9elXg,5176
|
@@ -13,8 +13,8 @@ voly/core/rnd.py,sha256=wiZ5OIjPDf1Th5_sQ9CZG5JgAo3EL8f63T_Rj1_VP-0,13214
|
|
13
13
|
voly/utils/__init__.py,sha256=E05mWatyC-PDOsCxQV1p5Xi1IgpOomxrNURyCx_gB-w,200
|
14
14
|
voly/utils/density.py,sha256=ONpRli-IaJDgOZ2sb27HHFc9_tkkGSATKl94JODd86A,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.233.dist-info/licenses/LICENSE,sha256=wcHIVbE12jfcBOai_wqBKY6xvNQU5E909xL1zZNq_2Q,1065
|
17
|
+
voly-0.0.233.dist-info/METADATA,sha256=K1r_vDYJLQhSv83PFzYqOHQ3k0ck9d_Ucp8kGUEbIDI,4115
|
18
|
+
voly-0.0.233.dist-info/WHEEL,sha256=ck4Vq1_RXyvS4Jt6SI0Vz6fyVs4GWg7AINwpsaGEgPE,91
|
19
|
+
voly-0.0.233.dist-info/top_level.txt,sha256=ZfLw2sSxF-LrKAkgGjOmeTcw6_gD-30zvtdEY5W4B7c,5
|
20
|
+
voly-0.0.233.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|