dimasych
3
All posts from dimasych
  dimasych in dimasych,

Успехи итальянца

Пятничные торги сбера  (ММВБ) показали просто удивительную корреляцию с его сценарием. Трудолюбие и упорство дают результат. Хочется конечно создать что то подобное, но пока только идеи.
1) Набрать базу данных - квик позволяет
      основные данные необходимые: а) дата торгов и время интевал
                                                                       б) цена
                                                                       в) волатильность
                                                                        г) объём
 2) обработать базу данных
                                                                        а) дата и время. Так как часовые пояса у всех свои целесообразно начало отсчёта времени брать от старта торгов тогда будет понятен  момент действа кукла. 
                                                                          б) Цена и её Волатильность : цена это понятно что будет являться  величиной случайной, волатильность дисперсией в исследуемом периоде .   Куда сунуть объём ?
Все эти мысли не новы и есть решения ?                                                    

Добавлено 30 августа 2012, 20:57

Часть 2. Программы
Определяем круг программ которые можно использовать.
Напрягая мозги и порывшись в ин-е мне не удалось найти бесплатного программного обеспечения которое можно приспособить для решения простых стат. задач.
Благо,что ещё со студенчества у меня стоит лицензионный Офис. Открыл EXEL пришлось вспоминать как эти надстройки работаю.
 Идея:  используем VB, макросы, и всему что удалось вспомнить от вуза.
Листы екса будем использовать примерно так :  лист №1 база данных с квика, лист 2 резерв, листы с 3 -го по  12 вывод статических данных  в различных видах (таблиц, диаграмм , графиков)
 И так открываем квик ,график сбер, часовой сохраняем как текст. Дальше по трудней открываем екс у меня ещё 2003 ,извиняюсь если в др. ексах по-другому,

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

 Начнём колдовать и приводить данные в вид удобный для шаманства )

Добавлено 31 августа 2012, 09:38

Част 3 Макросы.
Макрос - штука полезная.
Идея: используя макросы вытащить из данных , день недели, неделя номер, месяц номер, номер дня месяца, выразить рост или падение цены открытие- закрытие, ну и то что можно взять у Вильямса.
Вот что получилось 

Добавлено 31 августа 2012, 09:51

Вообще-то пока использованы только формулы, о чём я забыл указать. Да не будет суров ко мне уважаемый читатель.
И так ,я отвлёкся , продолжим используя навароты  екса . Делаем рост и падение т.е. динамику дня.

Добавлено 31 августа 2012, 10:41

Вопрос : "что за навороченная формула?" .Очень уместен, я попытался осмыслить движение в безразмерных величинах т.е. в %, , если коллега читающий мой скромный труд выскажет свои замечания и идеи мне будет любопытно ознакомиться. 
 И вот наш статистический лист. Сразу скажу что для преобразования даты в вид екса использовал следующий макрос 

Как бы всё ясно и на уровне школьника.
После прогона получилась таблица готовая к статистическим исследованиям



в ней около 3000 строк. Без VB не обойтись он будет нашим бубном.
И так программируем в VBA - бъём в бубен))).
Для начала кнопки 

Дорогой коллега описания VBA есть везде я использую самый начальный уровень, по- сему не сочти за труд разобраться сам как всё сделано.
Есть набитый код ( привожу его часть )

'Вывод описательной статистики по пнд-птн
Dim STR, STB, N, M, RTS As Integer
Dim S As String 'ОПРЕДЕЛЯЕМ ДЛЯ СТРОКИ И СТОЛБЦА ПЕРЕМЕННЫЕ S И K СООТВЕТСВЕННО
Dim D As String 'ОПРЕДЕЛЯЕМ ДЛЯ СТРОКИ И СТОЛБЦА ПЕРЕМЕННЫЕ S И K СООТВЕТСВЕННО
STR = 0
STB = 0
N = 0
M = 0
RTS = 0
OS = 0
OC = 0
'очистка колонок листа8
For OC = 1 To 12 'ОЧИСТКА КОЛОНОК 1 И 12
     For OS = 1 To 19
     Worksheets(8).Cells(OS, OC).Value = ""
     Next
     If OC = 2 Then Worksheets(8).Cells(1, OC).Value = "ПОНЕДЕЛЬНИК"
     If OC = 4 Then Worksheets(8).Cells(1, OC).Value = "ВТОРНИК"
     If OC = 6 Then Worksheets(8).Cells(1, OC).Value = "СРЕДА"
     If OC = 8 Then Worksheets(8).Cells(1, OC).Value = "ЧЕТВЕРГ"
     If OC = 10 Then Worksheets(8).Cells(1, OC).Value = "ПЯТНИЦА"
     If OC = 12 Then Worksheets(8).Cells(1, OC).Value = "СУББОТА"
      Next
 
