소스 검색

粗糙的版本上线测试。

skyffire 1 년 전
부모
커밋
356f188b51
3개의 변경된 파일46개의 추가작업 그리고 9개의 파일을 삭제
  1. 5 8
      kappa/data_processing.py
  2. 4 1
      kappa/main.py
  3. 37 0
      kappa/rest_server.py

+ 5 - 8
kappa/data_processing.py

@@ -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}")

+ 4 - 1
kappa/main.py

@@ -1,4 +1,4 @@
-import asyncio
+from rest_server import start_http_server
 from ws_client import start_ws_clients
 import warnings
 
@@ -8,5 +8,8 @@ warnings.simplefilter(action='ignore', category=FutureWarning)
 # 启动 WebSocket 客户端
 start_ws_clients()
 
+# 启动 http 客户端
+start_http_server()
+
 # 停止所有线程(在需要停止时调用)
 # stop_all_threads()

+ 37 - 0
kappa/rest_server.py

@@ -0,0 +1,37 @@
+import http.server
+import json
+import socketserver
+import data_processing
+from logger_config import logger
+
+
+class MyRequestHandler(http.server.BaseHTTPRequestHandler):
+    def do_GET(self):
+        # 构造要返回的 JSON 数据
+        response_data = {
+            "delta_sum": data_processing.delta_sum,
+            "status": True
+        }
+
+        # 将数据转换为 JSON 格式
+        json_data = json.dumps(response_data)
+
+        # 发送响应头
+        self.send_response(200)
+        self.send_header("Content-type", "application/json")
+        self.end_headers()
+
+        # 发送 JSON 数据
+        self.wfile.write(json_data.encode('utf-8'))
+
+    def log_message(self, format, *args):
+        pass
+
+
+PORT = 8000
+
+
+def start_http_server():
+    with socketserver.TCPServer(("", PORT), MyRequestHandler) as httpd:
+        logger.info(f"Serving rest at port {PORT}")
+        httpd.serve_forever()