Модуль quotes. Чем торговать?


Перед тем как приступать к трейдингу следует определиться, каким торговым инструментом пользоваться. На Финаме доступно почти 300 наименований акций ММВБ – выбирать есть из чего. Но главный вопрос – как выбирать? Что является критерием выбора акций для торговли? Попробую объяснить на личном опыте.

Когда я только открыл брокерский счет и установил Quik, вышепоставленный вопрос меня не волновал: тогда я, почему-то, однозначно решил торговать акциями Газпрома. Интуиция меня не подвела – как позже мне стало известно, Газпром относится к числу, так называемых, «голубых фишек». Основные положительные свойства «голубых фишек»  - низкая величина спреда и высокая ликвидность. Добившись определенных (незначительных) успехов, торгуя исключительно акциями Газпрома и пользуясь сигналами разворота от индикатора Parabolic SAR, мне захотелось большего. Текущее положение дел меня не устраивало: сигнал от SAR приходил в лучшем случае раз в 2-3 дня. Захотелось расширить «площадь вспахиваемого поля». В голове нарисовался следующий алгоритм:

  1. обновлять котировки  всех акций за определенный период (например, месяц)
  2. для каждой рассчитать вероятность роста в течении следующих торговых суток
  3. выбрать 2-5 с наибольшими вероятностями роста и распределить инвестиции среди них
  4. к концу биржевого дня собирать сливки

Теоретически в месяц можно выжимать минимум 20% профита. Бриллиантовый дым заструился вокруг. Источником торгового сигнала было решено оставить Parabolic SAR. Написание скрипта заняло день или два. Итак, все отлажено, скрипт работает и я с нетерпением жду следующего дня для обкатки стратегии на реальном счете.

На следующий день утром запускаю скрипт и получаю список акций, которые по прогнозу должны прибавить в цене ближайшее время. Среди них оказались и акции «Телеграфа». Открыв дневной график изменений цен на эту акцию, я увидел что согласно Parabolic SAR цена действительно должна подрасти. Особо не задумываясь закупаюсь на 50 тыс «Телеграфом». И что я вижу: цена увеличивается раза в полтора. Открываю «стакан» и все становится ясно: акции телеграфа невостребованы и торгуются крайне редко и в очень малых объемах. Т.е. первую часть акций я взял по рыночной цене которая была на графике, а следующие партии покупались по очень завышенной цене… и я понял что обратно за такую цену я их не продам. Подержав «Телеграф» недели две (на всякий случай) продал по рыночной цене и в итоге потерял около 7 тыс.

Именно тогда у меня появилась идея отфильтровать ликвидные акции от неликвидных. Основным признаком ликвидности акции является большая интенсивность торгов. В качестве меры ликвидности я принял средний дневной объем денежных участвующих в купле-продаже конкретной акции. Вычисляется очень просто: среднее арифметическое произведений средней цены за день и дневного объема торгов. Посчитаем среднесуточный оборот для каждой из акций ММВБ. А что бы результаты рассчетов были более наглядными, отобразим данные в графическом виде. Для этого воспользуемся пакетом matplotlib.

Код с комментариями (скрипт написан с учетом прошлой статьи, поэтому котировки берутся из локальной базы):

# -*- coding: utf-8

import quotes.quotes as quotes
import matplotlib.pyplot as plt

folder = 'data/'
qlist = 'quotes/mmvb.txt'
interval = 8

symbols = quotes.get_symbols(qlist)

# массив для хранения среднесуточных объемов торговли
volumes = []
# проходимся по всем акциям
for symb in symbols:
	# для каждой загружаем ранее сохраненные котировки за прошлый год
	q = quotes.quote(interval, int(symb[0]) )
	q.load( folder + str(symb[0]) + '_' + str(interval) + '.csv'  )
	# пробегаемся по всем дням текущей акции
	s = 0.0
	for i in xrange(len(q.volume)):
		# прибавляем торговый оборот за день
		s += q.volume[i] * (q.high[i] + q.low[i]) / 2.0
	# считаем среднее
	if len(q.volume) == 0:
		continue
	s = s / len(q.volume)
	# учет будем вести в миллионах
	s = s/1000000
	volumes.append(s)

# выводим гистограмму
plt.hist(volumes, 50)
plt.show()

Результат работы скрипта:

Из рисунка видно, что подавляющая часть ценных бумаг торгуется в крайне узком диапазоне – среднесуточный оборот менее 1,5 млрд. рублей. Определим какие ценные бумаги имеют оборот больше вышеназванной суммы. Для этого немного изменим скрипт:

# -*- coding: utf-8

import quotes.quotes as quotes

folder = 'data/'
qlist = 'quotes/mmvb.txt'
interval = 8

symbols = quotes.get_symbols(qlist)

# проходимся по всем акциям
for symb in symbols:
	# для каждой загружаем ранее сохраненные котировки за прошлый год
	q = quotes.quote(interval, int(symb[0]) )
	q.load( folder + str(symb[0]) + '_' + str(interval) + '.csv'  )
	# пробегаемся по всем дням текущей акции
	s = 0.0
	for i in xrange(len(q.volume)):
		# прибавляем торговый оборот за день
		s += q.volume[i] * (q.high[i] + q.low[i]) / 2.0
	# считаем среднее
	if len(q.volume) == 0:
		continue
	s = s / len(q.volume)
	# учет будем вести в миллионах
	s = s/1000000
	if s > 1500:
		print '\t', symb[0], '\t', symb[1]
		print '\tсреднесуточный оборот:', s, 'млн. рублей\n'

Из результатов работы программы понятно какие акции можно считать «голубыми фишками»:

Так что, если ты начинающий трейдер, запомни: Газпром, Сбербанк и никаких «Телеграфов».

Глоссарий

Спред (читается спрэд, от англ. Spread) — разность между лучшими ценами покупки (бид) и продажи (аск)[1] в один и тот же момент времени на какой-либо актив (акцию, товар, валюту, фьючерс, опцион).

Ликвидность (от лат. liquidus — жидкий, текучий) — экономический термин, обозначающий способность активов быть быстро проданными по цене, близкой к рыночной. Ликвидный — обращаемый в деньги.

Профит (от англ. profit – доход, прибыль) – прибыль.

,



  1. Пока нет комментариев.
(никто не узнает)