While Worksheets(3).Cells(STR + 2, STB + 2).Value <> "" ' проверяем столбец ДНЕЙ НЕДЕЛИ  на пустотй
     While Worksheets(3).Cells(STR + 2, STB + 2).Value <> "" ' ЕСЛИ столбец месяцев НЕ пустотй ПРОВЕРЯЕМ СТРОКИ
     N = N + 1
     STR = STR + 1
    Wend
     For OC = 19 To 20 'ОЧИСТКА КОЛОНОК 19 И 20
     For OS = 1 To 19
     Worksheets(3).Cells(OS, OC).Value = ""
     Next
     Next
     'КОПИРУЕМ В СТОЛБЕЦ А
     For M = 0 To N
     Worksheets(3).Cells(M + 2, 1).Value = Worksheets(3).Cells(M + 2, STB + 2).Value
     Next
     M = 0
     S = Val(N + 1) 'ОКОНЧИЛИ СЧЁТ СТРОК
     S = "$A$2:$A$" + S 'ПРОБЛЕМА СО СТОЛБЦАМИ КАК ПЕРЕНОСИТЬ СТОБЦЫ
     Worksheets(3).Activate
Application.Run "ATPVBAEN.XLA!Descr", ActiveSheet.Range(S), _
ActiveSheet.Range("$S$1"), "К", False, True, 1, 1, 95
     M = 0
     N = 0
            While Worksheets(8).Cells(3, 1 + M).Value <> "" 'ИЩЕМ ПУСТОЙ СТОЛБЕЦ В ЛИСТЕ 8
          M = M + 1
        Wend
        For OC = 19 To 20 'ПЕРЕНОС СТРОК
        For OS = 3 To 19
        Worksheets(8).Cells(OS, OC - 18 + M).Value = Worksheets(3).Cells(OS, OC).Value
        Next
        Next
        M = 0
STR = 0
STB = STB + 2
Wend
'------------------------------------------------
'______ОПИСАТЕЛЬНАЯ СТАТИСТИКА ДЕНЬ МЕСЯЦА__
'------------------------------------------------
 
STB = 0
N = 0
M = 0
RTS = 0
OS = 0
OC = 0
'очистка колонок листа8
For OC = 1 To 64 'ОЧИСТКА КОЛОНОК 1 И 31
     For OS = 22 To 41
     Worksheets(8).Cells(OS, OC).Value = ""
     Next
     Next
OS = 0
OC = 0
 
While Worksheets(6).Cells(STR + 2, STB + 3).Value <> "" ' проверяем столбец ДНЕЙ МЕСЯЦА  на пустотй
     While Worksheets(6).Cells(STR + 2, STB + 3).Value <> "" ' ЕСЛИ столбец месяцев НЕ пустотй ПРОВЕРЯЕМ СТРОКИ
     N = N + 1
     STR = STR + 1
     Wend
     For OC = 35 To 36 'ОЧИСТКА КОЛОНОК 19 И 20
     For OS = 1 To 19
     Worksheets(6).Cells(OS, OC).Value = ""
     Next
     Next
     'КОПИРУЕМ В СТОЛБЕЦ А
     For M = 0 To N
     Worksheets(6).Cells(M + 2, 1).Value = Worksheets(6).Cells(M + 2, STB + 3).Value
     Next
     M = 0
     S = Val(N + 1) 'ОКОНЧИЛИ СЧЁТ СТРОК
     S = "$A$2:$A$" + S 'ПРОБЛЕМА СО СТОЛБЦАМИ КАК ПЕРЕНОСИТЬ СТОБЦЫ
     Worksheets(6).Activate
