【问题标题】:How to simulate random returns with numpy如何用 numpy 模拟随机返回
【发布时间】:2016-08-28 05:47:45
【问题描述】:

什么是模拟随机回报的快速方法。我知道numpy.random。但是,这并不能指导我如何为资产回报建模。

我试过了:

import numpy as np

r = np.random.rand(100)

但这感觉不准确。其他人如何处理这件事?

【问题讨论】:

    标签: numpy random dataframe quantitative-finance


    【解决方案1】:

    我建议以下两种方法之一:


    One:
    假设收益呈正态分布,均值等于 0.1%,标准差约为 1%。这看起来像:

    import numpy as np
    
    np.random.seed(314)
    r = np.random.randn(100) / 100 + 0.001
    

    seed(314) 在特定点设置随机数生成器,这样如果我们都使用相同的种子,我们应该会看到相同的结果。

    randn 从正态分布中提取。

    我还建议使用pandas。这是一个实现DataFrame 对象的库,类似于R

    import pandas as pd
    
    df = pd.DataFrame(r)
    

    然后您可以像这样绘制累积收益:

    df.add(1).cumprod().plot()
    


    Two:
    第二种方法是假设收益是对数正态分布的。这意味着 log(r) 是正常的。在这种情况下,我们提取正态分布的随机数,然后将这些值用作 e 的指数。它看起来像这样:

    r = np.exp(np.random.randn(100) / 100 + 0.001) - 1
    

    如果你绘制它,它看起来像这样:

    pd.DataFrame(r).add(1).cumprod().plot()
    

    【讨论】:

    • 综合回答。在这方面为交易期权估值做了大量工作,所以也许值得寻找人们在这方面所做的事情。如果您假设股票在每个时间段可能会根据其波动性以二元方式上涨或下跌,但趋势与无风险回报率一致,那么随着时间段的减少,这种二项式分布趋势会趋向对数正态
    • 使用r = np.random.randn(100) / 100 + 0.001 代替r = np.random.normal(0.001, 0.01, size=100) 有什么特殊原因吗?我通常更喜欢后者,因为它非常清楚均值和标准差是什么。
    猜你喜欢
    • 2015-03-31
    • 2010-10-04
    • 2016-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    相关资源
    最近更新 更多