df.dtypes
Close float64
eqId int64
date object
IntDate int64
expiry int64
delta int64
ivMid float64
conf float64
Skew float64
psc float64
vol_B category
dtype: object
gb = df.groupby([df['vol_B'],df['expiry']])
gb.describe()
Run Code Online (Sandbox Code Playgroud)
我得到一个很长的错误消息,最后一行是
AttributeError: 'Categorical' object has no attribute 'flags'
Run Code Online (Sandbox Code Playgroud)
当我groupby分别对它们中的每一个执行时,它们各自(独立地)工作得很好,我只是不能执行多个groupby,其中一个变量是"bin".
此外,当我使用其他2个变量时,我能够执行多次groupby&ndash,我成功执行了此操作:
gb = df.groupby([df['delta'],df['expiry']])
Run Code Online (Sandbox Code Playgroud) 我有一个四阶回归方程,我想找到因变量(y)的值和给出它的相应的自变量(x).本质上,我正在寻找给定范围内曲线斜率为零的点(曲线最低点).
我的等式是:
y = 2661x^5 + 637x^4 + 9.32x^3 - 3.88x^2 - 0.62x + .21
Run Code Online (Sandbox Code Playgroud)
我对x [-0.155,0.103]范围内的最小值感兴趣.
实际的方程变量如下:
In [54]:
df3.dtypes
Out[54]:
date datetime64[ns]
expDate datetime64[ns]
X^5 float64
X^4 float64
X^3 float64
X^2 float64
X float64
Const float64
minls float64
maxls float64
dtype: object
In [55]:
df3
Out[55]:
date expDate X^5 X^4 X^3 X^2 \
5 2008-01-02 2008-01-19 2661.368357 637.214501 9.320573 -3.884286
X Const minls maxls
5 -0.621015 0.21083 -0.154444 0.102655
Run Code Online (Sandbox Code Playgroud)
其中minls和maxls是范围变量
有一种优雅的方式来做到这一点?我确实看过scipy.optimize.brent,但是无法按照它的实现.
我还想提一下,我已经在数据框上按[date,expDate]执行了一个组,以防它对解决方案很重要.我的愿望是有一个新变量df3.zerols包含[minls,maxls]范围内的"ls"值
在此先感谢您的任何帮助
约翰
更新:我得到了一些帮助,当我只有一行数据时,能够执行所需的过程.以下是我约会的代码.在执行group-by on date和expDate之后,我需要能够在许多行上执行相同的分析.
In …Run Code Online (Sandbox Code Playgroud) 我有以下返回数据框
ret
Out[3]:
Symbol FX OGDC PIB WTI
Date
2010-03-02 0.000443 0.006928 0.000000 0.012375
2010-03-03 -0.000690 -0.007873 0.000171 0.014824
2010-03-04 -0.001354 0.001545 0.000007 -0.008195
2010-03-05 -0.001578 0.008796 -0.000164 0.015955
Run Code Online (Sandbox Code Playgroud)
以及每个符号的以下权重:
df3
Out[4]:
Symbol Weight
0 OGDC 0.182022
1 WTI 0.534814
2 FX 0.131243
3 PIB 0.151921
Run Code Online (Sandbox Code Playgroud)
我试图获得每天的加权回报并尝试:
port_ret = ret.dot(df3)
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误消息:
ValueError: matrices are not aligned
Run Code Online (Sandbox Code Playgroud)
我的目标是对每个日期进行加权回报,例如 2010-03-02 如下:
weighted_ret = 0.000443*.131243+.006928*.182022+0.000*0.151921+0.012375*.534814 = 0.007937512
Run Code Online (Sandbox Code Playgroud)
我不确定为什么我会收到此错误,但会很高兴为加权回报提供替代解决方案