У меня есть фрейм данных pandas, где close — это цены закрытия, а цена входа — это цена закрытия, по которой позиция была открыта. Когда позиция закрывается, цена входа снова изменится на NaN до тех пор, пока снова не будет открыта другая позиция.
Теперь я хочу найти PnL всей стратегии. Это своего рода кумулятивное суммирование, но не совсем так, поскольку внутри торговой позиции я не хочу, чтобы PnL складывался. Так что я немного в замешательстве.
Предположим, что в любой момент времени для этого тестирования на истории покупается только одно количество.
close entry_prices
0 98 NaN
1 101 101.0
2 106 101.0
3 107 101.0
4 110 101.0
5 111 101.0
6 120 NaN
7 123 NaN
8 124 NaN
9 123 123.0
10 122 123.0
11 123 123.0
12 120 123.0
13 121 NaN
14 125 NaN
Я попробовал это, но PNL как-то перепутался между торговой позицией
df['pnl'] = np.where(df['entry_prices'].shift() == df['entry_prices'], df['close'] - df['entry_prices'], 0)
# Initialize strategy_pnl column
df['strategy_pnl'] = np.nan
# Calculate the cumulative sum of total P&L regardless of trading positions
cumulative_pnl = 0
for idx, row in df.iterrows():
if not np.isnan(row['entry_prices']):
pnl = row['close'] - row['entry_prices']
cumulative_pnl += pnl
df.at[idx, 'strategy_pnl'] = cumulative_pnl
Это тот результат, который мне нужен
close entry_prices Total_PNL
0 98 NaN 0
1 101 101.0 0
2 106 101.0 5
3 107 101.0 6
4 110 101.0 9
5 111 101.0 10
6 120 NaN 10
7 123 NaN 10
8 124 NaN 10
9 123 123.0 10
10 122 123.0 9
11 123 123.0 9
12 120 123.0 6
13 121 NaN 6
14 125 NaN 6
Подробнее здесь: https://stackoverflow.com/questions/790 ... -dataframe
Рассчитайте общую прибыль и убыток (PnL) с использованием Pandas Dataframe ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Рассчитайте общую прибыль и убыток (PnL) с использованием Pandas Dataframe
Anonymous » » в форуме Python - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-