Рассчитайте общую прибыль и убыток (PnL) с использованием Pandas DataframePython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Рассчитайте общую прибыль и убыток (PnL) с использованием Pandas Dataframe

Сообщение Anonymous »

У меня есть фрейм данных 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»