Полуфинал 35

Page 1

Changellenge >> Cup Technical 2013

Реализация алгоритма межбиржевого арбитража с использованием лент Боллинджера Григорий Михеев Николай Терновой Анастасия Булина Ксения Корнева

35


35

Наш подход

Модификация программытестера

Нахождение максимально возможной прибыли из тестовых данных

Введение функции f(t)=Pa-Pb

Визуальное изучение графика f(t)

Построение доверительных интервалов для экстремумов f(t)

Вывод в файл показателя прибыли после каждой операции – позволяет изучать, как изменяется прибыль, находить тренды

Changellenge Cup Technical 2013 >> 35 team

2


35

Алгоритм

Алгоритм использует тот принцип, что линия f(t) в большинстве случаев осциллирует между линиями поддержки и сопротивления. Таким образом, с большой вероятностью края ленты Боллинджера являются локальными экстремумами функции f(t), т.е. касание (приближение) линии поддержки/сопротивления является сигналом для реализации возможности арбитража

Исключаем из рассмотрения абсолютные значения цен т.к. важна только прибыль, полученная непосредственно на арбитраже

Вводим функцию спреда f(t)=Pa-Pb (спредом будем называть разницу в цене между двумя биржами)

Для работы с получившимся временным рядом используем индикатор Ленты Боллинджера (Bollinger Bands).

Создаем Average)

скользящее

среднее

(Moving

Создаем линию сопротивления и линию поддержки, расстояние между линиями и скользящим средним равно 2σ, где σ – среднеквадратическое отклонение величины f(t)

Changellenge Cup Technical 2013 >> 35 team

3


35

Диаграмма классов Arb35 -MathContext: MathContext = new MathContext(16, RoundingMode.HALF_EVEN) -balances: Balance[*] = new Balance[2] -sln: BigDecimal = new BigDecimal(0.0000001, MathContext) -convertorPrice: DecimalFormat = new DecimalFormat("0.###") -convertorAmount: DecimalFormat = new DecimalFormat("0.########") -Fee: BigDecimal = new BigDecimal(0.0025, MathContext) -FeeMult: BigDecimal = new BigDecimal(1).subtract(Fee, MathContext) -frameWidth: int = 30 -multiplier: BigDecimal = new BigDecimal(10) -profitTreshold: BigDecimal = new BigDecimal(0.00005, MathContext) -minAmount: BigDecimal = new BigDecimal(0.01, MathContext) -maverage: MovingAverage = new MovingAverage(frameWidth)

Balance +XXX: BigDecimal +YYY: BigDecimal

<<create>>-Arb35() +main(args: String) -run() -parseAndTrade(input: String) -trade(priceXXX: BigDecimal, amountXXX: BigDecimal, priceYYY: BigDecimal, amountYYY: BigDecimal) -parseAndUpdateBalance(input: String)

Series -N: int = 5 -MathContext: MathContext = new MathContext(16, RoundingMode.HALF_EVEN) -rawSeries: Linked List <BigDecimal> = new LinkedList <BigDecimal>(); <<create>>+Series() <<create>>+Series(N: int) +addObservation(value: BigDecimal) +getAverage(): BigDecimal +size(): int +getSeries(): LinkedList <BigDecimal> +getDeviation(): BigDecimal

Changellenge Cup Technical 2013 >> 35 team

MovingAverage -N: int = 20 -rawSeries: Series -averages: Series <<create>>+MovingAverage() <<create>>+MovingAverage(N: int) -initSeries() +addObservation(value: BigDecimal) +getDeviation(): BigDecimal +getLastAverage(): BigDecimal

4


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.