Рубрики
Без рубрики

Анализ торговой истории Robinhood

Скрипт на Python для просмотра вашей торговой истории по торговым опционам и отдельным акциям на Robinhood: рассчитайте прибыль/убыток, суммируйте выплаты дивидендов и создайте сравнение покупок и удержаний.

Автор оригинала: 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, в зависимости от того, как далеко вы зайдете.