У меня есть фрейм данных 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
Программы на Python
1727459353
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
Подробнее здесь: [url]https://stackoverflow.com/questions/79032437/calculate-total-profit-and-loss-pnl-using-pandas-dataframe[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия