|
|
@@ -6,7 +6,6 @@ from collections import deque
|
|
|
from scipy.integrate import trapz
|
|
|
import numpy as np
|
|
|
from scipy.optimize import minimize
|
|
|
-from logger_config import logger
|
|
|
|
|
|
# 设置全局精度
|
|
|
getcontext().prec = 28
|
|
|
@@ -29,8 +28,8 @@ bounds = [(10, 1000.0), # A 的范围
|
|
|
# 假设S0是初始的参考价格
|
|
|
S0 = -1
|
|
|
|
|
|
-# 记录最大挂单距离,并实时刷新
|
|
|
-max_delta_sum = 0
|
|
|
+# 记录挂单距离,并实时刷新
|
|
|
+delta_sum = 0
|
|
|
|
|
|
|
|
|
def get_tick_size_from_prices(ask_price, bid_price):
|
|
|
@@ -124,7 +123,7 @@ def estimate_lambda(waiting_times, T):
|
|
|
waiting_times = np.array(waiting_times)
|
|
|
|
|
|
sum_indicator = np.sum(waiting_times < T)
|
|
|
- sum_waiting_times = int(np.sum(waiting_times).total_seconds() * 1000)
|
|
|
+ sum_waiting_times = max(1, int(np.sum(waiting_times).total_seconds() * 1000))
|
|
|
lambda_hat = sum_indicator / sum_waiting_times
|
|
|
return lambda_hat
|
|
|
|
|
|
@@ -176,7 +175,7 @@ def calculate_sigma_squared(prices, timestamps):
|
|
|
def process_depth_data():
|
|
|
global order_book_snapshots, trade_snapshots, spread_delta_snapshots
|
|
|
global k_initial, A_initial, S0
|
|
|
- global max_delta_sum
|
|
|
+ global delta_sum
|
|
|
|
|
|
# 数据预热,至少3条深度数据以及10条成交数据才能用于计算
|
|
|
if len(order_book_snapshots) < 3 or len(trade_snapshots) < 10:
|
|
|
@@ -230,6 +229,4 @@ def process_depth_data():
|
|
|
gamma = 1.0
|
|
|
T_minus_t = 1.0
|
|
|
delta_sum = calculate_delta_sum(gamma, sigma_squared, T_minus_t, k_initial)
|
|
|
- if delta_sum > max_delta_sum and len(trade_snapshots) > 70:
|
|
|
- logger.info(f"δ^a + δ^b: {delta_sum}, k: {k_initial}, dm: {delta_max}, λ(δ): {lambda_hat}, ∫ φ(k, ξ) dξ: {integral_phi_value}")
|
|
|
- max_delta_sum = delta_sum
|
|
|
+ # logger.info(f"δ^a + δ^b: {delta_sum}, k: {k_initial}, dm: {delta_max}, λ(δ): {lambda_hat}, ∫ φ(k, ξ) dξ: {integral_phi_value}")
|