#python #pandas #numpy #stock
Вопрос:
я работаю над бэктестом, и у меня возникла проблема с расчетом платы.
Предположим, что плата составляет 0,1%
И у меня уже есть цены на покупку/продажу, чтобы я мог получить процент прибыли:
где:
df['Profit'] = ((df['Sells'] - df['Buys']) / df['Buys']) 1
Пример:
Покупает | Продает | Прибыль |
---|---|---|
3697.35 | 3698.69 | 1.000362 |
3698.24 | 3699.81 | 1.000425 |
3703.69 | 3706.23 | 1.000686 |
Таким образом, возвраты без сборов являются
returns = df.Profit.cumprod()
Как я могу рассчитать фактическую прибыль (с учетом сборов) ?
Комментарии:
1. Что означает «комиссия в размере 0,1%»? Взимается ли плата за каждую транзакцию? Или от прибыли?
2. @TC, составляет 0,1% с каждой транзакции
Ответ №1:
Давайте сначала взглянем на вашу формулу:
Profit = (Sells - Buys) / Buys 1
= Sells / Buys - Buys / Buys 1
= Sells / Buys - 1 1
= Sells / Buys
Теперь из-за комиссии за транзакцию 0,1% вычитается из ваших продаж, а также добавляется к вашим покупкам. Таким образом, мы можем переписать код следующим образом:
fee = 0.001
df['Profit'] = df['Sells'].mul(1 - fee) / df['Buys'].mul(1 fee)