我即将创建两个资产组合,并希望通过循环改变权重,第一个资产的权重来自[-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
如何将循环结果粘贴到一个数据框中?
答案 0 :(得分:0)
您可以使用pd.concat
从中创建单个数据框。
http://pandas.pydata.org/pandas-docs/stable/merging.html#concatenating-objects