【问题标题】:How to return results from a loop for varying portfolio weights into a dataframe?如何将不同投资组合权重的循环结果返回到数据框中?
【发布时间】:2016-09-09 14:25:11
【问题描述】:

我即将创建一个包含两种资产的投资组合,并希望通过循环改变权重,第一个资产的权重为 [-0.5, -0.4, ... 0.4, 0.5] 我设法通过循环计算了 11 个投资组合中的每一个的风险回报点。

尽管如此,循环会为每个风险/回报组合创建一个新的数据框,而我想创建一个包含所有风险/回报点的单个数据框。

这是我的代码:

def imply_x (returns, x):
y = 1-x
returns.columns = ["A","B"]
weighted_return = returns.A * x + returns.B * y
name = str(round(x,2)) + "a"
return pd.DataFrame({name: weighted_return})
def frange (start, stop, step):
x = start
while x < stop:
    yield x
    x += step
for x in frange (-0.5,0.6,0.1):
mean_ret = np.mean(imply_x(ret,x))
var_ret = np.percentile(imply_x(ret,x),95)
tuple_ret = pd.DataFrame({"risk": var_ret, "mean": mean_ret})
print((tuple_ret))

结果如下

           mean      risk
-0.5a  0.000181  0.018354
           mean      risk
-0.4a  0.000166  0.015611
           mean      risk
-0.3a  0.000151  0.012688
           mean    risk
-0.2a  0.000136  0.0099
           mean      risk
-0.1a  0.000121  0.007454
           mean      risk
-0.0a  0.000106  0.005405
          mean      risk
0.1a  0.000092  0.004576
          mean      risk
0.2a  0.000077  0.005007
          mean      risk
0.3a  0.000062  0.006613
          mean      risk
0.4a  0.000047  0.008738
          mean      risk
0.5a  0.000032  0.011082

如何将循环中的结果粘贴到一个数据框中?

【问题讨论】:

    标签: python loops dataframe portfolio


    【解决方案1】:

    您可以使用pd.concat 从中创建单个数据框。

    http://pandas.pydata.org/pandas-docs/stable/merging.html#concatenating-objects

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-18
      • 2016-07-22
      • 1970-01-01
      相关资源
      最近更新 更多