|
|
@@ -43,38 +43,39 @@ def get_tick_size_from_prices(ask_price, bid_price):
|
|
|
def on_message_trade(_ws, message):
|
|
|
global trade_snapshots
|
|
|
json_message = json.loads(message)
|
|
|
- trade = {
|
|
|
- 'price': float(json_message['data']['p']),
|
|
|
- 'qty': float(json_message['data']['q']),
|
|
|
- 'timestamp': pd.to_datetime(json_message['data']['T'], unit='ms'),
|
|
|
- 'side': 'sell' if json_message['data']['m'] else 'buy'
|
|
|
- }
|
|
|
- trade_snapshots.append(trade)
|
|
|
- process_depth_data()
|
|
|
+ logger.debug(json_message)
|
|
|
+ # trade = {
|
|
|
+ # 'price': float(json_message['data']['p']),
|
|
|
+ # 'qty': float(json_message['data']['q']),
|
|
|
+ # 'timestamp': pd.to_datetime(json_message['data']['T'], unit='ms'),
|
|
|
+ # 'side': 'sell' if json_message['data']['m'] else 'buy'
|
|
|
+ # }
|
|
|
+ # trade_snapshots.append(trade)
|
|
|
+ # process_depth_data()
|
|
|
|
|
|
|
|
|
def on_message_depth(_ws, message):
|
|
|
global order_book_snapshots, spread_delta_snapshots
|
|
|
json_message = json.loads(message)
|
|
|
- bids = [[float(price), float(quantity)] for price, quantity in json_message['data']['b'][:10]]
|
|
|
- asks = [[float(price), float(quantity)] for price, quantity in json_message['data']['a'][:10]]
|
|
|
- timestamp = pd.to_datetime(json_message['data']['E'], unit='ms')
|
|
|
- depth = {
|
|
|
- 'bids': bids,
|
|
|
- 'asks': asks,
|
|
|
- 'timestamp': timestamp
|
|
|
- }
|
|
|
- order_book_snapshots.append(depth)
|
|
|
-
|
|
|
- # 求价差
|
|
|
- ask_price = Decimal(str(asks[0][0]))
|
|
|
- bid_price = Decimal(str(bids[0][0]))
|
|
|
- tick_size = get_tick_size_from_prices(ask_price, bid_price)
|
|
|
- spread = float(ask_price - bid_price)
|
|
|
- spread_delta = int(spread / tick_size)
|
|
|
- spread_delta_snapshots.append(spread_delta)
|
|
|
-
|
|
|
- process_depth_data()
|
|
|
+ # bids = [[float(price), float(quantity)] for price, quantity in json_message['data']['b'][:10]]
|
|
|
+ # asks = [[float(price), float(quantity)] for price, quantity in json_message['data']['a'][:10]]
|
|
|
+ # timestamp = pd.to_datetime(json_message['data']['E'], unit='ms')
|
|
|
+ # depth = {
|
|
|
+ # 'bids': bids,
|
|
|
+ # 'asks': asks,
|
|
|
+ # 'timestamp': timestamp
|
|
|
+ # }
|
|
|
+ # order_book_snapshots.append(depth)
|
|
|
+ #
|
|
|
+ # # 求价差
|
|
|
+ # ask_price = Decimal(str(asks[0][0]))
|
|
|
+ # bid_price = Decimal(str(bids[0][0]))
|
|
|
+ # tick_size = get_tick_size_from_prices(ask_price, bid_price)
|
|
|
+ # spread = float(ask_price - bid_price)
|
|
|
+ # spread_delta = int(spread / tick_size)
|
|
|
+ # spread_delta_snapshots.append(spread_delta)
|
|
|
+ #
|
|
|
+ # process_depth_data()
|
|
|
|
|
|
|
|
|
def calculate_phi(prices, k, S0):
|
|
|
@@ -217,6 +218,8 @@ def process_depth_data():
|
|
|
if result.success:
|
|
|
A_initial, k_initial = result.x
|
|
|
# logger.info(f"Optimal k: {k_initial}, delta_max: {delta_max}")
|
|
|
+ else:
|
|
|
+ logger.error(result)
|
|
|
|
|
|
# ========================== 计算 σ^2 ==========================
|
|
|
sigma_squared = calculate_sigma_squared(S_values, order_book_timestamps)
|