1
我有一些數據需要迭代乘法器。實質上,我有三個參數需要在High(= 1)Medium(= 0)和Low(= - 1)級別應用。 被迭代的參數的值是:熊貓 - 在數據框中迭代嵌套for循環
par = 0.25
Skew = 0.20
TS = 0.1
我需要的P,T和s每一個組合,其中每一個都是在[1,0,1]
25% Par -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
20% Skew -1 -1 -1 0 0 0 1 1 1 -1 -1 -1 0 0 0 1 1 1 -1 -1 -1 0 0 0 1 1 1
10% TS -1 0 1 -1 0 1 -1 0 1 -1 0 1 -1 0 1 -1 0 1 -1 0 1 -1 0 1 -1 0 1
遍歷
我已經能夠得到所需的結果p,t,s在排列(1,1,1)這是嵌套的for循環中的最後一個,我只需要能夠爲每個排列做到這一點並且還包含了所應用的特定排列。我覺得我很接近。 。但這讓我無處可尋。
In [3]:
df
Out[3]:
Quant Vol
0 13 30.00
1 4 27.50
2 -19 26.00
3 14 23.50
4 4 21.00
5 18 20.00
6 -1 19.00
7 16 18.50
8 -5 18.75
9 -18 19.00
In [4]:
df['par']=.25
df['skew']=.2
df['TS']=.1
In [5]:
df
Out[5]:
Quant Vol par skew TS
0 13 30.00 0.25 0.2 0.1
1 4 27.50 0.25 0.2 0.1
2 -19 26.00 0.25 0.2 0.1
3 14 23.50 0.25 0.2 0.1
4 4 21.00 0.25 0.2 0.1
5 18 20.00 0.25 0.2 0.1
6 -1 19.00 0.25 0.2 0.1
7 16 18.50 0.25 0.2 0.1
8 -5 18.75 0.25 0.2 0.1
9 -18 19.00 0.25 0.2 0.1
In [6]:
for p in [-1,0,1]:
df['p'] =p
for s in [-1,0,1]:
df['s'] = s
for t in [-1,0,1]:
df['t'] = t
In [7]:
def iterate(df):
df['Mod_Vol'] = df['Vol']*(1+df['par']*p)*(1+df['skew']*s)*(1+df['TS']*t)
return(df)
In [8]:
df = df.groupby([df['Vol']]).apply(iterate)
In [9]:
df
Out[9]:
Quant Vol par skew TS p s t Mod_Vol
0 13 30.00 0.25 0.2 0.1 1 1 1 49.5000
1 4 27.50 0.25 0.2 0.1 1 1 1 45.3750
2 -19 26.00 0.25 0.2 0.1 1 1 1 42.9000
3 14 23.50 0.25 0.2 0.1 1 1 1 38.7750
4 4 21.00 0.25 0.2 0.1 1 1 1 34.6500
5 18 20.00 0.25 0.2 0.1 1 1 1 33.0000
6 -1 19.00 0.25 0.2 0.1 1 1 1 31.3500
7 16 18.50 0.25 0.2 0.1 1 1 1 30.5250
8 -5 18.75 0.25 0.2 0.1 1 1 1 30.9375
9 -18 19.00 0.25 0.2 0.1 1 1 1 31.3500
我需要有計算的27倍(體積)的這些值中的每一個和我需要有一個稱爲包含p的特定置換的標識符「場景」值,S,T(例如置換#6是p = -1,s = 0,t = 1),以便我可以稍後檢查下面給出最大影響的情景是Vol的第2個值,以說明期望的結果(在Excel中生成):
Scenario Quant Vol par skew TS p s t Mod_Vol
1 13.00 30.00 0.25 0.20 0.10 -1.00 -1.00 -1.00 16.20
2 13.00 30.00 0.25 0.20 0.10 -1.00 -1.00 0.00 18.00
3 13.00 30.00 0.25 0.20 0.10 -1.00 -1.00 1.00 19.80
4 13.00 30.00 0.25 0.20 0.10 -1.00 0.00 -1.00 20.25
5 13.00 30.00 0.25 0.20 0.10 -1.00 0.00 0.00 22.50
6 13.00 30.00 0.25 0.20 0.10 -1.00 0.00 1.00 24.75
7 13.00 30.00 0.25 0.20 0.10 -1.00 1.00 -1.00 24.30
8 13.00 30.00 0.25 0.20 0.10 -1.00 1.00 0.00 27.00
9 13.00 30.00 0.25 0.20 0.10 -1.00 1.00 1.00 29.70
10 13.00 30.00 0.25 0.20 0.10 0.00 -1.00 -1.00 21.60
11 13.00 30.00 0.25 0.20 0.10 0.00 -1.00 0.00 24.00
12 13.00 30.00 0.25 0.20 0.10 0.00 -1.00 1.00 26.40
13 13.00 30.00 0.25 0.20 0.10 0.00 0.00 -1.00 27.00
14 13.00 30.00 0.25 0.20 0.10 0.00 0.00 0.00 30.00
15 13.00 30.00 0.25 0.20 0.10 0.00 0.00 1.00 33.00
16 13.00 30.00 0.25 0.20 0.10 0.00 1.00 -1.00 32.40
17 13.00 30.00 0.25 0.20 0.10 0.00 1.00 0.00 36.00
18 13.00 30.00 0.25 0.20 0.10 0.00 1.00 1.00 39.60
19 13.00 30.00 0.25 0.20 0.10 1.00 -1.00 -1.00 27.00
20 13.00 30.00 0.25 0.20 0.10 1.00 -1.00 0.00 30.00
21 13.00 30.00 0.25 0.20 0.10 1.00 -1.00 1.00 33.00
22 13.00 30.00 0.25 0.20 0.10 1.00 0.00 -1.00 33.75
23 13.00 30.00 0.25 0.20 0.10 1.00 0.00 0.00 37.50
24 13.00 30.00 0.25 0.20 0.10 1.00 0.00 1.00 41.25
25 13.00 30.00 0.25 0.20 0.10 1.00 1.00 -1.00 40.50
26 13.00 30.00 0.25 0.20 0.10 1.00 1.00 0.00 45.00
27 13.00 30.00 0.25 0.20 0.10 1.00 1.00 1.00 49.50
1 -4.00 27.50 0.25 0.20 0.10 -1.00 -1.00 -1.00 14.85
2 -4.00 27.50 0.25 0.20 0.10 -1.00 -1.00 0.00 16.50
3 -4.00 27.50 0.25 0.20 0.10 -1.00 -1.00 1.00 18.15
4 -4.00 27.50 0.25 0.20 0.10 -1.00 0.00 -1.00 18.56
5 -4.00 27.50 0.25 0.20 0.10 -1.00 0.00 0.00 20.63
6 -4.00 27.50 0.25 0.20 0.10 -1.00 0.00 1.00 22.69
7 -4.00 27.50 0.25 0.20 0.10 -1.00 1.00 -1.00 22.28
8 -4.00 27.50 0.25 0.20 0.10 -1.00 1.00 0.00 24.75
9 -4.00 27.50 0.25 0.20 0.10 -1.00 1.00 1.00 27.23
10 -4.00 27.50 0.25 0.20 0.10 0.00 -1.00 -1.00 19.80
11 -4.00 27.50 0.25 0.20 0.10 0.00 -1.00 0.00 22.00
12 -4.00 27.50 0.25 0.20 0.10 0.00 -1.00 1.00 24.20
13 -4.00 27.50 0.25 0.20 0.10 0.00 0.00 -1.00 24.75
14 -4.00 27.50 0.25 0.20 0.10 0.00 0.00 0.00 27.50
15 -4.00 27.50 0.25 0.20 0.10 0.00 0.00 1.00 30.25
16 -4.00 27.50 0.25 0.20 0.10 0.00 1.00 -1.00 29.70
17 -4.00 27.50 0.25 0.20 0.10 0.00 1.00 0.00 33.00
18 -4.00 27.50 0.25 0.20 0.10 0.00 1.00 1.00 36.30
19 -4.00 27.50 0.25 0.20 0.10 1.00 -1.00 -1.00 24.75
20 -4.00 27.50 0.25 0.20 0.10 1.00 -1.00 0.00 27.50
21 -4.00 27.50 0.25 0.20 0.10 1.00 -1.00 1.00 30.25
22 -4.00 27.50 0.25 0.20 0.10 1.00 0.00 -1.00 30.94
23 -4.00 27.50 0.25 0.20 0.10 1.00 0.00 0.00 34.38
24 -4.00 27.50 0.25 0.20 0.10 1.00 0.00 1.00 37.81
25 -4.00 27.50 0.25 0.20 0.10 1.00 1.00 -1.00 37.13
26 -4.00 27.50 0.25 0.20 0.10 1.00 1.00 0.00 41.25
27 -4.00 27.50 0.25 0.20 0.10 1.00 1.00 1.00 45.38
感謝您的任何幫助。
約翰
我有很多東西要學。 。你讓我的朋友看起來很容易。再次感謝。約翰 – John
@John非常歡迎你。很高興它有幫助。 :-) –