我正在嘗試回測交易策略。
我已經保存為資料框的列:“日期”、“A”、“B”、“C”
我正在嘗試通過逐行執行操作來為現有資料框創建列 D、E、F 和 G。
我試圖:
- 從 D0 的值 1000 開始。
- 通過 D0 * C0 計算 E0。
- 通過 E0 / A0 計算 F0。
- 通過 (B0 * F0)-(A0 * F0) 計算 G0
- 通過 D0 G0 計算 D1
- 對每一行重復。例如,E1 = (D1 * C1)。F1 = E1 / A1 等等。
| 日期 | 一種 | 乙 | C | D | 乙 | F | G |
|---|---|---|---|---|---|---|---|
| 0 | 100 | 200 | 0.05 | 1000 | 1000*0.05 | (1000*0.05)/100 | (B0 * F0)-(A0 * F0) |
| 1 | 200 | 150 | 0.01 | 1000 (B0 * F0)-(A0 * F0) | |||
| 2 | 150 | 160 | 0.03 |
總共有 500 行,手動完成所有這些顯然是不可能的,這讓我覺得我需要使用 for 回圈,但我不確定如何。我該怎么辦?
df.at[0, 'D'] = 1000
for i in range(1, 500):
df.at[i, 'D'] = df.at[i-1, 'D'] df.at[i-1, 'G']
df.at[i, 'E'] = df.at[i, 'D'] * df.at[i, 'C']
df.at[i, 'F'] = df.at[i, 'E'] / df.at[i, 'A']
df.at[i, 'G'] = (df.at[i, 'B'] - df.at[i, 'A']) * df.at[i, 'F']
uj5u.com熱心網友回復:
要計算 500 行的迭代操作,使用顯式 for 回圈是最簡單的解決方案:
for i in range(1, n):
df.at[i, "D"] = df.at[i-1, "D"] df.at[i-1, "G"]
df.at[i, "E"] = df.at[i, "D"]*df.at[i, "C"]
df.at[i, "F"] = df.at[i, "E"]/df.at[i, "A"]
df.at[i, "G"] = (df.at[i, "B"]-df.at[i, "A"])*df.at[i, "F"]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/472053.html
上一篇:R:如何為多個資料框添加邊框?
