Как проанализировать криптопортфель по CSV-файлу (с нескольких бирж)

Чтобы проанализировать криптовалютный портфель, распределенный по нескольким биржам, экспортируйте CSV-файл с каждой площадки и приведите их к единой схеме. Затем сведите транзакции в текущие позиции и сопоставьте их с базой расчета стоимости, чтобы рассчитать нереализованную прибыль и убытки. Самое сложное здесь — не математика. Дело в том, что нет двух бирж, которые экспортировали бы одинаковые столбцы.
Каждый, кто держит активы более чем в одном месте, сталкивался с этим. Каждый дашборд уверенно показывает какую-то цифру, но ни один из них не отражает картину целиком. Итоговая сумма существует только в виде расчетов, которые кто-то делает вручную по воскресеньям.
В этом руководстве рассматривается этап экспорта и схема нормализации, которая делает файлы сопоставимыми. Затем мы разберем расчет позиций, прибыли и убытков, а также моменты, когда ручной способ начинает отнимать больше времени, чем экономит.
Эта статья посвящена методике анализа данных. Она не является инвестиционной, налоговой или финансовой рекомендацией.
Что вам понадобится перед началом работы
Вам понадобится экспорт транзакций с каждой площадки, где у вас есть открытая позиция. Это касается как бирж, так и кошельков, если из них можно выгрузить историю транзакций. Одной только истории торгов недостаточно. Депозиты, выводы средств, награды за стейкинг, аирдропы и комиссии — все это влияет на ваши балансы, и портфель, построенный только на покупках и продажах, просто не сойдется.
Также вам нужно заранее определиться с двумя вещами, так как они напрямую влияют на конечный результат:
Метод расчета стоимости (cost basis). FIFO, LIFO и средневзвешенная стоимость дают совершенно разные показатели нереализованной прибыли по одним и тем же сделкам. Выберите один метод и последовательно применяйте его ко всем площадкам.
Валюта отчетности. Если вы торговали парами вроде ETH/BTC, у некоторых транзакций не будет указана цена в фиате. Вам понадобится справочная цена на момент совершения транзакции, чтобы выразить все операции в единой валюте.
Хороший результат выглядит следующим образом. Вы получаете таблицу позиций, в которой для каждого актива указаны количество, средняя стоимость, текущая стоимость и нереализованная прибыль. Рядом находится диаграмма распределения активов, показывающая, какую долю криптовалютного портфеля занимает каждый из них.
Как сделать это вручную
Вариант 1: Приведение каждого экспорта к единой схеме
Откройте каждый CSV-файл и сопоставьте его столбцы с общим набором: временная метка, площадка, тип транзакции, актив, количество, цена, валюта комиссии, сумма комиссии.
Именно здесь кроется основная часть работы. Одна площадка пишет Buy, другая — BUY, третья — Trade с положительным или отрицательным количеством, указывающим направление сделки. Временные метки в одном экспорте могут быть указаны по местному времени, а в другом — по UTC, что критически важно при хронологической сортировке. Комиссии в одних файлах вынесены в отдельный столбец, а в других — уже вычтены из объема сделки. Если упустить это из виду, баланс по каждой позиции окажется слегка завышенным.
Переведите все временные метки в UTC и стандартизируйте обозначения типов транзакций. Объедините файлы на одном листе, добавив столбец с указанием площадки, чтобы вы всегда могли отследить источник любой строки.
Вариант 2: Сведение транзакций в позиции
Сгруппируйте объединенный лист по активам и просуммируйте значения с учетом знака. Покупки, депозиты, награды и аирдропы суммируются; продажи, выводы средств и комиссии, уплаченные в этом активе, вычитаются.
Прежде чем доверять результату, стоит провести две проверки. Отрицательный баланс по любому активу указывает на пропущенный депозит или несопоставленный тип транзакции. Подозрительно круглое число по какому-либо активу обычно указывает на перевод между вашими собственными кошельками или биржами. Он был учтен как покупка на одной стороне без соответствующего списания на другой. Внутренние переводы — это самая частая причина двойного учета.
Вариант 3: Сопоставление с базой расчета стоимости и расчет прибыли и убытков
Пройдитесь по списку транзакций для каждого актива в хронологическом порядке, применяя выбранный метод для отслеживания стоимости удерживаемых вами единиц. Средневзвешенную стоимость проще всего реализовать в таблице: ведите нарастающий итог стоимости и количества и пересчитывайте среднее значение при каждой покупке.
Умножьте оставшееся количество на текущую рыночную цену, чтобы получить текущую стоимость. Вычтите накопленную стоимость, чтобы узнать нереализованную прибыль, и просуммируйте реализованную прибыль, зафиксированную при каждой продаже. Затем добавьте столбец распределения активов — стоимость каждого актива в процентах от портфеля. Обычно именно эти цифры заставляют переосмыслить стратегию.
В чем минусы ручного подхода
Сопоставление схем — это не разовая задача. Биржи периодически обновляют форматы экспорта, и незаметно сместившийся столбец может сломать формулу поиска, которая отлично работала в прошлом квартале.
Сверка данных дается еще тяжелее. Чтобы найти один несопоставленный внутренний перевод среди 4,000 строк, придется сортировать данные по активам и временным меткам и вручную сопоставлять записи. Это по-настоящему нудная работа, которую приходится повторять при каждом обновлении данных.
К тому же файл постоянно растет. Несколько лет активности на трех площадках могут превратиться в десятки тысяч строк. При таком объеме таблица, перегруженная цепочками формул поиска и расчета скользящего среднего, начинает сильно тормозить и легко ломается.
Как проанализировать криптовалютный портфель с помощью Powerdrill Bloom
Шаг 1: Загрузите данные
Загрузите файлы экспорта CSV со всех площадок одновременно. Powerdrill Bloom анализирует каждый файл отдельно, поэтому различия в названиях столбцов и форматах дат будут видны еще до объединения данных. Вы сразу увидите, в каком экспорте используется UTC, а в каком — нет.
Шаг 2: Опишите задачу для анализа на естественном языке
Сформулируйте запрос простыми словами. Попросите объединить эти файлы экспорта в одну историю транзакций, свести их в позиции по активам и отметить внутренние переводы, которые отображаются только с одной стороны. Затем запросите распределение по активам, нереализованную прибыль на основе средневзвешенной стоимости или динамику изменения структуры портфеля за последний год.
Шаг 3: Экспортируйте график, отчет или презентацию
Получите диаграмму распределения активов, таблицу позиций или текстовый отчет о концентрации и доходности. При обновлении данных в следующем квартале вам нужно будет просто загрузить новые файлы экспорта и задать тот же вопрос.
Почему это лучше, чем ежеквартальное пересоздание таблиц вручную
| Ручные таблицы | Powerdrill Bloom | |
|---|---|---|
| Сопоставление схем | Приходится переделывать при изменении формата экспорта | Обрабатывается для каждого файла при загрузке |
| Проверка внутренних переводов | Ручная сортировка и сверка | Прямой запрос на поиск несовпадающих пар |
| Добавление четвертой площадки | Новое сопоставление, новые формулы | Просто еще один файл |
| Дополнительные вопросы | Каждый раз новые формулы | Запросы к тем же самым данным |
Главный скрытый минус ручного подхода в том, что любой новый вопрос превращается в мини-проект. Чтобы спросить «как выглядело мое распределение активов в марте?», придется заново собирать таблицу позиций на тот момент времени. Когда задавать вопросы легко, вы делаете это чаще — а ведь избыточная концентрация портфеля как раз и обнаруживается тогда, когда проверить ее не составляет труда.
Распространенные ошибки
Пять типичных ошибок, из-за которых чаще всего искажаются данные в криптовалютном портфеле, собранном вручную.
Учет внутренних переводов как сделок. Вывод средств с одной площадки и депозит на другую — это одна операция. Если учитывать их как два независимых события, это искусственно раздует как ваши балансы, так и видимый объем торгов.
Игнорирование комиссий, уплаченных в торгуемом активе. Оплата комиссии в ETH уменьшает вашу позицию в ETH. Файлы экспорта, в которых комиссия уже заложена в количество, и файлы, где она вынесена отдельно, требуют разного подхода к обработке.
Смешивание методов расчета стоимости на разных площадках. Использование средневзвешенной стоимости на одной бирже и FIFO на другой дает итоговый показатель портфеля, который не имеет никакого смысла.
Игнорирование наград за стейкинг и аирдропов. Они увеличивают количество активов без сопутствующей покупки. Если их не учесть, средняя стоимость единицы актива окажется завышенной.
Сравнение с неактуальными ценами. Для расчета текущей стоимости нужны цены всех активов, зафиксированные в один и тот же момент времени. Если цены взяты с разницей в несколько часов, проценты распределения активов в портфеле будут неточными.
Заключение
Анализ криптовалютного портфеля на нескольких площадках сводится к четырем шагам: экспортировать все данные, привести их к единой схеме, свести в позиции и сопоставить с базой расчета стоимости. Сделать это в таблице вполне реально. И это будет работать ровно до тех пор, пока вы не добавите четвертую площадку или пока какая-нибудь биржа не изменит структуру столбцов в файле экспорта.
Если ежеквартальная рутина с таблицами стала причиной того, что вы проверяете портфель реже, чем хотелось бы, попробуйте Powerdrill Bloom для работы с имеющимися файлами экспорта. О том, как решить эту задачу для одной площадки, читайте в статье об анализе экспорта CSV криптовалютной биржи. Механика объединения файлов описана на странице функции объединения CSV, а визуализация результатов — в статье о превращении CSV в график. Обзор более широкого спектра решений можно найти в нашей подборке бесплатных AI-инструментов для криптоанализа.
Часто задаваемые вопросы
Как объединить файлы экспорта криптовалют с разных бирж?
Сопоставьте столбцы каждого файла экспорта с общей схемой: временная метка, площадка, тип, актив, количество, цена, комиссия. Затем переведите все временные метки в UTC и объедините файлы, добавив столбец с указанием площадки. Сохранение этого столбца позволит вам отследить источник любого показателя.
Как лучше всего рассчитать базу стоимости криптовалюты в таблице?
Средневзвешенная стоимость — наиболее практичный метод для ручного расчета. Ведите нарастающий итог стоимости и количества по каждому активу и пересчитывайте среднее значение при каждой покупке. FIFO и LIFO требуют отслеживания на уровне отдельных партий (лотов), что становится крайне неудобным уже после нескольких сотен транзакций.
Почему итоговая сумма моего криптовалютного портфеля не совпадает с данными на дашбордах бирж?
Обычно причинами являются дважды учтенные внутренние переводы, невычтенные комиссии, уплаченные в торгуемом активе, или отсутствие наград за стейкинг в списке транзакций. В первую очередь проверьте наличие отрицательных балансов — они всегда указывают на пропущенную или несопоставленную транзакцию.
Можно ли анализировать транзакции из кошельков вместе с CSV-файлами бирж?
Да, при условии, что вы можете экспортировать историю транзакций с указанием временных меток, актива, количества и направления сделки. В ончейн-историях комиссии за газ обычно необходимо выделять в отдельную строку комиссий, так как они уменьшают баланс актива, в котором оплачивается комиссия.
Нужно ли мне отслеживать каждую мелкую транзакцию?
Для оценки распределения активов мелкие транзакции практически не влияют на результат. Однако для расчета базы стоимости и реализованной прибыли они важны, так как каждая из них меняет среднюю стоимость единиц актива, которые вы все еще удерживаете. Чем ближе вы подходите к расчету точной прибыли, тем важнее полнота данных.