Application.Run "ATPVBAEN.XLA!Descr", ActiveSheet.Range(S), _
ActiveSheet.Range("$AI$1"), "К", False, True, 1, 1, 95
     M = 0
     N = 0
            While Worksheets(8).Cells(24, 1 + M).Value <> "" 'ИЩЕМ ПУСТОЙ СТОЛБЕЦ В ЛИСТЕ 8
             M = M + 1
             Wend
        For OC = 35 To 36 'ПЕРЕНОС СТРОК
        For OS = 22 To 41
        Worksheets(8).Cells(OS, OC - 34 + M).Value = Worksheets(6).Cells(OS - 21, OC).Value
        Next
        Next
        N = 1
        For M = 1 To 62 Step 2
        
        Worksheets(8).Cells(22, M + 1).Value = N
        Worksheets(8).Cells(22, M).Value = " ДЕНЬ"
        N = N + 1
        Next
N = 0
        M = 0
       STR = 0
       STB = STB + 1
Wend
'_____________________________________________________
'----- ПО НОМЕРАМ НЕДЕЛЬ------------------------------
'_____________________________________________________
 
STB = 0
N = 0
M = 0
RTS = 0
OS = 0
OC = 0
'очистка колонок листа8
For OC = 1 To 108 'ОЧИСТКА КОЛОНОК 1 И 31
     For OS = 44 To 59
     Worksheets(8).Cells(OS, OC).Value = ""
Next
     Next
OS = 0
OC = 0
 
While Worksheets(7).Cells(STR + 2, STB + 3).Value <> "" ' проверяем столбец НЕДЕЛЬ  на пустотй
     While Worksheets(7).Cells(STR + 2, STB + 3).Value <> "" ' ЕСЛИ столбец  НЕ пустотй ПРОВЕРЯЕМ СТРОКИ
     N = N + 1 'КОЛИЧЕСТВО СТРОК В СТОЛБЦЕ
     STR = STR + 1
     Wend
     For OC = 1 To 2 'ОЧИСТКА КОЛОНОК 1 И 2
     For OS = 1 To 19
     Worksheets(7).Cells(OS, OC).Value = ""
     Next
     Next
     'КОПИРУЕМ В СТОЛБЕЦ А
     For M = 0 To N
     Worksheets(7).Cells(M + 22, 1).Value = Worksheets(7).Cells(M + 2, STB + 3).Value
     Next
     M = 0
     S = Val(N + 22) 'ОКОНЧИЛИ СЧЁТ СТРОК
     S = "$A$22:$A$" + S 'ПРОБЛЕМА СО СТОЛБЦАМИ КАК ПЕРЕНОСИТЬ СТОБЦЫ
     Worksheets(7).Activate
Application.Run "ATPVBAEN.XLA!Descr", ActiveSheet.Range(S), _
ActiveSheet.Range("$A$1"), "К", False, True, 1, 1, 95
     M = 0
     N = 0
            While Worksheets(8).Cells(44, 1 + M).Value <> "" 'ИЩЕМ ПУСТОЙ СТОЛБЕЦ В ЛИСТЕ 8
             M = M + 1
             Wend
        For OC = 1 To 2 'ПЕРЕНОС КОЛОНОК
        For OS = 43 To 62 'ПЕРЕНОС СТРОК
        Worksheets(8).Cells(OS, OC + M).Value = Worksheets(7).Cells(OS - 41, OC).Value
        Next
        Next
        N = 1
        For M = 1 To 108 Step 2
        
        Worksheets(8).Cells(42, M + 1).Value = N
        Worksheets(8).Cells(42, M).Value = " НЕДЕЛЯ №"
        N = N + 1
        Next
 
        N = 0
        STR = 0
       STB = STB + 1
Wend
'-----------------------------
'__________- ПО МЕСЯЦАМ-____________
'_____________________________
STR = 0
STB = 0
N = 0
M = 0
RTS = 0
OS = 0
OC = 0
'очистка колонок листа8
For OC = 1 To 24 'ОЧИСТКА КОЛОНОК 1 И 24
     For OS = 62 To 80
     Worksheets(8).Cells(OS, OC).Value = ""
