recommender

package
v0.0.0-...-618a704 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 30, 2021 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

Durations содержит список всех возможных значений Duration

View Source
var ErrNotFound = errors.New("not found")

ErrNotFound возвращается, если запрошенный объект не найден

Functions

This section is empty.

Types

type CashFlowItem

type CashFlowItem struct {
	// Тип выплаты
	Type CashFlowItemType

	// Дата выплаты
	Date time.Time

	// Сумма выплаты, в рублях
	ValueRub float64
}

CashFlowItem содержит данные выплат по облигации

type CashFlowItemType

type CashFlowItemType string

CashFlowItemType кодирует тип выплаты

const (
	// Coupon обозначает тип выплаты "выплата по купону"
	Coupon CashFlowItemType = "C"

	// Amortization обозначает тип выплаты "выплата по амортизации"
	Amortization CashFlowItemType = "A"

	// Maturity обозначает тип выплаты "выплата по погашению"
	Maturity CashFlowItemType = "M"
)

type Collection

type Collection interface {
	// ID возвращает ID коллекции
	ID() string

	// Name возвращает название коллекции
	Name() string

	// ListBonds возвращает список облигаций из коллекции
	ListBonds(ctx context.Context, tx *data.TX, limit int, duration Duration) ([]*Report, error)
}

Collection содержит данные коллекции рекомендаций

type Duration

type Duration string

Duration представляет срок до погашения облигации

const (
	// Duration1Year обозначает облигации, до погашения которых осталось не более 1 года
	Duration1Year Duration = "1y"

	// Duration2Year обозначает облигации, до погашения которых осталось не более 2 лет
	Duration2Year Duration = "2y"

	// Duration3Year обозначает облигации, до погашения которых осталось не более 3 лет
	Duration3Year Duration = "3y"

	// Duration4Year обозначает облигации, до погашения которых осталось не более 4 лет
	Duration4Year Duration = "4y"

	// Duration5Year обозначает облигации, до погашения которых осталось не более 5 лет
	Duration5Year Duration = "5y"
)

type Report

type Report struct {
	// Облигация
	Bond *data.Bond

	// Эмитент
	Issuer *data.Issuer

	// Текущие рыночные данные
	MarketData *data.MarketData

	// Дней до погашения
	DaysTillMaturity int

	// Валюта торгов
	Currency string

	// Чистая цена открытия, в %
	OpenPrice float64

	// НКД на момент открытия, в валюте
	OpenAccruedInterest float64

	// Номинал на момент открытия, в валюте
	OpenFaceValue float64

	// Комиссия за сделку покупки, в валюте
	OpenFee float64

	// Сумма затрат на покупку 1 облигации, в валюте
	OpenValue float64

	// Сумма выплат по купонам от момента покупки до момента погашения, в валюте
	CouponPayments float64

	// Сумма выплат по амортизациям от момента покупки до момента погашения, в валюте
	AmortizationPayments float64

	// Сумма выплат по погашению, в валюте
	MaturityPayment float64

	// Сумма налогов, в валюте
	Taxes float64

	// Суммарный доход, в валюте
	Revenue float64

	// Прибыль, в валюте
	ProfitLoss float64

	// Прибыль, в % по отношению к сумме вложений
	RelativeProfitLoss float64

	// Приведенная доходность, % годовых
	InterestRate float64

	// Таблица выплат
	CashFlow []*CashFlowItem
}

Report содержит данные отчета по облигации

type Service

type Service interface {
	// ListCollections возвращает список коллекций рекомендаций
	ListCollections() []Collection

	// GetCollection возвращает коллекцию рекомендаций по ее ID
	// Если коллекция не найдена, то возвращается ошибка ErrNotFound
	GetCollection(id string) (Collection, error)

	// GetReport возвращает отчет по отдельной облигации
	// Если отчет не найден, то возвращается ошибка ErrNotFound
	GetReport(ctx context.Context, tx *data.TX, id int) (*Report, error)

	// Suggest выполняет расчет предложений по инвестированию
	Suggest(ctx context.Context, tx *data.TX, request *SuggestRequest) (*SuggestResult, error)

	// Rebuild выполняет обновление данных рекомендаций
	Rebuild(ctx context.Context, tx *data.TX) error
}

Service предоставляет доступ к модулю рекомендаций

func New

func New() (Service, error)

New создает новый объект Service

type SuggestRequest

type SuggestRequest struct {
	// Сумма для инвестирования
	Amount float64

	// Максимальный срок инвестирования
	MaxDuration Duration

	// Ограничения по составу портфеля
	Parts []*SuggestRequestPart
}

SuggestRequest - запрос на формирование предложений по инвестированию

type SuggestRequestPart

type SuggestRequestPart struct {
	// Тип коллекции
	Collection Collection

	// Вес в портфеле
	Weight float64
}

SuggestRequestPart - ограничения по составу портфеля для запроса SuggestRequest

type SuggestResult

type SuggestResult struct {
	// Список позиций
	Positions []*SuggestedPortfolioPosition

	// Общая сумма инвестирования
	Amount float64

	// Дней до погашения всего портфеля
	DurationDays int

	// Прибыль, в валюте
	ProfitLoss float64

	// Прибыль, в % по отношению к сумме вложений
	RelativeProfitLoss float64

	// Приведенная доходность, % годовых
	InterestRate float64
}

SuggestResult - результат расчета предложений по инвестированию

type SuggestedPortfolioPosition

type SuggestedPortfolioPosition struct {
	Report

	// Размер позиции
	Quantity int

	// Доля в составе портфеля (0..1)
	Weight float64
}

SuggestedPortfolioPosition - позиция в предложенном портфеле

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL