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