Я загрузил файл JSON для звонков с GitHub и выполнил небольшой анализ.
import pandas as pd
import requests
filename = 'https://raw.githubusercontent.com/Quaniful/Pub/master/C.json'
field_types = {
'symbol' : 'string',
'strikePrice' : 'float',
'putCall' : 'string',
'daysToExpiration' : 'int',
'bid' : 'float',
'ask' : 'float',
'delta' : 'float',
'theta' : 'float',
'vega' : 'float',
'gamma' : 'float',
'inTheMoney' : 'boolean',
'openInterest' : 'int',
'theoreticalOptionValue' : 'float',
'timeValue' : 'float',
'totalVolume' : 'int',
'volatility' : 'float',
'description' : 'string',
}
Теперь настройка завершена. Получим данные:
r = requests.get(filename)
ts = list()
# convert JSON response to list of tuples
ts = list()
for strike, ds in r.json().items():
for d in ds:
for key, value in d.items():
t = (float(strike), key, value)
ts.append(t)
# convert the list-of-tuples to a data frame; rename, and re-shape
calls = (pd.DataFrame(ts, columns=['strike', 'field', 'value'])
.set_index(['strike', 'field'])
.sort_index()
.squeeze()
.unstack(level='field')
.reset_index(drop=True)
.filter(field_types.keys())
.astype(field_types, errors='raise')
)
Теперь посмотрим на первую строку (транспонированную, чтобы поместиться на экране):
print(calls.iloc[0])
field
symbol AAPL_080720C455
strikePrice 455
putCall CALL
daysToExpiration 1
bid 1.91
ask 1.93
delta 0.32
theta -0.832
vega 0.119
gamma 0.038
inTheMoney False
openInterest 7959
theoreticalOptionValue 1.92
timeValue 1.93
totalVolume 48222
volatility 28.018
description AAPL Aug 7 2020 455 Call (Weekly)
Name: 0, dtype: object
Я не смог определить набор параметров в pd.read_json()