Package stocks3 :: Package core :: Module stock
[hide private]
[frames] | no frames]

Module stock

source code

Котировка

Котировка - это цена товара. Так как цена понятие всегда относительное, необходимо знать в каких единицах измеряется эта цена (можно же подсчитать, сколько попугаев стоит один доллар:). Поэтому c котировкой всегда связываются два товара: числитель и знаменатель котировки.

В зависимости от того, какой товар в котировке является "базовым", котировки делятся на прямые и обратные (косвенные).

Прямая котировка указывает цену единицы объекта торговли (1.20 доллар/1 литр бензина) и цена единицы указывается в числителе котировки.

Обратная котировка показывает - сколько единиц товара мы можем купить за единицу денег (0,83 литра бензина/1 доллар). В числителе обратной котировке указывается объем товара, который можно приорести за единицу денег.

Кроме того, котировки бывают односторонними и двусторонними.

Односторонняя котировка - это объявление одной цены (покупки или продажи, Price).

Двусторонняя котировка - это объявление цены покупки и цены продажи дилером (DualPrice).

Вспомогательные объекты

С основным объектом - котировкой - связываются второстепенные: товар, единица товара, данные котировки.

Товар - это объект, участвующий в котировке (Item). Это тот объект, который указывается либо в числителе, либо в знаменателе. Товаром также считается и валюта.

Единица товара - определяет в какой размерности представлен объем товара в котировке (например, котировка 10 Гривен/1 Рубль отражает стоимость 10 гривен при покупке их за рубли. В терминологии системы 10 Гривен - это виртуальная единица (Unit)).

Курс - зафиксированная в определенное время цена товара (Price).

Данные котировки по отношению к котировке образуют связь многие к одной.

Кросс-котировки

Кроссовая котировка отличается от обычной только методом расчета, но в конечном счете сводится к модели числитель/знаменатель. Примером кроссовой является котировке EUR/USD при расчете её через курс рубля.

Мелкие математические выкладки

Котировка дается в виде числа s: s = x/y, где x - количество единиц числителя, y - количество единиц знаменателя.

Очень часто требуется ответить на вопросы:

  1. Сколько единиц знаменателя стоит одна единица числителя?
  2. Сколько единиц числителя стоит одна единица знаменателя (обратная задача)?

Для расчета цены числителя в единицах знаменателя (Price.numeratorCost) используем формулу n = ys/x.

Для расчета цены знаменателя в единицах числителя (Price.denominatorCost) - d = x/ys.

Очевидно: n = 1/d.

Дельты

Часто требуется вычислить величину изменения значения котировки. В таком расчете участвуют два значения котировки - текущее и предыдущее.

Абсолютное изменение котировки вычисляется просто (absolutePriceDelta): c = v - v', где v - текущее значение котировки, v' - предыдущее значение котировки.

Относительное изменение котировки вычисляется в процентах от предыдущего значения (relativePriceDelta): o = (c / v') * 100.

Абсолютное изменение может быть вычислено всегда. Отнсительное - при условии присутствия предыдущего ненулевого значения (см. safeRelativePriceDelta).

Используемые типы чисел

При вычислениях используется тип stocks_ft. Для изменения этого типа следует использовать set_stocks_ft.

Управление точностью

Модуль считает с той точностью, которая достижима при заданных входных. значениях. Но, можно заставить модуль выдавать значения с той точностью, которая необходима нам. Таким полезным свойством обладает класс PrecisionController. Если через него пропускать необходимые нам значения, то они будут выданы с нужной точностью.

По умолчанию контроль точности не выполняется, то есть используется специальный контроллер - pseudoPrecisionController.

В качестве вспомогательного элемента используется декоратор precision_control, в который заворачиваются все функции, контролируемые по точности.

Все классы, которые сами управляют точностью, являются потомками класса Refined.


Author: Zasimov Alexey

Classes [hide private]
  stocks_ft
Этот тип используется во всех расчетов в этом модуле.
  Stock
Товар - любой объект, который имеет цену.
  Unit
Единица измерения количества довара, например, доллар.
  StockWithUnit
Товар с единицей измерения количества, например, бензин в литрах.
  Quote
Котировка - описывает отношение между ценами товаров.
  PseudoPrecisionController
Контроллер точности, который ничего не делает :)
  PrecisionController
Пропускает через себя значения, изменяя их точность.
  Refined
От этого класса порождаются все классы, которые сами управляют точностью.
  AbstractPrice
  Price
Значение котировки (курс, price) за какое-то число.
  DualPrice
Functions [hide private]
 
set_stocks_ft(floatType) source code
 
absolutePriceDelta(current, previous)
Абсолютное изменение значения котировки.
source code
 
relativePriceDelta(absolute, previous)
Относительное изменения значения котировки.
source code
 
precision_control(func)
Декоратор, управляющий точностью.
source code
 
safeRelativePriceDelta(current, previous, quantumJumpValue)
Расчет относительного изменения котировки в условиях возможного отсутствия предыдущего значения или нулевого предыдущего значения.
source code
Variables [hide private]
  __email__ = "zasimov-a@yandex-team.ru"
  pseudoPrecisionController = PseudoPrecisionController()
Function Details [hide private]

safeRelativePriceDelta(current, previous, quantumJumpValue)

source code 

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

Parameters:
  • current (StockData) - Текущее значение котировки.
  • previous (StockData) - Предыдущее значение котировки.
  • quantumJumpValue (float) - Значение, которое вернется в качестве результата при обнаружении кватового скачка :)