Автор оригинала: Trevor Welch.
~~~ From August 25, 2017 to today, your total PnL is $2457.01 You've made $1107.29 buying and selling individual equities, received $520.72 in dividends, and $829.0 on options trades With a starting allocation of $10000, if you had just bought and held QQQ, your PnL would be $1583.7 ~~~
Я написал сценарий для создания некоторых ключевых показателей о ваших сделках с Робин Гудом, и он даже работает с опционами и дивидендами! Попутно он экспортирует кучу аккуратных CSV (и фреймов данных Pandas, если хотите), чтобы вы могли провести дальнейший анализ самостоятельно, если захотите. Кроме того, он предоставляет сравнение “покупай и держи”, которое позволяет вам увидеть, как бы работал ваш счет, если бы вы просто все время откладывали деньги в QQQ (eek!).
Ниже приведена некоторая информация об этом (скопирована из README репозитория Github), а полный код находится здесь .
Скрипт на Python для просмотра вашей торговой истории по торговым опционам и отдельным акциям на Robinhood: рассчитайте прибыль/убыток, суммируйте выплаты дивидендов и создайте сравнение покупок и удержаний.
Особенности
- Рассчитать торговлю отдельными акциями pnl, полученные дивиденды, торговлю опционами pnl
- Экспорт CSV-файлов с отдельными сделками и другой информацией
- Экспорт маринованных кадров данных
- Укажите диапазон дат для сравнения
- Создание сравнения покупки и удержания
Скачать репо
Из командной строки:
git clone git@github.com:trevorwelch/rh-profit-and-loss.git cd rh-profit-and-loss
Беги, беги, беги!
Запуск по умолчанию (при этом будет обработана полная история вашего счета, начиная с вашей первой сделки):
python3 get_profit_and_loss.py –имя пользователя <имя пользователя> –пароль <пароль>
Например:
python3 get_profit_and_loss.py –имя пользователя ‘timmyturtlehands@gmail.com’ –пароль ‘LovePizza!11 один’
Вы увидите вывод, как:
From November 4, 2018 to today, your total PnL is $486.45 You've made $390.1 buying and selling individual equities, received $16.35 in dividends, and made $80.0 on options trades With your starting allocation of $10000, if you had just bought and held QQQ, your PnL would have been $-51.49
Запустите его и используйте другие функции
Посмотрите, как ваш портфель работал в указанном диапазоне дат
Укажите аргументы –start_date и –end_date
Например:
python3 get_profit_and_loss.py –имя пользователя ‘timmyturtlehands@gmail.com’ –пароль ‘LovePizza!11 one’ –start_date ‘1 июля 2018 года’ –end_date ‘1 августа 2018 года’
Экспорт CSV-файлов для дальнейшего изучения
Используйте флаг –csv
Скрипт может выводить несколько CSV – файлов: – pnl_df.csv
показывает вашу прибыль и убытки на тикер, а также любые выплаченные вами дивиденды (дивиденды не суммируются в net_pnl
) – divs_raw.csv
является полным дампом данных вашей истории дивидендов (и будущих дивидендов) – orders.csv
содержит все ваши индивидуальные ордера на покупку и продажу (включая ордера, которые не были выполнены) – options_orders_history_df.csv
содержит упрощенную запись ваших действий с опциями
Например:
python3 get_profit_and_loss.py –имя пользователя ‘timmyturtlehands@gmail.com’ –пароль ‘LovePizza!11 one’ –csv
Экспортируйте фреймы данных в виде солений для дальнейшего изучения:
Используйте флаг –pickle
Аналогичный экспорт в раздел CSV, но в виде маринованных фреймов данных, которые могут быть загружены непосредственно в панды для дальнейшего изучения, например:
import pandas as pd df_pnl = pd.read_pickle('df_pnl') # Find worst ticker and best ticker, dataframe is already sorted by net_pnl best_ticker = df_pnl.iloc[0].name best_ticker_pnl = df_pnl.iloc[0].net_pnl worst_ticker = df_pnl.iloc[-1].name worst_ticker_pnl = df_pnl.iloc[-1].net_pnl print("Your best individual equities trade over this time period was with {}, with ${} in gains".format(best_ticker, best_ticker_pnl)) print("Your worst individual equities trade over this time period was with {}, with ${} in gains".format(worst_ticker, worst_ticker_pnl))
Например:
python3 get_profit_and_loss.py –имя пользователя ‘timmyturtlehands@gmail.com” -пароль “LovePizza!11 one” – маринованный огурец
Введите начальное распределение портфеля для точного сравнения покупки и удержания
Укажите аргумент –starting_allocation
Как бы выглядел ваш портфель, если бы вы просто вложили такую же сумму денег в покупку NASDAQ? Введите сумму денег, которую вы начали инвестировать в Робин Гуда.
Например:
python3 get_profit_and_loss.py –имя пользователя ‘timmyturtlehands@gmail.com’ –пароль ‘LovePizza!11 one’ –starting_allocation 5000
Пример команды с пользовательскими параметрами, связанными вместе
python3 get_profit_and_loss.py –имя пользователя ‘timmyturtlehands@gmail.com’ –пароль ‘LovePizzaFhdjeiw!22222’ –start_date ‘1 июля 2018′ –end_date ’10 ноября 2018’ –starting_allocation ‘5000’ –csv
Требования
numpy pandas requests six
другие примечания и “библиография”
Если акция еще не продана, она использует последнюю цену продажи от IEX для расчета вашего нереализованного PnL.
Если вы не закрыли опцион, он будет отображаться как убыток по полной стоимости, за которую вы приобрели. Это слишком сложно, чтобы пытаться вычислить нереализованный PnL для опций. И в любом случае, это хороший урок в реальности вариантов!
symbols_and_instruments_url
– это таблица поиска, которая предоставляет внутренние идентификаторы инструментов для символов и наоборот, которые необходимы для взаимодействия с API. Сохраняя и обновляя этот рассол, вы уменьшаете количество запросов, которые вы делаете к API RH.Особая благодарность всем, кто поддерживает неофициальную библиотеку RH Python, модифицированная версия которой включена в это репо (https://github.com/Jamonek/Robinhood)
Часть кода истории заказов заимствована из (https://github.com/rmccorm4/Robinhood-Scraper/blob/master/Robinhood/robinhood_pl.py)
Для расчета покупки и удержания исторические данные QQQ взяты из (https://www.kaggle.com/qks1lver/amex-nyse-nasdaq-stock-histories) и IEX, в зависимости от того, как далеко вы зайдете.