Технический анализ рынка ценных бумаг на примере акций РАО ЕЭС Россия 2001-2002 гг.
Казанский Государственный Университет
Курсовой проект
Технический анализ рынка ценных
бумаг на примере акций РАО "ЕЭС Россия"
2001-2002 г
Выполнил :
Студент группы 981
Фисейский С.В.
Принял :
Преподаватель
Лазарев А.А.
Казань 2002
Содержание :
Вступление
Постановка задачи
Методы решения
А) Простые скользящие средние
Б) Экспоненциальные скользящие средние
Описание программы
Листинг
Результаты
Приложение (Ставка рефинансирования)
Вступление
Некоторая произвольность трактовки паттернов и сложность обмена идеями и мнениями в терминах графических образов подвигла аналитиков к разработке "независимого от наблюдателя" инструментария. Так появились различные индикаторы, т.е. вычисляемые по определенным формулам величины, позволяющие тем или иным образом характеризовать текущее состояние рынка. Поначалу использование индикаторов в техническом анализе было прерогативой крупных финансовых институтов, но с появлением недорогих персональных компьютеров и прикладного ПО доступ к компьютерному анализу получила широкая публика. Современные средства позволяют терйдерам конструировать свои собственные индикаторы и автоматизированные системы анализа, но несмотря на бесчисленное количество, их можно разбить на два крупных класса: индикаторы тренда (trend-following) и осцилляторы (oscillators). Некоторые, правда, занимают промежуточное положение, комбинируя в себе свойства обоих классов. Многие технические аналитики придерживаются мнения, что методы управления капиталом должны являться неотъемлемой частью любой торговой методики технического анализа, в особенности, направленной на минимизацию риска инвестиций. Действительно, при оптимизации торговых методик с использованием методов управления капиталом часто можно добиться значительного увеличения их эффективности. Однако, столь же часто бывает, что из-за недостатков, присущих методам управления капиталом, инвестор не получает ожидаемого увеличения эффективности торговых систем.
При минимизации риска инвестиций в большинстве случаев инвесторы обращают свое внимание на методы управления капиталом. Практически любая книга или статья по методам управления капиталом начинается со слов, что успех сделки зависит не только от того, насколько удачно инвестор выбрал момент для покупки и продажи, но и от того насколько правильно он оценил объем средств, которыми можно рисковать. Первая составляющая успеха сделки будет зависеть от эффективности используемой методики анализа, а вторая – от выбранного подхода к управлению капиталом.
Существует несколько методов (форм) управления капиталом. Один из таких методов имеет название метода построения пирамиды или метода Мартингейла и основан на использовании некоторых характерных закономерностей, наблюдаемых в результатах торговой системы: чередование одиночных прибыльных и убыточных сделок или наличие серий убыточных и прибыльных сделок. Второй метод, имеющий название метода анализа кривых доходностей, предусматривает построение двух скользящих средних по данным результатов сделок и на основе классического метода анализа двух скользящих средних (анализ ситуаций их взаимного пересечения) определяет фазы низкой эффективности торговых сигналов, рекомендуя при этом уменьшение размера открываемой позиции в такие периоды. Наиболее популярной из всех форм управления капиталом является использование в торговле автоматических приказов стоп-лосс, основной целью которых является ограничение потерь при движении цены в направлении, противоположном открытой позиции.
Постановка задачи
Очень часто аналитики придерживаются мнения, что методы управления капиталом должны являться неотъемлемой частью любой торговой методики технического анализа, в особенности, направленной на минимизацию риска инвестиций. Действительно, при оптимизации торговых методик с использованием методов управления капиталом часто можно добиться значительного увеличения их эффективности. Однако, столь же часто бывает, что из-за недостатков, присущих методам управления капиталом, инвестор не получает ожидаемого увеличения эффективности торговых систем.
Вследствие этого задачей данного курсового проекта является анализ эффективности применения методов среднего скользящего и экспоненциального скользящего на российском рынке ценных бумаг в 2001-2002 г. В качестве объекта исследования берутся котировки акций РАО "ЕЭС Россия". Вычисления проводятся по средневзвешенным ценам.
Полученные результаты сравнить с эффективностью вложения средств в Банк России на соответствующий период
3. Методы решения
а) Простые скользящие средние
По словам биржевых ветеранов, скользящие средние (СС) появились на американских биржах с легкой руки зенитчиков. Во время второй мировой войны они использовали СС для наводки на самолеты, а впоследствии применили этот метод к ценам. Основоположниками биржевого метода СС были Ричард Дончиан (Richard Donchian) и Дж.М.Херст (J.M.Hurst) - оба отнюдь не зенитчики
Дончиан был служащим фирмы «Меррилл Линч»; он разработал методику биржевой игры, основанную на нескольких СС. Херст был инженером; в книге «Чудо-прибыльность своевременных сделок с акциями» (The Profit Magic of Stock Transaction Timing), ставшей биржевой классикой, он описал принцип использования СС применительно к сделкам с акциями.
СС показывает среднее значение данных в ее окне (window) – периоде, который она охватывает. Так, 5-дневная СС показывает среднюю цену за последние 5 дней, 20-дневная – за последние 20 дней, и т.д. Соединив точки СС каждого из дней, получаем линию СС.
Простая СС = (c1+c2+ …+cN)/n
Где cI конечная цена на соответствующий (1-й, 2-й и т.д. по счету) день окна.
Уровень СС зависит от двух факторов: от конечных цен и окна СС. Допустим, требуется вычислить трехдневную простую СС акции. Если ее конечная цена в первый, второй и третий по счету дни составила 19, 21 и 20 пунктов, то простая трехдневная СС равна 20 пунктам (сумма 19+21+20, деленная на 3). Предположим, что на четвертый день конечная цена составила 22. Тогда трехдневная СС возрастет до 21, т.е. на 3 делим уже сумму 21+20+22.
Есть три основных типа СС: простые (simple), экспоненциальные (exponential) и взвешенные (weighted). Большинство биржевиков используют простые СС, т.к. их нетрудно вычислить; к тому же в докомпьютерные времена ими пользовались Дончиан и Херст. Однако у простых СС есть фатальный изъян: на каждую перемену цен они реагируют дважды.
а) Экспоненциальные скользящие средние
Экспоненциальная скользящая средняя (ЭСС) лучше опознает тенденции, чем простая СС. Она обращает больше внимания на последние по времени данные и быстрее реагирует на изменения. Но при этом ЭСС не скачет из-за сбрасывания старых данных. У этой сторожевой собаки слух острее, а лает она только при приближении чужака.
ЭСС=P_сег*K+ ЭСС_вч*(1-K)
K=2/(окно+1)
У ЭСС два крупных преимущества перед простой СС. Во-первых, она представляет более весомым последний игровой день. Сегодняшний настрой биржевой толпы важнее, чем давнишний. У 10-дневной ЭСС конечная цена последнего дня определяет 18% величины ЭСС; у простой же СС – только 10%, потому что у нее все дни равноценны. Во-вторых, ЭСС – в отличие от СС – не сбрасывает данные за предыдущие дни: они исчезают постепенно, как дух прошлого, который еще пронизывает фотокомпозицию
Рекомендациями к операциям над ценными бумагами являются следующие:
1) При восходящей ЭСС играйте на повышение. Покупайте, когда цены упадут до СС или чуть ниже. Открыв позицию на повышение, размещайте защитную приостановку ниже недавнего донышка; как только цены закроются выше ЭСС, переместите приостановку к точке, где вы можете закрыть позицию безубыточно в случае разворота цен.
2) При нисходящей ЭСС играйте на понижение. Открывайте короткие позиции, когда цены подскочат до ЭСС или чуть выше. Размещайте защитную приостановку чуть выше недавнего гребня, понизив ее до точки безубыточного закрытия, как только конечная цена опустится ниже ЭСС.
3) Почти горизонтальная ЭСС с мелкими зигзагами указывает на вялый рынок без цели и ориентиров, где ловить тенденции не стоит.
Таким образом, сигналом к продаже является пересечение СС или ЭСС с меньшим окном сверху вниз СС или ЭСС с большим окном. Покупка осуществляется в противном случае
В качестве эксперимента, рассмотрены случаи продаж при последовательном пересечении двух скользящих графиком средневзвешенных реальных цен.сверху вниз. В случае пересечения снизу вверх осуществляется покупка
Формула для вычисления эффективности метода
E=(Sn-S)*365*100%/(K*S)
Где Sn - сумма денег после торговой сессии n
S - первоначальный капитал
K - количество торговых сессий
Описание программы
Программа написана на языке программирования Delphi.Версия 5.0. Имеет дружественный интерфейс, который очень прост в управлении. Для построения графика выберите вкладку с названием соответствующего метода и нажмите кнопку с названием "Построить график". После чего для анализа перейдите на вкладку "Анализ методов". И нажмите на кнопку "Результат".Все выходные данные находятся в окошечке справа. На вкладке "Дополнительно" осуществляется выбор (длина) окна, также приведены гиперссылки на сайты с котировками акций (http://www.rts.ru) и Банка России (http://www.cbr.ru) и график ставки рефинансирования.
.
5. Листинг
Процедура вывода результатов
procedure TForm1.Button11Click(Sender: TObject);
var i,chislo,pr,po,x : integer;
ak : integer; // число акций на руках
mon : integer; // деньги в наших руках
nac,n1,n2,n3,ref : double;
begin
try
mon:=1000*strtoint(edit10.text);
ak:=1000*strtoint(edit11.text);
except
showmessage('При вводе была допущена ошибка');
edit10.text:='100';
edit11.text:='10';
exit;
end;
if (mon=0) and (ak=0) then
begin
showmessage('Так не интересно');
exit;
end;
nac:=round(ak*strtofloat(izm(realn[0])))+mon;
n1:=nac*28.2*0.25*463/365;
n2:=nac*0.23*28.2*120/365;
n3:=nac*28.2*0.21*75/365;
ref:=nac+(n1+n2+n3)/31.6;
chislo:=length(a3);
pr:=0; po:=0;
if length(a3)>0 then begin
for i:=low(a3) to high(a3) do
if a3[i]=1 then inc(po)
else inc(pr);
if a3[0]=1 then begin
ak:=ak+round(mon/strtofloat(izm(realn[b3[0]])));
mon:=0;
end
else begin
mon:=round(ak*strtofloat(izm(realn[b3[0]])))+mon;
ak:=0;
end;
for i:=low(a3)+1 to high(a3) do
begin
if (a3[i]=1) and (b3[i]<d) then begin
ak:=round(mon/strtofloat(izm(realn[b3[i]])));
mon:=0;
end;
if (a3[i]=2) and (b3[i]<d) then
begin
mon:=round(ak*strtofloat(izm(realn[b3[i]])));
ak:=0;
end;
end;
if a3[length(a3)-1]=1 then x:=1
else x:=0;
if mon=0 then mon:=round(ak*strtofloat(izm(realn[d-1])));
memo4.Clear;
memo4.Lines.Add('Статистика за период:');
memo4.Lines.Add('1 января 2001 года - 20 октября 2002 года');
memo4.Lines.Add('Анализ проведен для плеч с длинами '+inttostr(plecho1)+' и '+inttostr(plecho2));
memo4.Lines.Add('Начальный капитал (в тысячах USD) : '+edit10.text);
memo4.Lines.Add('Начальное число акций (в тысячах штук) : '+edit11.text);
memo4.Lines.Add('Общая сумма (в тысячах USD) : '+floattostr(nac));
memo4.Lines.Add('Число операций с акциями РАО ЕЭС Россия : '+inttostr(chislo+x));
memo4.Lines.Add('В том числе покупок акций : '+inttostr(po));
memo4.Lines.Add('В том числе продаж акций : '+inttostr(pr+x));
memo4.Lines.Add('Сумма капитала в USD на 21 октября 2002 года : '+inttostr(mon));
memo4.Lines.Add('Эффективность метода : '+floattostr(round((mon-nac)*365*100/(nac*658)))+' %');
memo4.Lines.Add('Сумма капитала при рефинансировании в USD на 21 октября 2002 года: '+floattostr(round(ref)) +'');
memo4.Lines.Add('Эффективность рефинансирования '+floattostr(round((ref-nac)*365*100/(nac*658))) +' %');
end
else
begin
memo4.Clear;
memo4.Lines.Add('Статистика за период:');
memo4.Lines.Add('1 января 2001 года - 20 октября 2002 года');
memo4.Lines.Add('Анализ проведен для плеч с длинами '+inttostr(plecho1)+' и '+inttostr(plecho2));
memo4.Lines.Add('Начальный капитал (в тысячах USD) : '+edit10.text);
memo4.Lines.Add('Начальное число акций (в тысячах штук) : '+edit11.text);
memo4.Lines.Add('Общая сумма (в тысячах USD) : '+floattostr(nac));
memo4.Lines.Add('Число операций с акциями РАО ЕЭС Россия : '+inttostr(chislo));
memo4.Lines.Add('В том числе покупок акций : '+inttostr(po));
memo4.Lines.Add('В том числе продаж акций : '+inttostr(pr));
memo4.Lines.Add('Сумма капитала в USD на 21 октября 2002 года : '+floattostr(nac));
memo4.Lines.Add('Эффективность метода : 0%');
memo4.Lines.Add('Сумма капитала при рефинансировании в USD на 21 октября 2002 года: '+floattostr(round(ref)) +'');
memo4.Lines.Add('Эффективность рефинансирования '+floattostr(round((ref-nac)*365*100/(nac*658))) +' %');
end;
end;
процедура вывода графика, построенного методом экспоненциальных скользящих
procedure TForm1.Button8Click(Sender: TObject);
var i,k,sc,sc1,tec,i1 : integer;
pologen5 : string;
predpologen5 : string;
izm1,izm2 : boolean;
begin
// переменные per5, per13 нужны для фиксации последнего перехода через реальные цены
// если значение 0 - перехода не было
// если значение 1 - переход снизу вверх {продажа}
// если значение 2 - переход сверху вниз (покупка)
tec:=0;
// setlength(vfive,plecho1);
// setlength(vthirt,plecho2);
sc1:=1; i:=0;
graffive[0]:=realn[0];
grafthirt[0]:=realn[0];
//izm1:=false;
While i<d-1 do
begin
five[i]:=realn[i];
thirt[i]:=realn[i];
izm2:=false ;i:=tec;
predpologen5:='pusto';
while (izm2=false) and (i<d-1) do
begin
five[i+1]:=floattostr(strtofloat(izm(five[i]))+(2/(plecho1+1))*(strtofloat(izm(realn[i+1]))-strtofloat(izm(five[i]))));
graffive[i+1]:=five[i+1];
//закончили формирование плеча длиной 5
// начинаем формирование плеча длиной 13
thirt[i+1]:=floattostr(strtofloat(izm(thirt[i]))+(2/(plecho2+1))*(strtofloat(izm(realn[i+1]))-strtofloat(izm(thirt[i]))));
grafthirt[i]:=thirt[i];
if strtofloat(izm(five[i+1]))>strtofloat(izm(thirt[i+1])) then pologen5:='v'
else pologen5:='n';
if (pologen5='v') and (predpologen5='n') then
// покупка
if sc1=1 then begin
setlength(a3,sc1);
a3[sc1-1]:=1;
setlength(b3,sc1);
b3[sc1-1]:=i+2;
inc(sc1);
tec:=i+1;
izm2:=true;
// izm1:=true;
end
else if a3[sc1-2]=2 then
begin
// покупка
setlength(a3,sc1);
a3[sc1-1]:=1;
setlength(b3,sc1);
b3[sc1-1]:=i+2;
inc(sc1);
tec:=i+1;
izm2:=true;
// izm1:=true;
end;
if (pologen5='n') and (predpologen5='v') then
if sc1=1 then
begin
// продажа
setlength(a3,sc1);
a3[sc1-1]:=2;
setlength(b3,sc1);
b3[sc1-1]:=i+2;
inc(sc1);
tec:=i+1;
izm2:=true;
//izm1:=true;
end else if a3[sc1-2]=1 then
begin
// продажа
setlength(a3,sc1);
a3[sc1-1]:=2;
setlength(b3,sc1);
b3[sc1-1]:=i+2;
inc(sc1);
tec:=i+1;
izm2:=true;
//izm1:=true;
end;
predpologen5:=pologen5;
inc(i);
// if then goto Start;
end;
end;
chart4.AxisVisible:=true;
for i:=0 to d-2 do
begin
chart4.Series[1].addXY(i,strtofloat(izm(grafthirt[i])),inttostr(i),clBlue);
end;
for i:=0 to d-2 do
begin
chart4.Series[2].addXY(i,strtofloat(izm(realn[i])),inttostr(i),clRed);
end;
for i:=0 to d-2 do
begin
chart4.Series[0].addXY(i,strtofloat(izm(graffive[i])),inttostr(i),clGreen);
end;
for sc:=0 to length(a3)-1 do
if a3[sc]=1 then
chart4.Series[3].AddXY(b3[sc]-1,strtofloat(izm(realn[b3[sc]-1])),inttostr(i),clBlack)
else
chart4.Series[3].AddXY(b3[sc]-1,strtofloat(izm(realn[b3[sc]-1])),inttostr(i),clYellow);
{ if a[length(a)-1]=2 then
chart1.Series[3].AddXY(d-3,strtofloat(izm(realn[d-3])),'00',clYellow);}
button8.Enabled:=false;
button11.Enabled:=true;
end;
6. Результаты
При первоначальном капитале 100 тысяч USD и наличии 10 тысяч акций
Получены следующие эффективности методов :
Экспериментальный 1
Длина окон |
Эффективность (%) |
5,13 |
23 |
5,8 |
5 |
8,13 |
22 |
Экспериментальный 2
Длина окон |
Эффективность (%) |
5,13 |
1 |
5,8 |
-4 |
8,13 |
5 |
СС
Длина окон |
Эффективность (%) |
5,13 |
0 |
5,8 |
0 |
8,13 |
0 |
ЭСС
Длина окон |
Эффективность (%) |
5,13 |
17 |
5,8 |
18 |
8,13 |
5 |
При вложении средств в банк получена эффективность 22%.
Ставка рефинансирования
Период |
Ставка |
01/01/2001-04/08/2002 |
25% |
04/09/2002-08/06/2002 |
23% |
08/07/2002-10/20/2002 |
21% |
Курс USD
1 ЯНВАРЯ 2001 Г. -28.2 РУБ
20 ОКТЯБРЯ 2002 Г- 31.6 РУБ