Next
     Next
OS = 0
OC = 0
 
While Worksheets(2).Cells(STR + 4, STB + 4).Value <> "" ' проверяем столбец НЕДЕЛЬ  на пустотй
     While Worksheets(2).Cells(STR + 4, STB + 4).Value <> ""  ' ЕСЛИ столбец  НЕ пустотй ПРОВЕРЯЕМ СТРОКИ
     If (Worksheets(2).Cells(STR + 4, STB + 4).Value <> "") Or (Worksheets(2).Cells(STR + 4, STB + 4).Value <> "  ") = True Then N = N + 1
     If (Worksheets(2).Cells(STR + 4, STB + 4).Value <> "") Or (Worksheets(2).Cells(STR + 4, STB + 4).Value <> "  ") = True Then STR = STR + 1 '
 КАК нетрудно понять код простецкий и в основном повторяющийся.
Запускаем прогу  и вот наш результат статистик
1) По дням недели


2)По числам МЕСЯЦА



3) ПО месяцам


Теперь попробую это интерпретировать. А пока пойду в бубен постучу есть идея разделить данные на падающую, флэтовую и 
растущую, часть рынка
 

Добавлено 31 августа 2012, 21:03

Медиа́на — возможное значение признака, которое делит ранжированную совокупность на две равные части: 50 % «нижних» единиц ряда данных будут иметь значение признака не больше, чем медиана, а «верхние» 50 % — значения признака не меньше, чем медиана.
СТАНДАРТНАЯ ОШИБКА - величина, характеризующая случайную ошибку выборки  . Может вычисляться для любых выборочных статистик; используется при построении соответствующих доверительных интервалов и статистической проверке гипотез .
СТАНДАРТНОЕ ОТКЛОНЕНИЕ, в СТАТИСТИКЕ степень отклонения данных наблюдений или множеств от СРЕДНЕГО значения.  Небольшое стандартное отклонение указывает на то, что данные группируются вокруг среднего значения, а значительное - что начальные данные располагаются далеко от него. 
эксцесс,- скалярная характеристика островершинности графика плотности вероятности унимодального распределения, к-рую используют в качестве нек-рой меры отклонения рассматриваемого распределения от нормального
ассиметричностьв случае правосторонней ассиметрии положительна, а при левосторонней — отрицательна.
Дисперсия - представляет собой средний квадрат отклонений индивидуальных значений признака от их средней величины.
"Уровень надежности" показывает величину доверительного интервала для математического ожидания согласно заданному уровню надежности или доверия. По умолчанию уровень надежности принят равным 95%.

Добавлено 31 августа 2012, 21:29

Медиана – это значение случайной величины, которое делит площадь, ограниченную кривой распределения, пополам (т.е. середина численного ряда или интервала). Как и математическое ожидание, медиана является одной из характеристик центра распределения случайной величины. В симметричных распределениях значение медианы должно быть равным или достаточно близким к математическому ожиданию.

Добавлено 31 августа 2012, 21:34

Для нашего случая вычисляем
Сбер средняя к концу августа 89.3+89,3*0,044/100=89.33
Стандартное отклонение от величины  89,33*2,45/100= 2,2
Для самых рисковых дисперсия  5,53 рубля ( есть в теории вероятности правило говорящее о том , что значения выборки не превысят 3х дисперсий)
то есть сбер не вырастет более105,92 рублей и не упадёт  ниже72,74 рубля
С вероятностью в 95 % цен достигнет  89,33+89,33*(0,316+0,044)/100=89,66 рубл.
Как правило дисперсия охватывает 60% данных поэтому рискнув предположить что рост будет до 89,33+5,53=94,87, руб
а падение до величины 89,33-5,53=83,81

Добавлено 31 августа 2012, 21:38

Если я не утомил Вас дорогой коллега прошу оставит замечания .
С уважением .
  Дмитрий С.

Добавлено 1 сентября 2012, 14:14

Часть 5 или последняя прогноз
На понедельник сентября



 
От начала месяца и до конца

  
Возможно что в сентябре мы увидим СБЕР по 102,84 с вероятностью 60 %