|
|
@@ -55,21 +55,18 @@ def calculate_phi(prices, k, S0):
|
|
|
return phi
|
|
|
|
|
|
|
|
|
-def calculate_integral_phi(prices, k, S0, delta_T):
|
|
|
+def calculate_integral_phi(prices, k, S0, time_points):
|
|
|
"""
|
|
|
- 计算 ∫ φ(k, ξ) dξ 的值
|
|
|
+ 计算 ∫ φ(k, ξ) dξ 的值,越大说明波动率也越大(价格波动)。
|
|
|
:param prices: 时间序列的价格数据
|
|
|
:param k: 参数 k
|
|
|
:param S0: 初始价格
|
|
|
- :param delta_T: 积分的上限
|
|
|
+ :param time_points: 时间点数组
|
|
|
:return: ∫ φ(k, ξ) dξ 的值
|
|
|
"""
|
|
|
# 计算每个时间点的 φ(k, ξ) 值
|
|
|
phi_values = [calculate_phi(prices[:i + 1], k, S0) for i in range(len(prices))]
|
|
|
|
|
|
- # 创建时间点数组
|
|
|
- time_points = np.linspace(0, delta_T, len(phi_values))
|
|
|
-
|
|
|
# 使用梯形法计算积分
|
|
|
integral_phi = trapz(phi_values, time_points)
|
|
|
|
|
|
@@ -83,10 +80,12 @@ def process_depth_data(order_book_snapshots):
|
|
|
if S0 < 0:
|
|
|
S0 = S_values[0]
|
|
|
|
|
|
- delta_T = len(S_values) - 1 # 假设每个时间点间隔为1
|
|
|
+ # 提取时间戳并计算时间间隔
|
|
|
+ timestamps = [snapshot['timestamp'] for snapshot in order_book_snapshots]
|
|
|
+ time_points = [(timestamp - timestamps[0]).total_seconds() for timestamp in timestamps]
|
|
|
|
|
|
# 计算 ∫ φ(k, ξ) dξ
|
|
|
- integral_phi_value = calculate_integral_phi(S_values, k_initial, S0, delta_T)
|
|
|
+ integral_phi_value = calculate_integral_phi(S_values, k_initial, S0, time_points)
|
|
|
|
|
|
# 计算 log(∫ φ(k, ξ) dξ)
|
|
|
log_integral_phi_value = np.log(integral_phi_value)
|