如何模拟具有新闻影响的股票价格

How to simulate stock prices with impact of news

我正在编写一个生成模拟股票市场价格的函数,部分代码包含了几天内新闻(例如政治动荡、自然灾害)对股价的影响。

# Set up the default_rng from Numpy
rng = np.random.default_rng()

def news(chance, volatility):
    '''
    Simulate the impact of news on stock prices with %chance
    '''
    # Choose whether there's news today
    news_today = rng.choice([0,1], p=chance)
    if news_today:
        # Calculate m and drift
        m = rng.normal(0,0.3)
        drift = m * volatility
        # Randomly choose the duration
        duration = rng.integers(7,7*12)
        final = np.zeros(duration)
        for i in range(duration):
            final[i] = drift
        return final
    else:
        return np.zeros(duration)

我收到几条错误消息,其中之一是:

news_today = rng.choice([0,1], p=chance)
TypeError: object of type 'int' has no len()

看起来 p 参数的长度需要与选项列表的长度匹配。也就是说,您需要与每个选择相关联的机会。尝试:

news_today = rng.choice([0,1], p=[chance, 1 - chance])