Найти в Дзене
Михаил Ксенофонтов

Создание системы управления портфелем с помощью SQL.

Оглавление

Инвестирование на финансовых рынках может быть как захватывающим, так и пугающим. Хотя гарантий не существует в инвестировании, наличие надежной системы управления портфелем может помочь вам быть организованным и принимать более обоснованные инвестиционные решения. В этой статье мы рассмотрим, как вы можете использовать SQL для создания системы управления портфелем, которая поможет отслеживать ваши позиции, анализировать производительность и принимать лучшие инвестиционные решения.

Portfolio statement.
Portfolio statement.

SQL ДЛЯ УПРАВЛЕНИЯ ПОРТФЕЛЕМ?

SQL, или Structured Query Language, является мощным инструментом для управления данными в реляционных базах данных. Используя SQL для управления данными портфеля, вы можете хранить и анализировать большие объемы данных в структурированном и эффективном формате. SQL также очень гибкий, что позволяет настраивать вашу систему управления портфелем для удовлетворения ваших специфических потребностей и требований. Независимо от того, управляете ли вы личным портфелем или крупным институциональным фондом, SQL может помочь вам быть организованным и принимать более обоснованные инвестиционные решения.

СОЗДАНИЕ ТАБЛИЦЫ ПОЗИЦИЙ ПОРТФЕЛЯ.

Первый шаг в создании системы управления портфелем с помощью SQL - создание таблицы для хранения ваших позиций портфеля. Таблица portfolio_holdings будет хранить информацию о ценных бумагах, находящихся в вашем портфеле, включая символ, дату, количество акций, стоимость покупки, рыночную стоимость, процент портфеля, сектор, страну, класс активов и примечания. Вот пример скрипта для создания таблицы portfolio_holdings:

CREATE TABLE portfolio_holdings (
id SERIAL PRIMARY KEY,
symbol VARCHAR(10) NOT NULL,
date DATE NOT NULL,
shares NUMERIC(15, 4) NOT NULL,
cost_basis NUMERIC(15, 4) NOT NULL,
market_value NUMERIC(15, 4) NOT NULL,
percentage NUMERIC(5, 2) NOT NULL,
sector VARCHAR(50),
country VARCHAR(50),
asset_class VARCHAR(50),
notes TEXT);
  1. символ: Символ или тикер ценной бумаги или финансового инструмента, находящегося в портфеле.
  2. дата: Дата, когда ценная бумага была добавлена или удалена из портфеля.
  3. акции: Количество акций, удерживаемых для ценной бумаги.
  4. базис стоимости: Базис стоимости ценной бумаги, то есть общая сумма, уплаченная за приобретение акций.
  5. рыночная стоимость: Текущая рыночная стоимость акций, удерживаемых в портфеле.
  6. процент: Процент от общей стоимости портфеля, представленный ценной бумагой.
  7. сектор: Сектор ценной бумаги, который можно использовать для анализа диверсификации портфеля по разным секторам.
  8. страна: Страна ценной бумаги, которую можно использовать для анализа экспозиции портфеля по различным географическим регионам.
  9. класс активов: Класс активов ценной бумаги, который можно использовать для анализа диверсификации портфеля по различным типам активов (например, акции, облигации, недвижимость).
  10. примечания: Любые дополнительные заметки или комментарии, относящиеся к ценной бумаге или ее производительности.

ВСТАВКА ИНФОРМАЦИИ В ПОРТФЕЛЬ.

После создания таблицы portfolio_holdings можно начать вставку ваших сделок в портфель. Вот пример оператора INSERT для добавления строки в таблицу portfolio_holdings:

INSERT INTO portfolio_holdings (symbol, date, shares, cost_basis, market_value, percentage, sector, country, asset_class, notes)
VALUES ('AAPL', '2023-02-23', 100.0, 15000.0, 17500.0, 10.0, 'Technology', 'USA', 'Equity', 'Purchased on market dip');

Этот оператор вставляет новую строку в таблицу portfolio_holdings со значениями для столбцов symbol, date, shares, cost_basis, market_value, percentage, sector, country, asset_class и notes. Вы можете изменять значения в разделе VALUES, чтобы соответствовать конкретной сделки, которое вы хотите добавить в таблицу portfolio_holdings.

РАСЧЕТ ЭФФЕКТИВНОСТИ ПОРТФЕЛЯ.

Один из ключевых преимуществ использования SQL для управления портфелем - возможность расчета показателей эффективности портфеля. Например, вы можете использовать SQL для расчета общей доходности, годовой доходности, волатильности и коэффициента Шарпа вашего портфеля.

Чтобы рассчитать коэффициент Шарпа вашего портфеля, вы можете использовать следующий SQL-запрос:

WITH daily_returns as (
SELECT date, SUM(close*shares) OVER (ORDER BY date) as portfolio_value,
SUM(close*shares) OVER (ORDER BY date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - SUM(close*shares) OVER (ORDER BY date ROWS BETWEEN 2 PRECEDING AND 1 PRECEDING) as daily_return
FROM portfolio_holdings
JOIN stock_prices ON portfolio_holdings.symbol = stock_prices.symbol AND portfolio_holdings.date = stock_prices.date
)
SELECT AVG(daily_return)/STDDEV(daily_return) as sharpe_ratio
FROM daily_returns;

Спасибо за ваш интерес!

Репозиторий на GitHub: Перейти >>