df.at[df.index[i], "position_hc"] = -lot_size * df.iloc[i]["收盘价_hc"] / df.iloc[i]["收盘价_rb"]这个的计算依据是什么
时间: 2024-06-08 18:11:33 浏览: 153
这个计算是在对期货合约进行套利时使用的,其中:
- lot_size 是期货合约的交易单位,表示每手交易的数量。
- df.iloc[i]["收盘价_hc"] 表示第 i 行数据中沪铜期货收盘价的数值。
- df.iloc[i]["收盘价_rb"] 表示第 i 行数据中螺纹钢期货收盘价的数值。
其中,沪铜期货和螺纹钢期货在交易所中通常是以不同的计价货币进行交易的,因此需要将它们进行换算。具体来说,假设当前沪铜期货的收盘价为 P_hc,螺纹钢期货的收盘价为 P_rb,交易单位为 lot_size,那么可以通过以下公式将螺纹钢期货的价值转换为沪铜期货的价值:
- P_hc * lot_size = P_rb * X
其中 X 表示螺纹钢期货的数量,等式右侧是螺纹钢期货的总价值,等式左侧是沪铜期货的总价值。将上述公式变形,可以得到:
- X = P_hc * lot_size / P_rb
因此,df.at[df.index[i], "position_hc"] = -lot_size * df.iloc[i]["收盘价_hc"] / df.iloc[i]["收盘价_rb"] 的计算依据就是将螺纹钢期货的价值转换为沪铜期货的价值,然后乘以交易单位得到所需交易的数量。其中负号表示卖出操作。
相关问题
new_df = pd.DataFrame(columns=df.columns) for i in range(4, len(df)): if df.iloc[i, 0] == df.iloc[i-2, 0] and df.iloc[i, 3]-df.iloc[i-2, 3] == 200: row1 = df.iloc[i] row2 = df.iloc[i - 2] new_row = pd.concat([row1, row2], axis=0) new_df = new_df.append(new_row, ignore_index=False)AttributeError: 'DataFrame' object has no attribute 'append'
这个错误提示是因为在调用 `append` 方法时,使用的是 DataFrame 类型的对象 `new_df` ,而 DataFrame 没有 `append` 属性。可以尝试将 `ignore_index` 设置为 `True`,如下所示:
```
new_df = new_df.append(new_row, ignore_index=True)
```
或者,可以使用 `concat` 方法来将新行添加到 DataFrame 中:
```
new_df = pd.concat([new_df, new_row], ignore_index=True)
```
df_train = df_log.iloc[ : -test_size] df_test = df_log.iloc[-test_size : ] df_train.shape,df_test.shape
这段代码是将数据集按照测试集大小(test_size)的比例拆分成训练集(train)和测试集(test)两部分,并分别赋值给 df_train 和 df_test 两个变量。
其中 df_log 是原始数据集, iloc[] 是 Pandas 中的索引方式,[ : -test_size] 表示选取从第 0 行到倒数第 test_size 行的数据作为训练集,[-test_size : ] 表示选取从倒数第 test_size 行到最后一行的数据作为测试集。
最后, df_train.shape 和 df_test.shape 分别输出训练集和测试集的维度信息,即行数和列数。
阅读全文