一个存货模型价格模拟

金凯旋 / 2024-10-21 / 原文

import numpy as np
import math

def PriceProcess(sigma,dt, s0=100, total_time=1):    
    prices = s0* (1 + np.cumsum(sigma * np.sqrt(dt) * np.random.choice([1, -1],  int(total_time / dt))))
    return np.insert(prices, 0, s0)    
# 模拟存货模型价格区间函数
def ventage_price(s, q, gamma, sigma, bid_k, ask_k, rt = 0.98):
        gamma_sigma_sq = gamma * (sigma**2)
        spread_constant_bid = (2 / gamma) * math.log(1 + gamma / bid_k) * 35
        spread_constant_ask = (2 / gamma) * math.log(1 + gamma / ask_k) * 35

        g_ss_rt = gamma_sigma_sq * rt

        reservation_price = s - q * g_ss_rt 
        spread_bid = (g_ss_rt + spread_constant_bid) / 2 
        spread_ask = (g_ss_rt + spread_constant_ask) / 2 

        print(f"q:{q} ask: {reservation_price + spread_ask :.3f} s: {s :.4f}  bid: {reservation_price - spread_bid :.3f} reservation_price: {reservation_price :.2f}")

for i in range(-10, 10):
      ventage_price(s=3500, q=i, gamma=0.1, sigma=1.8 , bid_k=1.5, ask_k=1.5, rt = 0.9)