Forráskód Böngészése

kappa研究,但是不对

skyffire 1 éve
szülő
commit
6c62e90261
3 módosított fájl, 46 hozzáadás és 9 törlés
  1. 24 0
      as_study/lambda_delta.py
  2. 21 8
      kappa/data_processing.py
  3. 1 1
      kappa/ws_client.py

+ 24 - 0
as_study/lambda_delta.py

@@ -0,0 +1,24 @@
+import numpy as np
+import matplotlib.pyplot as plt
+
+# 设置参数
+A = 1.0    # 基准强度
+k = 0.5    # 衰减系数
+delta_max = 10.0  # 最大距离
+num_points = 100  # 计算点数
+
+# 生成 delta 值
+delta = np.linspace(0, delta_max, num_points)
+
+# 计算 lambda(delta)
+lambda_delta = A * np.exp(-k * delta)
+
+# 绘制 lambda(delta) 曲线
+plt.figure(figsize=(10, 6))
+plt.plot(delta, lambda_delta, label=r'$\lambda(\delta) = A e^{-k \delta}$')
+plt.title('Execution Intensity as a Function of Distance')
+plt.xlabel(r'Distance $\delta$')
+plt.ylabel(r'Intensity $\lambda(\delta)$')
+plt.legend()
+plt.grid(True)
+plt.show()

+ 21 - 8
kappa/data_processing.py

@@ -8,7 +8,7 @@ from collections import deque
 from logger_config import logger
 
 # 假设我们有一个数据流,订单簿和成交数据
-order_book_snapshots = deque(maxlen=10000)  # 存储过去100ms的订单簿快照
+order_book_snapshots = deque(maxlen=1000)  # 存储过去10000个订单簿快照
 
 # 数据积累的阈值
 DATA_THRESHOLD = 20
@@ -28,16 +28,19 @@ def on_message_depth(_ws, message):
         'asks': asks,
         'timestamp': timestamp
     })
-    process_depth_data(bids, asks)
 
+    if len(order_book_snapshots) >= DATA_THRESHOLD:
+        process_depth_data(order_book_snapshots)
 
-def process_depth_data(bids, asks):
+
+def process_depth_data(order_book_snapshots):
     # 提取订单大小数据
     order_sizes = []
-    for bid in bids:
-        order_sizes.append(float(bid[1]))
-    for ask in asks:
-        order_sizes.append(float(ask[1]))
+    for snapshot in order_book_snapshots:
+        for bid in snapshot['bids']:
+            order_sizes.append(float(bid[1]))
+        for ask in snapshot['asks']:
+            order_sizes.append(float(ask[1]))
 
     if len(order_sizes) < 2:  # 确保有足够的数据进行计算
         logger.warning("Not enough data to calculate kappa.")
@@ -74,4 +77,14 @@ def process_depth_data(bids, asks):
         return
 
     # 计算kappa值
-    logger.info(f"Estimated beta_hat: {beta_hat}, beta_lsm: {beta_lsm}")
+    gamma = 0.1  # 库存风险厌恶参数
+    sigma = 0.02  # 市场波动率
+    T_minus_t = 1  # 交易会话的剩余时间
+
+    # 结合不同方法估算的β值,计算kappa
+    kappa_mle = (2 / (gamma * sigma ** 2 * T_minus_t)) * np.log(1 + (gamma / beta_hat))
+    kappa_lsm = (2 / (gamma * sigma ** 2 * T_minus_t)) * np.log(1 + (gamma / beta_lsm))
+
+    # 输出结果
+    logger.info(f"Estimated beta_hat (MLE): {beta_hat}, kappa (MLE): {kappa_mle}")
+    logger.info(f"Estimated beta_lsm (LSM): {beta_lsm}, kappa (LSM): {kappa_lsm}")

+ 1 - 1
kappa/ws_client.py

@@ -5,7 +5,7 @@ from logger_config import logger
 from data_processing import on_message_depth, stop_event
 
 # Binance WebSocket API URL
-SYMBOL = "1000pepe" + "usdt"
+SYMBOL = "ethfi" + "usdt"
 SOCKET_DEPTH = "wss://fstream.binance.com/stream?streams=" + SYMBOL + "@depth20@100ms"