【问题标题】:How to calculate an array of stock prices using simulated returns? [duplicate]如何使用模拟收益计算一系列股票价格? [复制]
【发布时间】:2019-10-27 05:32:23
【问题描述】:

我想使用模拟收益来模拟一组股票价格。例如,我将初始股票价格设置为 70 美元,并创建了一个具有 10 个回报期的熊猫系列:

returns = pd.Series([1.01,1.02,1.03,1.01,0.99,0.98,1.07,0.99,1.03,1.03])

如何获得包含 10 个周期的一系列股票价格? (第一个价格数据应该是初始股票价格(70) * 1.01;第二个应该是70 * 1.01 * 1.02;第三个应该是......直到20号。)

initial stock price = 70
returns = pd.Series([1.01,1.02,1.03,1.01,0.99,0.98,1.07,0.99,1.03,1.03])

【问题讨论】:

  • 谢谢,我怎样才能找到之前提出的相关问题?

标签: python pandas numpy finance


【解决方案1】:

IIUC,使用cumprod

initial_stock_price = 70
returns = pd.Series([1.01,1.02,1.03,1.01,0.99,0.98,1.07,0.99,1.03,1.03])

returns.cumprod() * initial_stock_price

输出:

0    70.700000
1    72.114000
2    74.277420
3    75.020194
4    74.269992
5    72.784592
6    77.879514
7    77.100719
8    79.413740
9    81.796153
dtype: float64

【讨论】:

    【解决方案2】:

    您可以使用 reduce 将列表中的所有值乘以价格,然后再乘以价格:

    from functools import reduce
    import pandas as pd
    inital_price = 70
    returns = pd.Series([1.01,1.02,1.03,1.01,0.99,0.98,1.07,0.99,1.03,1.03])
    [inital_price * reduce(lambda x, y: x*y, returns[0:i+1]) for i in range(len(returns))]
    

    输出:

    [70.7,
     72.114,
     74.27742,
     75.0201942,
     74.269992258,
     72.78459241284,
     77.8795138817388,
     77.10071874292142,
     79.41374030520907,
     81.79615251436535]
    

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多