• 3.2 Результати аналізу ринкового графа з використанням кореляцій Пірсона
  • 3.3 Порівняння результатів
  • Таблиця 23. Зведена таблиця за результатами для ринку Бразилії
  • Таблиця 24. Зведена таблиця за результатами для ринку Росії
  • Таблиця 25.Зведена таблиця за результатами для ринку Індії
  • Таблиця 26. Зведена таблиця за результатами для ринку Китаю
  • Звязки між динамікою індексу і коефіцієнтами кореляції не спостерігається.


  • Дата конвертації11.01.2018
    Розмір158.34 Kb.
    Типдипломна робота

    Скачати 158.34 Kb.

    графи ринків


    Якщо порівнювати числа з таблиць 8-11 зі значеннями реберної щільності (таблиці 4-7), то можна бачити, що вони значно вище.Це справедливо для всіх країн і всіх періодів, отже, акції на фондових ринках мають тенденцію утворювати «кластери», прибутковості яких змінюються узгоджено.Чим вище відношення коефіцієнта до щільності, тим сильніше ця тенденція.

    Розмір максимальної кліки

    Ще одним пов'язаним з щільністю показником є розмір максимальної кліки, що дозволяє судити про зв'язності побудованих графів.Результати розрахунків для вибраних значень порога наведені в таблицях 12-15.

    Як видно з таблиць, динаміка максимальних клік в цілому повторює динаміку всіх попередніх характеристик.Так, в період, пов'язаний з кризою 2008 р відбувається істотне падіння розміру кліки.Це говорить про те, що менше число акцій приносили дохід інвесторам.У період, наступний за кризою, знову спостерігається сильне зростання.

    Порівнювати абсолютні значення розміру максимальної кліки для різних країн видається некоректним, оскільки число акцій, що торгуються на ринках, сильно розрізняється.



    Таблиця 12. Розмір максимальної кліки графа доходностей ринку Бразилії

    0,95

    0,91

    0,87

    0,82

    0,78

    0,74

    0,70

    0,64

    0,53

    6

    1,00

    1,00

    0,99

    0,99

    0,98

    0,96

    0,93

    0,90

    0,87

    0,83

    0,80

    7

    0,98

    0,97

    0,97

    0,96

    0,95

    0,93

    0,92

    0,90

    0,87

    0,85

    0,82

    8

    0,99

    0,98

    0,96

    0,93

    0,90

    0,87

    0,83

    0,79

    0,75

    0,70

    0,62

    9

    1,00

    1,00

    1,00

    1,00

    0,99

    0,99

    0,99

    0,97

    0,96

    0,93

    0,89

    10

    1,00

    0,99

    0,99

    0,98

    0,96

    0,94

    0,91

    0,89

    0,86

    0,83

    0,79

    11

    0,95

    0,92

    0,87

    0,83

    0,79

    0,76

    0,73

    0,68

    0,59

    0,44

    0,29

    #

    поріг

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    1

    79

    66

    56

    47

    41

    32

    26

    22

    18

    12

    6

    2

    72

    66

    58

    51

    43

    35

    27

    25

    19

    18

    13

    3

    110

    100

    90

    84

    74

    67

    52

    43

    40

    30

    26

    4

    127

    115

    100

    87

    73

    62

    52

    46

    35

    27

    23

    5

    121

    108

    93

    86

    79

    66

    59

    46

    38

    30

    26

    6

    182

    155

    133

    118

    103

    86

    74

    62

    47

    42

    29

    7

    228

    201

    180

    150

    136

    118

    105

    86

    74

    61

    44

    8

    139

    106

    80

    56

    41

    29

    20

    16

    10

    10

    10

    9

    355

    335

    312

    288

    269

    245

    218

    199

    173

    142

    114

    10

    338

    284

    243

    205

    165

    130

    106

    82

    68

    50

    38

    11

    228

    186

    155

    123

    95

    74

    61

    43

    37

    31

    24


    Таблиця 13. Розмір максимальної кліки графа доходностей ринку Росії

    #

    поріг

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    1

    23

    22

    21

    21

    18

    17

    17

    15

    14

    12

    10

    2

    21

    20

    19

    17

    15

    12

    11

    7

    7

    5

    4

    3

    17

    16

    15

    13

    13

    11

    8

    7

    6

    5

    3

    4

    42

    39

    36

    33

    29

    27

    24

    20

    16

    12

    9

    5

    55

    52

    48

    44

    42

    40

    37

    30

    27

    23

    19

    6

    65

    62

    54

    48

    44

    36

    30

    23

    19

    17

    11

    7

    64

    50

    41

    32

    26

    23

    18

    16

    12

    10

    8

    8

    17

    15

    12

    9

    7

    5

    3

    2

    2

    2

    1

    9

    131

    125

    113

    110

    105

    92

    82

    71

    65

    57

    44

    10

    134

    123

    108

    94

    79

    68

    55

    45

    35

    29

    21

    11

    55

    43

    33

    26

    21

    15

    12

    10

    8

    6

    4


    Таблиця 14.Розмір максимальної кліки графа доходностей ринку Індії

    #

    поріг

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    1

    16

    15

    13

    13

    13

    12

    12

    12

    12

    8

    8

    2

    159

    126

    101

    79

    58

    43

    29

    22

    15

    10

    8

    3

    728

    647

    563

    485

    408

    343

    284

    227

    180

    137

    111

    4

    790

    673

    542

    433

    331

    254

    191

    138

    102

    68

    53

    5

    1096

    931

    759

    624

    489

    383

    297

    225

    176

    125

    90

    6

    856

    692

    553

    436

    332

    260

    189

    142

    106

    80

    60

    7

    1 271

    1008

    774

    594

    476

    385

    310

    297

    285

    269

    248

    8

    750

    540

    363

    246

    161

    98

    63

    43

    26

    15

    10

    9

    1770

    тисяча шістсот двадцять одна

    1455

    1278

    тисячу вісімдесят-одна

    891

    721

    567

    417

    299

    200

    10

    1 358

    1129

    917

    729

    578

    438

    327

    240

    176

    128

    91

    11

    811

    596

    426

    300

    198

    125

    75

    47

    29

    18

    12


    Таблиця 15. Розмір максимальної кліки графа доходностей ринку Китаю

    #

    поріг

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    1

    824

    709

    599

    498

    381

    273

    190

    140

    104

    97

    91

    2

    878

    725

    563

    404

    270

    170

    101

    63

    37

    23

    14

    3

    974

    877

    759

    630

    499

    382

    268

    172

    120

    87

    61

    4

    1028

    901

    771

    638

    501

    379

    262

    175

    106

    66

    37

    5

    1100

    950

    812

    655

    493

    352

    248

    155

    99

    60

    37

    6

    1327

    одна тисяча двісті вісімдесят-два

    1218

    1137

    тисяча тридцять три

    915

    793

    654

    528

    407

    308

    7

    тисячу триста сорок чотири

    1307

    +1263

    тисячі сто дев'яносто п'ять

    1128

    1038

    930

    814

    710

    595

    485

    8

    одна тисячі триста сімдесят п'ять

    1 271

    1129

    975

    811

    639

    479

    337

    233

    159

    97

    9

    1624

    1614

    1595

    1 565

    1525

    +1453

    1363

    +1233

    тисячу вісімдесят-одна

    908

    734

    10

    1616

    1548

    1467

    одна тисяча триста шістьдесят один

    1251

    1105

    948

    813

    666

    513

    382

    11

    1217

    985

    747

    554

    401

    277

    196

    126

    77

    50

    32

    3.2 Результати аналізу ринкового графа з використанням кореляцій Пірсона

    Цікаво порівняти результати, отримані з використанням нової заходи і стандартних кореляцій Пірсона. Тому на наступному кроці було вироблено побудова моделей ринкових графів для тих же даних і періодів і розрахунок характеристик, аналогічних попереднім.
    Оскільки діапазони значень для коефіцієнтів кореляції і міри близькості графа доходностей різні, при переході до невиважених ринковому графу були взяті свої пороги. Найбільш значущі результати з нашої точки зору виходять для порогів 0.4, 0.5, 0.6 і 0.7.

    Розподіл коефіцієнтів кореляції

    За аналогією з графом доходностей, першої досліджуваної характеристикою був розподіл значень міри близькості.Гістограми кореляцій для ринків Бразилії, Росії, Індії та Китаю представлені на малюнках 17-28. У таблиці 16 наведені відповідні середні значення і стандартні відхилення.

    Малюнок 17. Розподіл кореляцій для ринкового графа Бразилії, періоди 1-4

    Малюнок 18. Розподіл кореляцій для ринкового графа Бразилії, періоди 5-8

    Малюнок 19. Розподіл кореляцій для ринкового графа Бразилії, періоди 9-11

    Гістограма Бразилії протягом більшості періодів по форі нагадує нормальний розподіл. Лише в періоді 8, відповідному кризи, збільшується частка позитивних кореляцій.

    Малюнок 20. Розподіл кореляцій для ринкового графа Росії, періоди 1-4

    Малюнок 21. Розподіл кореляцій для ринкового графа Росії, періоди 5-8

    Малюнок 22. Розподіл кореляцій для ринкового графа Росії, періоди 9-11

    Для ринку Росії гістограма розташована правіше, що говорить про більшу кількість позитивних кореляцій, але трохи скошена вліво. Як і у випадку з Бразилією, в періоді 8 відбувається зміна форми кривої. Нестабільність кривої в перші 4 періоду можна пояснити малим числом акцій, що потрапили в розгляд для ринку Росії.

    Малюнок 23. Розподіл кореляцій для ринкового графа Індії, періоди 1-4

    Малюнок 24. Розподіл кореляцій для ринкового графа Індії, періоди 5-8

    Малюнок 25. Розподіл кореляцій для ринкового графа Індії, періоди 9-11

    Гістограма Індії в більшості періодів скошена вліво. Найбільші зміни її форма зазнає знову в період 8. Це виражається в зсуві центру гістограми в сторону великих кореляцій і більш плескатої формі.

    Малюнок 26. Розподіл кореляцій для ринкового графа Китаю, періоди 1-4

    Малюнок 27. Розподіл кореляцій для ринкового графа Китаю, періоди 5-8

    Малюнок 28. Розподіл кореляцій для ринкового графа Китаю, періоди 9-11

    Розподіл ринку Китаю з плином часу змінюється сильніше, ніж розподілу інших країн. У період номер 1 вона має два піки, в періоди з 4 вона скошена в сторону великих кореляцій. У період, відповідний кризи 2008 р знову спостерігається зрушення в бік більших значень.

    Аналіз таблиці 16 показує, що найбільше середнє значення кореляцій характерно для ринку Китаю (0,38). Значно менше ця величина для ринків Росії (0,21) і Індії (0,13). Найменшою связностью володіє ринок Бразилії (середнє значення - 0,06). Середньоквадратичні відхилення відрізняються не так сильно: найбільше значення у Росії (0,16), потім йдуть Індія і Китай (0,15). Найменша стандартне відхилення має ринок Бразилії (0,12).

    Таблиця 16. Середні значення (м) і стандартні відхилення (у) коефіцієнтів кореляції ринкових графів

    період

    Бразилія

    Росія

    Індія

    Китай

    м

    у

    м

    у

    м

    у

    м

    у

    1

    0,03

    0,12

    0,34

    0,21

    0,21

    0,36

    0,42

    0,18

    2

    0,03

    0,11

    0,28

    0,19

    0,11

    0,15

    0,55

    0,18

    3

    0,02

    0,11

    0,18

    0,14

    0,09

    0,10

    0,32

    0,15

    4

    0,02

    0,10

    0,31

    0,16

    0,10

    0,14

    0,35

    0,14

    5

    0,02

    0,10

    0,17

    0,16

    0,10

    0,12

    0,34

    0,14

    6

    0,04

    0,11

    0,16

    0,15

    0,13

    0,16

    0,22

    0,11

    7

    0,05

    0,12

    0,12

    0,13

    0,08

    0,13

    0,35

    0,16

    8

    0,12

    0,16

    0,25

    0,20

    0,20

    0,14

    0,50

    0,17

    9

    0,07

    0,13

    0,15

    0,13

    0,14

    0,12

    0,40

    0,13

    10

    0,07

    0,12

    0,15

    0,14

    0,09

    0,10

    0,35

    0,12

    11

    0,17

    0,14

    0,19

    0,15

    0,13

    0,11

    0,33

    0,13

    Ср.знач.

    0,06

    0,12

    0,21

    0,16

    0,13

    0,15

    0,38

    0,15


    Наведені в таблиці 16 характеристики мають схожу динаміку для всіх країн. Найбільше зростання кореляцій спостерігається в період кризи 2008 р, що підтверджує гіпотезу про те, що негативні прибутковості корелюють сильніше, ніж позитивні. Для Бразилії, Росії та Індії зростання кореляцій характерний і для періоду 11. Стандартне відхилення зростає і зменшується узгоджено із середнім значенням. Таким чином, в роки кризи зв'язність ринку зростає: збільшується як частка позитивних кореляцій, так і ступінь зв'язків.

    щільність ребер

    Результати обчислення реберної щільності в ринкових графах для обраних значень порога наведені в таблицях 17-18.



    Таблиця 17. Щільність ребер для графів ринку Бразилії і Росії

    #

    Бразилія

    Росія

    0,4

    0,5

    0,6

    0,7

    0,4

    0,5

    0,6

    0,7

    1

    0,017

    0,008

    0,005

    0,004

    0,393

    0,27

    0,117

    0,05

    2

    0,013

    0,006

    0,004

    0,004

    0,259

    0,166

    0,064

    0,018

    3

    0,014

    0,007

    0,006

    0,005

    0,056

    0,022

    0,013

    0,009

    4

    0,01

    0,006

    0,004

    0,003

    0,264

    0,139

    0,044

    0,016

    5

    0,008

    0,004

    0,004

    0,004

    0,09

    0,041

    0,02

    0,008

    6

    0,011

    0,006

    0,004

    0,003

    0,08

    0,032

    0,017

    0,008

    7

    0,016

    0,007

    0,004

    0,003

    0,032

    0,015

    0,005

    0,001

    8

    0,067

    0,022

    0,006

    0,003

    0,241

    0,141

    0,060

    0,017

    9

    0,021

    0,01

    0,005

    0,003

    0,047

    0,02

    0,008

    0,002

    10

    0,01

    0,005

    0,003

    0,002

    0,055

    0,017

    0,003

    0,001

    11

    0,064

    0,022

    0,007

    0,004

    0,102

    0,039

    0,009

    0,001


    Таблиця 18.Щільність ребер для графів ринку Індії і Китаю

    #

    Індія

    Китай

    0,4

    0,5

    0,6

    0,7

    0,4

    0,5

    0,6

    0,7

    1

    0,162

    0,162

    0,162

    0,162

    0,545

    0,384

    0,188

    0,034

    2

    0,033

    0,012

    0,007

    0,005

    0,792

    0,668

    0,469

    0,187

    3

    0,005

    0,002

    0,002

    0,001

    0,331

    0,129

    0,025

    0,002

    4

    0,041

    0,010

    0,003

    0,002

    0,388

    0,139

    0,017

    0,001

    5

    0,009

    0,006

    0,005

    0,005

    0,344

    0,125

    0,019

    0,001

    6

    0,045

    0,018

    0,012

    0,011

    0,055

    0,008

    0,001

    0,000

    7

    0,015

    0,013

    0,012

    0,012

    0,406

    0,175

    0,041

    0,003

    8

    0,090

    0,021

    0,003

    0,000

    0,769

    0,571

    0,308

    0,08

    9

    0,027

    0,005

    0,001

    0,000

    0,562

    0,234

    0,037

    0,002

    10

    0,005

    0,001

    0,000

    0,000

    0,349

    0,094

    0,011

    0,001

    11

    0,017

    0,003

    0,001

    0,000

    0,302

    0,084

    0,011

    0,001


    Аналіз таблиць 17-18 підтверджує висновки, зроблені під час аналізу середніх значень. При однакових значеннях порога значно вище щільність на ринку Китаю, у Бразилії, Росії та Індії графи виходять порівняно ються. Для всіх країн спостерігається зростання реберної щільності в період економічного кризи 2008 р і подальше її зниження. У 2011 р для всіх країн, окрім Китаю, ця характеристика знову збільшується.

    коефіцієнт кластеризації

    Динаміку щільності повторює і пов'язана з нею характеристика - коефіцієнт кластеризації (див. Табл. 19-20).



    Таблиця 19. Коефіцієнт кластеризації для графів ринку Бразилії і Росії

    #

    Бразилія

    Росія

    0,4

    0,5

    0,6

    0,7

    0,4

    0,5

    0,6

    0,7

    1

    0,29

    0,26

    0,21

    0,15

    0,66

    0,55

    0,42

    0,14

    2

    0,3

    0,24

    0,19

    0,18

    0,52

    0,42

    0,22

    0,06

    3

    0,33

    0,28

    0,24

    0,21

    0,24

    0

    0

    0

    4

    0,26

    0,23

    0,2

    0,16

    0,61

    0,47

    0,2

    0,08

    5

    0,27

    0,24

    0,21

    0,21

    0,38

    0,23

    0,13

    0,05

    6

    0,35

    0,28

    0,23

    0,19

    0,33

    0,2

    0,17

    0,09

    7

    0,43

    0,33

    0,27

    0,24

    0,22

    0,15

    0,1

    0,02

    8

    0,5

    0,38

    0,28

    0,21

    0,57

    0,44

    0,3

    0,18

    9

    0,38

    0,26

    0,22

    0,19

    0,29

    0,19

    0,12

    0,04

    10

    0,41

    0,28

    0,22

    0,2

    0,33

    0,22

    0,07

    0,02

    11

    0,55

    0,4

    0,3

    0,25

    0,44

    0,25

    0,11

    0,05


    Таблиця 20. Коефіцієнт кластеризації для графів ринку Індії і Китаю

    #

    Індія

    Китай

    0,4

    0,5

    0,6

    0,7

    0,4

    0,5

    0,6

    0,7

    1

    0,57

    0,57

    0,57

    0,57

    0,85

    0,81

    0,67

    0,45

    2

    0,41

    0,26

    0,21

    0,17

    0,93

    0,88

    0,77

    0,64

    3

    0,26

    0,18

    0,12

    0,09

    0,74

    0,61

    0,42

    0,13

    4

    0,38

    0,25

    0,14

    0,09

    0,79

    0,62

    0,37

    0,1

    5

    0,25

    0,14

    0,11

    0,1

    0,76

    0,62

    0,36

    0,07

    6

    0,47

    0,3

    0,19

    0,15

    0,59

    0,43

    0,21

    0,05

    7

    0,27

    0,2

    0,16

    0,14

    0,78

    0,65

    0,45

    0,17

    8

    0,52

    0,34

    0,17

    0,08

    0,91

    0,86

    0,75

    0,59

    9

    0,36

    0,18

    0,08

    0,04

    0,84

    0,72

    0,5

    0,19

    10

    0,25

    0,12

    0,07

    0,05

    0,76

    0,62

    0,38

    0,16

    11

    0,35

    0,16

    0,09

    0,05

    0,79

    0,69

    0,5

    0,24


    Як і в випадку графа доходностей, коефіцієнти значно перевищують відповідні значення щільності.Це говорить про тенденцію акцій утворювати кластери, що показують подібну динаміку цін. Цікаво, що для ринку Бразилії, що має меншу щільність, кластеризація в середньому вище, ніж на ринках Росії та Індії.

    максимальні кліки

    Останньою вивченої характеристикою був розмір максимальної кліки в графах (див. Таблиці 21-22). Результати, отримані при знаходженні максимальних клік для різних порогів, підтверджують висновки, зроблені раніше. Найбільші кліки характерні для періодів, пов'язаних з кризою 2008 р і 2011 р для всіх чотирьох країн БРІК. Це знову підтверджує гіпотезу про те, що в період кризи зв'язність ринку збільшується.



    Таблиця 21. Розмір максимальної кліки для графів ринку Бразилії і Росії

    #

    Бразилія

    Росія

    0,4

    0,5

    0,6

    0,7

    0,4

    0,5

    0,6

    0,7

    1

    24

    8

    4

    4

    14

    9

    6

    4

    2

    20

    10

    8

    4

    15

    11

    6

    3

    3

    24

    18

    17

    15

    4

    2

    2

    2

    4

    21

    13

    4

    4

    18

    11

    7

    4

    5

    13

    8

    8

    8

    13

    10

    7

    4

    6

    20

    14

    8

    8

    18

    12

    9

    6

    7

    30

    19

    12

    8

    19

    12

    7

    4

    8

    71

    39

    24

    8

    47

    31

    18

    9

    9

    50

    36

    28

    18

    21

    15

    8

    4

    10

    24

    15

    10

    6

    25

    13

    6

    3

    11

    68

    42

    20

    18

    39

    21

    9

    5


    Таблиця 22. Розмір максимальної кліки графів ринку Індії і Китаю

    #

    Індія

    Китай

    0,4

    0,5

    0,6

    0,7

    0,4

    0,5

    0,6

    0,7

    1

    8

    8

    8

    8

    605

    420

    206

    60

    2

    22

    20

    17

    14

    857

    692

    455

    223

    3

    23

    22

    19

    13

    314

    146

    44

    8

    4

    116

    59

    57

    57

    340

    143

    24

    6

    5

    144

    138

    129

    122

    362

    152

    44

    7

    6

    233

    224

    212

    202

    79

    28

    9

    5

    7

    295

    290

    279

    259

    475

    252

    96

    21

    8

    227

    103

    45

    23

    1031

    773

    455

    156

    9

    97

    51

    20

    8

    608

    258

    62

    18

    10

    39

    16

    14

    12

    310

    106

    39

    18

    11

    118

    56

    18

    8

    389

    147

    42

    16


    Таким чином, результати, отримані при аналізі графів доходностей країн БРІК дозволяють зробити наступні висновки. Модифікація моделі ринкового графа, використана в даній роботі, дозволяє оцінити потенційну прибутковість, ситуацію на досліджуваному ринку.

    Висновки про падіння і зростання прибутковості вкладень можна зробити і зі зміни біржового індексу, але використана модель дозволяє сказати не тільки про зростання деяких акцій, а й врахувати, наскільки це зростання підтримувався рештою акцій. Наприклад, в нашій моделі велике зростання індексу не завжди відповідає настільки ж великого зростання середнього значення міри близькості, а в ряді випадків навпаки, супроводжується падінням реальних можливостей для отримання доходу.

    Аналіз графів, побудованих із застосуванням нової міри близькості, показує присутність у цих моделей статечного закону. Тобто характерно присутність вузлів-концентраторів - акцій, які впливають на інші сильніше інших.

    Порівняльний аналіз ринків БРІК із застосуванням моделі графа доходностей дозволяє зробити висновок про те, що ринок Китаю має більше можливостей для отримання потенційного доходу інвестора, навіть в роки кризи. На другому за привабливістю місці знаходяться ринки Індії та Росії, на останньому місці - ринок Бразилії.

    Аналіз ринкових графів, побудованих для тих же даних з використанням стандартних кореляцій Пірсона, дозволяє зробити висновок про високий ступінь глобалізації ринку Китаю. Підтверджується гіпотеза про те, що негативні прибутковості корелюють сильніше, ніж позитивні. Це випливає з росту середніх значень, щільності, коефіцієнта кластеризації і розміру максимальної кліки в періоди, відповідні до кризи 2008 р

    Можна зробити висновок про те, що модель ринкового графа з використанням стандартних кореляцій Пірсона дозволяє оцінити можливості щодо формування диверсифікованого портфеля, з управління ризиками, але не включає інформацію по підсумковій прибутковості акцій. Модифікація вихідної моделі з використанням нової міри близькості, дозволяє подолати її недоліки, і може бути застосована для оцінки потенційних можливостей щодо отримання доходу інвестором.

    3.3 Порівняння результатів

    У таблицях 23-26 наведені основні характеристики обох моделей для Бразилії, Росії, Індії та Китаю відповідно. У таблицю по кожній країні включені наступні величини: середні значення міри близькості, щільність, коефіцієнт кластеризації і розмір максимальної кліки. Для моделей графа доходностей наведені значення для порога в 15 тижнів; для ринкових графів зі стандартними коефіцієнтами кореляцій вибрано значення порога 0,5.
    Цікаво також порівняти характеристики, розглянуті вище, зі змінами біржових індексів у відповідні періоди.Як і запропонована міра близькості, індекс характеризує стан індексу, отже, їх динаміка повинна бути взаємозалежна. У таблицях 23-26, разом з характеристиками графів доходностей і ринкових графів, наведені дані про динаміку основних індексів тих бірж, акції яких потрапили в розгляд.
    Очікувано, що і для графа доходностей, і для ринкового графа, наведені характеристики змінюються узгоджено: зі збільшенням середнього значення міри близькості, збільшуються також щільність ребер, коефіцієнт кореляцій, розмір максимальної кліки. Однак якщо характеристики однієї моделі з відповідними значеннями іншої моделі, можна бачити протилежну картину. У більшості випадків збільшення кореляцій Пірсона супроводжується зниженням значень міри близькості для графа доходностей.

    Таблиця 23. Зведена таблиця за результатами для ринку Бразилії

    #

    Граф доходностей

    Динаміка індексу IBOVESPA

    Пор. знач.

    Щільність (і = 15)

    кластеризація

    (і = 15)

    Макс. кліка

    (і = 15)

    1

    4,9

    0,06

    0,35

    32

    -11,02%

    2

    3,6

    0,04

    0,31

    35

    -17,26%

    3

    7

    0,09

    0,45

    67

    94,12%

    4

    5,9

    0,12

    0,43

    62

    18,67%

    5

    6,6

    0,1

    0,46

    66

    28,80%

    6

    9,3

    0,19

    0,55

    86

    30,08%

    7

    10,1

    0,24

    0,66

    118

    45,53%

    8

    7,6

    0,03

    0,48

    29

    -37,98%

    9

    10,8

    0,37

    0,67

    245

    70,69%

    10

    10,3

    0,27

    0,65

    130

    1,78%

    11

    11,1

    0,17

    0,7

    74

    -17,48%

    #

    ринковий граф

    Пор. знач.

    Щільність (і = 0.5)

    Кластеризація (і = 0.5)

    Макс. кліка (і = 0.5)

    1

    0,03

    0,01

    0,26

    8

    2

    0,03

    0,01

    0,24

    10

    3

    0,02

    0,01

    0,28

    18

    4

    0,02

    0,01

    0,23

    13

    5

    0,02

    0,00

    0,24

    8

    6

    0,04

    0,01

    0,28

    14

    7

    0,05

    0,01

    0,33

    19

    8

    0,12

    0,02

    0,38

    39

    9

    0,07

    0,01

    0,26

    36

    10

    0,07

    0,01

    0,28

    15

    11

    0,17

    0,02

    0,4

    42

    Таблиця 24. Зведена таблиця за результатами для ринку Росії

    #

    Граф доходностей

    Динаміка індексу MICEX

    Пор. знач.

    Щільність (і = 15)

    кластеризація

    (і = 15)

    Макс. кліка

    (і = 15)

    1

    16,6

    0,72

    0,84

    17

    64,58%

    2

    12

    0,29

    0,66

    12

    34,16%

    3

    14,2

    0,49

    0,78

    11

    62,35%

    4

    15,6

    0,63

    0,87

    27

    5,71%

    5

    16,3

    0,64

    0,86

    40

    85,69%

    6

    13,4

    0,42

    0,75

    36

    59,40%

    7

    9,4

    0,13

    0,52

    23

    19,25%

    8

    5,7

    0

    0,06

    5

    -68,31%

    9

    15,2

    0,57

    0,8

    92

    123,58%

    10

    12,5

    0,38

    0,76

    68

    21,81%

    11

    8,9

    0,05

    0,42

    15

    -17,00%

    #

    ринковий граф

    Пор. знач.

    Щільність (і = 0.5)

    Кластеризація (і = 0.5)

    Макс. кліка (і = 0.5)

    1

    0,27

    0,27

    0,55

    9

    2

    0,17

    0,17

    0,42

    11

    3

    0,02

    0,02

    0

    2

    4

    0,14

    0,14

    0,47

    11

    5

    0,04

    0,04

    0,23

    10

    6

    0,03

    0,03

    0,2

    12

    7

    0,02

    0,02

    0,15

    12

    8

    0,14

    0,14

    0,44

    31

    9

    0,02

    0,02

    0,19

    15

    10

    0,02

    0,02

    0,22

    13

    11

    0,04

    0,04

    0,25

    21

    Таблиця 25.Зведена таблиця за результатами для ринку Індії

    #

    Граф доходностей

    динаміка індексу

    Пор. знач.

    Щільність (і = 15)

    кластеризація

    (і = 15)

    Макс. кліка

    (і = 15)

    BSE SENSEX

    CNX

    NIFTY

    1

    14,1

    0,4

    0,61

    12

    -19,83%

    н / д

    2

    11,4

    0,16

    0,65

    43

    6,71%

    н / д

    3

    15,7

    0,64

    0,85

    343

    67,72%

    н / д

    4

    11,2

    0,31

    0,64

    254

    14,02%

    н / д

    5

    12,6

    0,34

    0,77

    383

    42,46%

    н / д

    6

    9,9

    0,19

    0,63

    260

    48,09%

    н / д

    7

    12

    0,29

    0,73

    385

    39,79%

    н / д

    8

    9,6

    0,05

    0,59

    98

    -47,29%

    -46,63%

    9

    13,9

    0,6

    0,81

    891

    65,54%

    62,07%

    10

    11,9

    0,27

    0,76

    438

    18,81%

    19,27%

    11

    10,5

    0,08

    0,66

    125

    -22,02%

    -21,81%

    #

    ринковий граф

    Пор. знач.

    Щільність (і = 0.5)

    Кластеризація (і = 0.5)

    Макс. кліка (і = 0.5)

    1

    0,21

    0,16

    0,57

    8

    2

    0,11

    0,01

    0,26

    20

    3

    0,09

    0,00

    0,18

    22

    4

    0,1

    0,01

    0,25

    59

    5

    0,1

    0,01

    0,14

    138

    6

    0,13

    0,02

    0,3

    224

    7

    0,08

    0,01

    0,2

    290

    8

    0,2

    0,02

    0,34

    103

    9

    0,14

    0,01

    0,18

    51

    10

    0,09

    0,00

    0,12

    16

    11

    0,13

    0,00

    0,16

    56

    Таблиця 26. Зведена таблиця за результатами для ринку Китаю

    #

    Граф доходностей

    динаміка індексу

    Пор. знач.

    Щільність (і = 15)

    кластеризація

    (і = 15)

    Макс. кліка

    (і = 15)

    SSE Composite

    SZSE Component

    1

    14,4

    0,47

    0,81

    273

    -20,93%

    -30,41%

    2

    13,5

    0,33

    0,76

    170

    -15,65%

    -15,25%

    3

    15

    0,58

    0,83

    382

    9,53%

    25,07%

    4

    14,9

    0,57

    0,82

    379

    -15,17%

    -10,84%

    5

    15,1

    0,59

    0,82

    352

    -10,91%

    -9,54%

    6

    19

    0,93

    0,96

    915

    104,71%

    120,79%

    7

    19,2

    0,87

    0,93

    1038

    117,68%

    169,28%

    8

    15,7

    0,68

    0,87

    639

    -60,44%

    -55,74%

    9

    21,4

    0,98

    0,99

    +1453

    54,27%

    73,62%

    10

    18,4

    0,88

    0,94

    1105

    -7,07%

    -1,20%

    11

    13,2

    0,3

    0,76

    277

    -23,12%

    -28,82%

    #

    ринковий граф

    Пор. знач.

    Щільність (і = 0.5)

    Кластеризація (і = 0.5)

    Макс. кліка (і = 0.5)

    1

    0,42

    0,38

    0,81

    420

    2

    0,55

    0,67

    0,88

    692

    3

    0,32

    0,13

    0,61

    146

    4

    0,35

    0,14

    0,62

    143

    5

    0,34

    0,13

    0,62

    152

    6

    0,22

    0,01

    0,43

    28

    7

    0,35

    0,18

    0,65

    252

    8

    0,5

    0,57

    0,86

    773

    9

    0,4

    0,23

    0,72

    258

    10

    0,35

    0,09

    0,62

    106

    11

    0,33

    0,08

    0,69

    147

    Якщо ми подивимося, для яких періодів характерні найбільші кореляції, то побачимо, що це періоди падіння фондового ринку.З одного боку, про це свідчить негативна динаміка індексу, з іншого - менші значення міри близькості в графі доходностей. Наприклад, для всіх країн спостерігається зростання зв'язності під час кризи 2008 р Це підтверджує гіпотезу про те, що негативні прибутковості корелюють сильніше, ніж позитивні; в періоди ж економічного підйому акції рухаються більш різноспрямовано. На відміну від кореляцій Пірсона, динаміка значень нової міри близькості достовірно відображає зміну можливостей щодо отримання доходу на ринку.
    Порівняння характеристик графа доходностей зі значеннями індексу показує, має місце наступна закономірність. Збільшення темпів зростання індексу супроводжується зростанням середніх значень міри близькості, і, отже, щільності, коефіцієнтів кластеризації і розміру максимальної кліки. І навпаки, уповільнення темпів зростання або падіння індексу супроводжується зниженням цих характеристик.
    Однак, як ми можемо бачити, динаміка індексу не завжди відображає стан ринку в цілому. Так, на ринку Китаю в період 5 і на ринку Бразилії в період 11, падіння основних індексів супроводжувалося зростанням середніх значень. Для Індії в період 6 навпаки, індекс зростає, але падає значення заходи.
    Таким чином, індекс відображає динаміку саме тих акцій, які беруть участь в його розрахунку. Інші ж акції ринку можуть вести себе інакше. Перевага моделі графа доходностей полягає в тому, що вона дозволяє оцінити, наскільки зміна індексу підтримувалося всіма акціями, що торгуються на ринку.

    Зв'язки між динамікою індексу і коефіцієнтами кореляції не спостерігається.

    Таким чином, в ході роботи була вивчена динаміка показників моделі графа доходностей з новою мірою близькості і моделі ринкового графа зі стандартними корреляциями Пірсона; отримані результати були порівняні між собою, а також з динамікою інший характеристики прибутковості ринку - значеннями біржових індексів.

    висновок

    У представленій роботі була вивчена можливість застосування альтернативної міри близькості для побудови моделі графа фондового ринку.

    В ході роботи були реалізовані алгоритми, що дозволяють будувати мережеві моделі фондових ринків, як з новою мірою близькості, так і з корреляциями Пірсона, і обчислювати їх структурні характеристики. Як модельні даних були обрані дані по ринках країн БРІК з 2001 по 2011 рр. Для вивчення моделей в динаміці, даний часовий відрізок був розбитий на 11 послідовних періодів. Для кожного з періодів за допомогою написаних алгоритмів були побудовані моделі ринку і зроблено розрахунок їх характеристик.

    висновки

    Грунтуючись на отриманих результатах, можна зробити наступні висновки.

    1. Модель ринкового графа, заснована на обчисленні кореляцій між акціями, характеризує ступінь зв'язності фондового ринку, наскільки узгоджено змінюються прибутковості акцій. Ця модель може використовуватися для оцінки можливостей щодо формування диверсифікованого портфеля та управління ризиками, але не включає інформацію про підсумкову прибутковості акцій. Зокрема, було показано, що найсильніше цінні папери корелюють в період падіння, а інвестора в першу чергу цікавлять ті акції, які приносили дохід.

    2. Використання нової міри близькості дозволяє позбутися від недоліків оригінальної моделі. Основні переваги моделі графа доходностей: можливість інтерпретації з економічної точки зору, врахування реальної прибутковості акцій, облік інфляції, використання точних значень замість вибіркових кореляцій, включення в розгляд акцій з низькою ліквідністю. Крім того, перехід від шкали днів до шкалою тижнів дозволяє знизити вплив волатильності ринку на якість отриманих результатів. Це дозволяє використовувати нову модель при оцінці можливостей щодо отримання доходу на ринках цінних паперів.

    3. Переваги моделі графа доходностей видно також при порівнянні з іншою характеристикою фондового ринку - біржового індексу. На відміну від індексу, нова міра близькості дозволяє не тільки судити про зростання або падіння, але і про те, наскільки це зростання підтримувався усіма акціями ринку. Для ряду періодів було зроблено спостереження, що зростання індексу не завжди супроводжувався зростанням можливостей щодо отримання доходу. Тобто індекс відображає динаміку лише тих акцій, які його утворюють, а модель графа доходностей - динаміку ринку в цілому.

    4. Аналіз розподілу ступенів вершин свідчить про те, що для певних значень порога модель ринкового графа з новою мірою близькості має властивість статечного закону.

    5. Порівняльний аналіз моделей для різних країн дозволяє зробити висновок про те, що найбільшою зв'язністю, так само як і найбільшою прибутковістю, володіє ринок Китаю. Навіть в періоди кризи можливості для отримання доходу на цьому ринку істотно вище, ніж на ринках інших країн БРІК.

    6. Результати розрахунків структурних характеристик графа доходностей говорять про те, що великі можливості інвесторам надає також фондовий ринок Індії, хоча він росте повільніше китайського.

    7. Для ринку цінних паперів Росії середнє значення міри близькості в графі доходностей порівнянні зі значеннями для ринку Індії. Однак великі коливання таких характеристик, як щільність ребер, коефіцієнт кластеризації і розмір максимальної кліки говорять про те, що російський ринок є досить ризикованим і нестабільним.

    8. Нарешті, фондовий ринок Бразилії характеризується як низькими корреляциями, так і низькими характеристиками графа доходностей. Таким чином, можливості для отримання інвестором одночасного доходу на цьому ринку порівняно менше, ніж на ринках інших країн БРІК.


    Список літератури

    1. Albert, R. Statistical mechanics of complex networks / R. Albert, AL Barabбsi // Reviews of modern physics. - 2002. - Vol. 74. - P. 47.

    2. Barabбsi, AL Emergence of scaling in random networks / AL Barabбsi, R. Albert // Science. - 1999. - Vol. 286. - P. 509-512.

    3. Batsyn, MV Improvements to MCS algorithm for the maximum clique problem / MV Batsyn, BI Goldengorin, EV Maslov, PM Pardalos // Journal of Combinatorial Optimization. - 2014. - Vol. 27. - P. 397-416.

    4. Bautin, GA Simple measure of similarity for the market graph construction / GA Bautin, VA Kalyagin, AP Koldanov, PA Koldanov, PM Pardalos // Computational Management Science. - 2013. - Vol. 10. - P. 105-124.

    5. Boginski, V. Mining market data: a network approach / V. Boginski, S. Butenko, PM Pardalos // Computers & Operations Research. - 2006. - Vol. 33. - P. 3171-3184.

    6. Boginski, V. On structural properties of the market graph / V. Boginski, S. Butenko, PM Pardalos // Innovations in financial and economic networks. - Northampton: Edward Elgar Publishers, 2003. - P. 29-45.

    7. Boginski, V. Statistical analysis of financial networks / V. Boginski, S. Butenko, PM Pardalos // Computational statistics & data analysis. - 2005. - Vol. 48. - №. 2. - С. 431-443.

    8. Ebel, H. Scale-free topology of e-mail networks / H. Ebel, LI Mielsch, S. Bornholdt // Physical review E. - 2002. - Vol. 66. - P. 1-4.

    9. Garey, MR Computers and intractability: a guide to the theory of NP-completeness / MR Garey, DS Johnson. - New York: Freeman, 1979. - 338 p.

    10. Glotov, AA Market Graph Construction Using the Performance Measure of Similarity / AA Glotov, VA Kalyagin, AN Vizgunov, PM Pardalos // Models, Algorithms and Technologies for Network Analysis. - Springer International Publishing, 2014. - P. 21-35.

    11. Huang, WQ A network analysis of the Chinese stock market / WQ Huang, XT Zhuang, S. Yao // Physica A: Statistical Mechanics and its Applications. - 2009. - Vol. 388. - P. 2956-2964.

    12. Jallo, D. Network-based representation of stock market dynamics: an application to American and Swedish stock markets / D. Jallo, D. Budai, V. Boginski, BI Goldengorin, PM Pardalos // Models, Algorithms, and Technologies for Network Analysis. - Springer New York, 2013. - P. 93-106.

    13. Kim, HJ Scale-free network in stock markets / HJ Kim, IM Kim, Y. Lee, B. Kahng // Journal-Korean Physical Society. - 2002. - Vol. 40. - P. 1105-1108.

    14. Mantegna, RN Hierarchical structure in financial markets / RN Mantegna // The European Physical Journal B-Condensed Matter and Complex Systems. - 1999. - Vol. 11. - P. 193-197.

    15. Mantegna, RN An Introduction to Econophysics: Correlations and Complexity in Finance / RN Mantegna, HE Stanley. - Cambridge: Cambridge University Press, 2000 - 154 p.

    16. Markowitz, HM Portfolio selection / HM Markowitz // The journal of finance. - 1952. - Vol. 7. - P. 77-91.

    17. Mensi, W. Do global factors impact BRICS stock markets? A quantile regression approach / W. Mensi, S. Hammoudeh, JC Reboredo, DK Nguyen // Emerging Markets Review. - 2014. - Vol. 19. - P. 1-17.

    18. Milgram, S. The small world problem / S. Milgram // Psychology today. - 1967. - Vol. 2. - P. 60-67.

    19. Newman, MEJ The structure and function of complex networks / MEJ Newman, // SIAM review. - 2003. - Vol. 45. - P. 167-256.

    20. Onnela, JP Asset trees and asset graphs in financial markets / JP Onnela, A. Chakraborti, K. Kaski, J. Kertesz, A. Kanto // Physica Scripta. - 2003. - Vol. 106. - P. 48.

    21. Onnela, JP Clustering and information in correlation based financial networks / JP Onnela, K. Kaski, J. Kertйsz // The European Physical Journal B-Condensed Matter and Complex Systems. - 2004. - Vol. 38. - P. 353-362.

    22. Onnela, JP Dynamic asset trees and Black Monday / JP Onnela, A. Chakraborti, K. Kaski, J. Kertesz, A. Kanto // Physica A: Statistical Mechanics and its Applications. - 2003. - Vol. 324. - P. 247-252.

    23. Samitas, A. Financial crises and stock market dependence / A. Samitas, D. Kenourgios, N. Paltalidis // European Financial Management Association 16th Annual Meeting (EFMA). - Vienna, 2007. - P. 27-30.

    24. Sedgewick, R. Algorithms (4th Edition). / R. Sedgewick, K. Wayne. - Princeton, 2011. - 992 p.

    25. Tumminello, M. A tool for filtering information in complex systems / M. Tumminello, T. Aste, T. Di Matteo, RN Mantegna // Proceedings of the National Academy of Sciences of the United States of America. - 2005. - Vol. 102. - P. 10421-10426.

    26. Tumminello, M. Correlation based networks of equity returns sampled at different time horizons / / M. Tumminello, T. Aste, T. Di Matteo, RN Mantegna // The European Physical Journal B-Condensed Matter and Complex Systems. - 2007. - Vol. 55. - P. 209-217.

    27. Tumminello, M. Correlation, hierarchies, and networks in financial markets / M. Tumminello, F. Lillo, RN Mantegna // Journal of Economic Behavior & Organization. - 2010. - Vol. 75. - P. 40-58.

    28. Vizgunov AN Comparative analysis of the BRIC countries stock markets using network approach / AN Vizgunov, AA Glotov, PM Pardalos // Models, Algorithms, and Technologies for Network Analysis. - New York: Springer, 2013. - P. 191-201.

    29. Vizgunov, AN Network approach for the Russian stock market / AN Vizgunov, BI Goldengorin, VA Kalyagin, AP Koldanov, PA Koldanov, PM Pardalos // Computational Management Science. - 2014. - Vol. 11. - P. 45-55.

    30.Wagner, A. The small world inside large metabolic networks / A. Wagner, DA Fell // Proceedings of the Royal Society of London. Series B: Biological Sciences. - 2001. - Vol. 268. - P. 1803-1810.

    31. Wang, XF Complex networks: small-world, scale-free and beyond / XF Wang, G. Chen // Circuits and Systems Magazine, IEEE. - 2003. - Vol. 3. - P. 6-20.

    32. Watts, DJ Collective dynamics of `small-world 'networks / DJWatts, SH Strogatz // Nature. - 1998. - Vol. 393. - P. 440-442.

    33. Берж, К. Теорія графів і її застосування / К.Берж. - М .: Видавництво іноземної літератури, 1962 - 320 с.

    34. Берзон, Н.І. Фондовий ринок: Навчальний посібник для вузів економічного профілю / Н.І. Берзон, Е.А. Буянова, М.А. Кожевников, А.В. Чаленко. - М .: Віта-Пресс, 1998 - 400 с.

    35. верескун, А.Н. Застосування ринкових графів до аналізу фондового ринку / А. Н. верескун, Б. І. Гольденгорін, В.А. Замараєв, В.А. Калягін, А. П. Колданов, П.А. Колданов, П.М. Пардалос, // Журнал нової економічної асоціації. - 2012. - №. 3. - С. 66-81.

    36. верескун, А.Н. Порівняльний аналіз фондового ринку Росії і країн БРІК на основі моделі графа ринку / О.М. Верескунів, А.А. Глотов // XIV Квітнева міжнародна наукова конференція з проблем розвитку економіки і суспільства: в 4-х книгах. Книга 4 / Відп. ред .: О. Г. Ясін. - М .: Видавничий дім НДУ ВШЕ, 2014. - С. 382-393.

    37. Гудман, С. Введення в розробку і аналіз алгоритмів / C. Гудман, С. Хідетніемі. - М .: Світ, 1981 - 368 с.

    38. Євін, І.А. Введення в теорію складних мереж / І.А. Євін // Комп'ютерні дослідження і моделювання. - 2010. - №. 2. - P. 121-141.

    39. Ноздрьов, С.В. Сучасний стан і тенденції розвитку міжнародного ринку цінних паперів / С.В. Ноздрьов. - М .: ІСЕМВ РАН, 2012. - 100 с.


    додатки

    Додаток 1



    Програма для завантаження даних про котирування

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.net.MalformedURLException;

    import java.net.URL;

    import java.nio.channels.Channels;

    import java.nio.channels.ReadableByteChannel;

    import java.text.ParseException;

    import java.text.SimpleDateFormat;

    import java.util.Calendar;

    / **

    * Program to download historical quotes of a stock or index from

    * Yahoo! Finance.

    *

    * For more details, see

    * https://code.google.com/p/yahoo-finance-managed/wiki/csvHistQuotesDownload

    * /

    public class QuotesDownloader {

    public static final String INTERVAL_DAILY = "d";

    public static final String INTERVAL_WEEKLY = "w";

    public static final String INTERVAL_MONTHLY = "m";

    / **

    * Build URL for historical quotes download.

    *

    * @param id the ID of the stock or index

    * @param fromDate the first date

    * @param toDate the last date

    * @param interval the interval of the trading periods

    * @return the URL for historical quotes download

    * @throws MalformedURLException if URL is invalid

    * /

    private static final URL buildURL (String id, Calendar fromDate,

    Calendar toDate, String interval) throws MalformedURLException {

    // Start

    String url = "http://ichart.yahoo.com/table.csv?s=";

    // ID

    url + = id;

    // From Date

    url + = "& a =" + fromDate.get (Calendar.MONTH);

    url + = "& b =" + fromDate.get (Calendar.DAY_OF_MONTH);

    url + = "& c =" + fromDate.get (Calendar.YEAR);

    // To Date

    url + = "& d =" + toDate.get (Calendar.MONTH);

    url + = "& e =" + toDate.get (Calendar.DAY_OF_MONTH);

    url + = "& f =" + toDate.get (Calendar.YEAR);

    // Interval

    url + = "& g =" + interval;

    // Static part

    url + = "& ignore = .csv";

    return new URL (url);

    }

    / **

    * Download historical quotes of a stock or index.

    *

    * @param id the ID of the stock or index

    * @param fromDate the first date

    * @param toDate the last date

    * @param interval the interval of the trading periods

    * @param dirName the directory to save the quotes

    * @throws IOException if an I / O error occurs

    * /

    public static void download (String id, Calendar fromDate,

    Calendar toDate, String interval, String dirName)

    throws IOException {

    URL url = buildURL (id, fromDate, toDate, interval);

    System.out.println (url);

    ReadableByteChannel rbc = Channels.newChannel (url.openStream ());

    String outFile = dirName + "/" + id + ".csv";

    FileOutputStream fos = new FileOutputStream (outFile);

    fos.getChannel (). transferFrom (rbc, 0, Long.MAX_VALUE);

    fos.close ();

    rbc.close ();

    }

    / **

    * The entry point to class & application.

    *

    * @param args the command-line arguments

    * @throws IOException if an I / O error occurs

    * @throws ParseException if an invalid date is specified

    * /

    public static void main (String [] args)

    throws IOException, ParseException {

    if (args.length! = 5) {

    System.err.println ( "Usage: QuotesDownloader "+

    " ");

    System.exit (1);

    }

    String id = args [0];

    SimpleDateFormat sdf = new SimpleDateFormat ( "dd.mm.yyyy");

    Calendar fromDate = Calendar.getInstance ();

    fromDate.setTime (sdf.parse (args [1]));

    Calendar toDate = Calendar.getInstance ();

    toDate.setTime (sdf.parse (args [2]));

    String interval = args [3];

    String dirPath = args [4];

    download (id, fromDate, toDate, interval, dirPath);

    }

    }

    Додаток 2



    Модуль для роботи з базою даних котирувань

    import java.io.BufferedReader;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.IOException;

    import java.io.InputStreamReader;

    import java.sql.Connection;

    import java.sql.Date;

    import java.sql.PreparedStatement;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import java.text.ParseException;

    import java.text.SimpleDateFormat;

    import java.util.ArrayList;

    import java.util.Calendar;

    import java.util.GregorianCalendar;

    import java.util.Locale;

    import java.util.TreeMap;

    import oracle.jdbc.pool.OracleDataSource;

    / **

    * Database session handle.

    * /

    public class DatabaseSession {

    private static final String DRIVER = "jdbc: oracle: thin";

    private static final String HOSTNAME = "127.0.0.1";

    private static final String PORT = "1 521";

    private static final String SERVICE = "XE";

    private static Connection conn;

    private static String readString (String message) throws IOException {

    System.out.print (message);

    BufferedReader br = new BufferedReader (new

    InputStreamReader (System.in));

    return br.readLine ();

    }

    private void connect (String user, String password) throws SQLException {

    // Can not access NLS files on my machine

    Locale.setDefault (Locale.ENGLISH);

    OracleDataSource ods = new OracleDataSource ();

    String url = DRIVER + ":" + user + "/" + password + "@" + HOSTNAME

    + ":" + PORT + ":" + SERVICE;

    ods.setURL (url);

    conn = ods.getConnection ();

    }

    / **

    * Create a database session (silent version).

    *

    * @param user The username

    * @param password The password

    * @throws SQLException If a database access error occurs

    * /

    public DatabaseSession (String user, String password)

    throws SQLException {

    connect (user, password);

    }

    / **

    * Create a database session. Prompt user for login & password.

    *

    * @throws IOException If an I / O error occurs

    * @throws SQLException If a database access error occurs

    * /

    public DatabaseSession () throws IOException, SQLException {

    String user = readString ( "User:");

    String password = readString ( "Password:");

    connect (user, password);

    System.out.println ( "Connected! \ N");

    }

    / **

    * Select all trading days given a country and a range of dates.

    *

    * @param country The country

    * @param fromDate The start of the period

    * @param toDate The end of the period

    * @return A list of dates

    * @throws SQLException If a database access error occurs

    * /

    public ArrayList selectDates (String country, Date fromDate,

    Date toDate) throws SQLException {

    ArrayList dates = new ArrayList ();

    String query = "SELECT DISTINCT qdate FROM Quotes WHERE stock IN ("

    + "SELECT id FROM Stocks WHERE exchange IN ("

    + "SELECT id FROM Exchanges WHERE country = ("

    + "SELECT id FROM Countries"

    + "WHERE name =?"

    + ")"

    + ")"

    + ")"

    + "AND qdate BETWEEN? AND?"

    + "ORDER BY 1";

    PreparedStatement stmt = conn.prepareStatement (query);

    stmt.setString (1, country);

    stmt.setDate (2, fromDate);

    stmt.setDate (3, toDate);

    ResultSet rset = stmt.executeQuery ();

    while (rset.next ())

    dates.add (rset.getDate (1));

    stmt.close ();

    return dates;

    }

    / **

    * Select all stocks for the given country that traded at least

    * MinDays during the given period.

    *

    * @param country The country

    * @param fromDate The start of the period

    * @param toDate The end of the period

    * @param minDays The minimum number of trading days for each stock

    * @return List of stocks

    * @throws SQLException If a database access error occurs

    * /

    public ArrayList selectStocks (String country, Date fromDate,

    Date toDate, int minDays) throws SQLException {

    ArrayList stocks = new ArrayList ();

    String query = "SELECT stock, COUNT (*) FROM Quotes WHERE stock IN ("

    + "SELECT id FROM Stocks WHERE exchange IN ("

    + "SELECT id FROM Exchanges WHERE country = ("

    + "SELECT id FROM Countries"

    + "WHERE name =?"

    + ")"

    + ")"

    + ")"

    + "AND qdate BETWEEN? AND?"

    + "GROUP BY stock"

    + "HAVING (COUNT (*)> =?)";

    PreparedStatement stmt = conn.prepareStatement (query);

    stmt.setString (1, country);

    stmt.setDate (2, fromDate);

    stmt.setDate (3, toDate);

    stmt.setInt (4, minDays);

    ResultSet rset = stmt.executeQuery ();

    while (rset.next ())

    stocks.add (rset.getInt (1));

    stmt.close ();

    return stocks;

    }

    / **

    * Select all stocks for the given country that traded in the given time

    * Period.

    *

    * @param country The country

    * @param fromDate The start of the period

    * @param toDate The end of the period

    * @param minDays The minimum number of trading days for each stock

    * @return List of stocks

    * @throws SQLException If a database access error occurs

    * /

    public ArrayList selectStocks (String country, Date fromDate,

    Date toDate) throws SQLException {

    ArrayList stocks = new ArrayList ();

    String query = "SELECT DISTINCT stock FROM Quotes WHERE stock IN ("

    + "SELECT id FROM Stocks WHERE exchange IN ("

    + "SELECT id FROM Exchanges WHERE country = ("

    + "SELECT id FROM Countries"

    + "WHERE name =?"

    + ")"

    + ")"

    + ")"

    + "AND qdate BETWEEN? AND?";

    PreparedStatement stmt = conn.prepareStatement (query);

    stmt.setString (1, country);

    stmt.setDate (2, fromDate);

    stmt.setDate (3, toDate);

    ResultSet rset = stmt.executeQuery ();

    while (rset.next ())

    stocks.add (rset.getInt (1));

    stmt.close ();

    return stocks;

    }

    / **

    * Close connection.

    *

    * @throws SQLException If a database access error occurs

    * /

    public void close () throws SQLException {

    conn.close ();

    }

    / **

    * Get ID for the given exchange from the Exchanges table.

    *

    * @param name The name of the exchange

    * @return The exchange ID; null if there is no matching entry in the

    * database

    * @throws SQLException If a database access error occurs

    * /

    public Integer getExchangeID (String name) throws SQLException {

    String query = "SELECT id FROM Exchanges"

    + "WHERE short_name =?";

    PreparedStatement stmt = conn.prepareStatement (query);

    stmt.setString (1, name);

    ResultSet rset = stmt.executeQuery ();

    Integer id = rset.next ()? rset.getInt (1): null;

    stmt.close ();

    return id;

    }

    / **

    * Get ID for the given country from the Countries table.

    *

    * @param name The name of the country

    * @return The country ID; null if there is no matching entry in the

    * database

    * @throws SQLException If a database access error occurs

    * /

    public Integer getCountryID (String name) throws SQLException {

    String query = "SELECT id FROM Countries"

    + "WHERE name =?";

    PreparedStatement stmt = conn.prepareStatement (query);

    stmt.setString (1, name);

    ResultSet rset = stmt.executeQuery ();

    Integer id = rset.next ()? rset.getInt (1): null;

    stmt.close ();

    return id;

    }

    / **

    * Create entry for given stock symbol to the Stocks table.

    *

    * @param exchangeID The exchange ID for this stock

    * @param symbol The stock symbol

    * @return The auto-generated ID for this stock; null if something

    * Went wrong

    * @throws SQLException If a database access error occurs

    * /

    public Integer insertStock (String symbol, int exchangeID)

    throws SQLException {

    String query = "INSERT INTO Stocks"

    + "VALUES (seq_stocks_id.nextval,?,?)";

    PreparedStatement stmt = conn.prepareStatement (query);

    stmt.setString (1, symbol);

    stmt.setInt (2, exchangeID);

    stmt.execute ();

    stmt.close ();

    query = "SELECT seq_stocks_id.currval FROM Dual";

    stmt = conn.prepareStatement (query);

    ResultSet rset = stmt.executeQuery ();

    Integer id = rset.next ()? rset.getInt (1): null;

    stmt.close ();

    return id;

    }

    / **

    * Select all quotes for the given stock.

    *

    * @param id The stock id

    * @param fromDate The start of the period

    * @param toDate The end of the period

    * @return A list containing quotes information

    * @throws SQLException If a database access error occurs

    * @see Quote

    * /

    public ArrayList selectQuotes (int stock, Date fromDate,

    Date toDate) throws SQLException {

    ArrayList quotes = new ArrayList ();

    String query = "SELECT qdate, close"

    + "FROM Quotes WHERE stock =?"

    + "AND qdate BETWEEN? AND?"

    + "ORDER BY 1";

    PreparedStatement stmt = conn.prepareStatement (query);

    stmt.setInt (1, stock);

    stmt.setDate (2, fromDate);

    stmt.setDate (3, toDate);

    ResultSet rset = stmt.executeQuery ();

    while (rset.next ())

    quotes.add (new Quote (rset.getDate (1), rset.getDouble (2)));

    stmt.close ();

    return quotes;

    }

    / **

    * Read quotes from file and insert into the database.

    *

    * @param file The file containing quotes data

    * @param id The ID of the corresponding stock in the database

    * @throws IOException If an I / O error occurs

    * @throws SQLException If a database access error occurs

    * @throws ParseException If the file contains invalid data

    * /

    public void insertQuotes (File file, int id)

    throws IOException, SQLException, ParseException {

    String query = "INSERT INTO Quotes VALUES (?,?,?,?)";

    PreparedStatement stmt = conn.prepareStatement (query);

    BufferedReader br = new BufferedReader (new

    InputStreamReader (new

    FileInputStream (file)));

    SimpleDateFormat sdf = new SimpleDateFormat ( "yyyy-MM-dd");

    String line = br.readLine (); // Skip the header

    while ((line = br.readLine ())! = null) {

    String [] fields = line.split ( ",");

    if (fields.length! = 7) {

    br.close ();

    throw new RuntimeException ( "Invalid file format");

    }

    stmt.setInt (1, id);

    stmt.setDate (2, new Date (sdf.parse (fields [0]). getTime ()));

    stmt.setDouble (3, Double.parseDouble (fields [4]));

    stmt.setDouble (4, Double.parseDouble (fields [5]));

    stmt.execute ();

    }

    br.close ();

    stmt.close ();

    }

    / **

    * Read inflation values ​​from file and insert into the database.

    *

    * @param file The file containing inflation data

    * @throws IOException If an I / O error occurs

    * @throws SQLException If a database access error occurs

    * /

    public void insertInflation (File file) throws SQLException, IOException {

    BufferedReader br = new BufferedReader (new

    InputStreamReader (new FileInputStream (file)));

    String query = "INSERT INTO Inflation VALUES (?,?,?,?,?)";

    PreparedStatement stmt = conn.prepareStatement (query);

    String s;

    while ((s = br.readLine ())! = null) {

    String [] fields = s.split ( ";");

    int year = Integer.parseInt (fields [1]);

    int month = Integer.parseInt (fields [2]);

    double rate = Double.parseDouble (fields [3]);

    int daysInMonth = new GregorianCalendar (year, month-1, 1)

    .getActualMaximum (Calendar.DAY_OF_MONTH);

    stmt.setInt (1, getCountryID (fields [0]));

    stmt.setInt (2, year);

    stmt.setInt (3, month);

    stmt.setDouble (4, rate);

    stmt.setDouble (5, rate / daysInMonth);

    stmt.execute ();

    }

    br.close ();

    stmt.close ();

    }

    public TreeMap dailyInflation (String country)

    throws SQLException {

    TreeMap inflation =

    new TreeMap ();

    String query = "SELECT year, month, daily_rate"

    + "FROM Inflation"

    + "WHERE country =?"

    + "ORDER BY year, month";

    PreparedStatement stmt = conn.prepareStatement (query);

    stmt.setInt (1, getCountryID (country));

    ResultSet res = stmt.executeQuery ();

    while (res.next ()) {

    int year = res.getInt (1);

    int month = res.getInt (2);

    double rate = res.getDouble (3);

    if (! inflation.containsKey (year))

    inflation.put (year, new double [12]);

    inflation.get (year) [month - 1] = rate;

    }

    stmt.close ();

    return inflation;

    }

    }

    / **

    * The class to represent a single quote entry.

    * /

    class Quote {

    private Date date;

    private double close;

    / **

    * Construct a new quote object.

    * @param date

    * @param price

    * /

    public Quote (Date date, double close) {

    super ();

    this.date = date;

    this.close = close;

    }

    / **

    * Get the date.

    * @return the date

    * /

    public Date getDate () {

    return date;

    }

    / **

    * Set date.

    * @param date the date

    * /

    public void setDate (Date date) {

    this.date = date;

    }

    / **

    * Get the close price.

    * @return the close price

    * /

    public double getClose () {

    return close;

    }

    / **

    * Set the close price.

    * @param price the close price

    * /

    public void setClose (double close) {

    this.close = close;

    }

    }

    додаток 3



    Програма для імпорту даних в базу

    import java.io.File;

    import java.io.FileFilter;

    import java.io.IOException;

    import java.sql.SQLException;

    import java.text.ParseException;

    / **

    * Program to import quotes to the Oracle XE database.

    * If no exchange name is specified, the program will import stock quotes

    * From each of the existing subdirectories.

    * /

    public class ImportQuotes {

    private static File dir;

    private static DatabaseSession db;

    private static void importAll ()

    throws SQLException, IOException, ParseException {

    FileFilter directoryFilter = new FileFilter () {

    public boolean accept (File file) {

    return file.isDirectory ();

    }

    };

    for (File subdir: dir.listFiles (directoryFilter))

    importExchange (subdir);

    }

    private static void importExchange (File exDirectory)

    throws SQLException, IOException, ParseException {

    String exchangeName = exDirectory.getName ();

    System.out.println ( "Importing quotes for" + exchangeName);

    Integer exchangeID = db.getExchangeID (exchangeName);

    if (exchangeID == null) {

    System.err.println ( "Unknown exchange:" + exchangeName);

    System.exit (1);

    }

    File [] stockFiles = exDirectory.listFiles ();

    for (int i = 0; i
    // Remove extension to get the symbol

    String fileName = stockFiles [i] .getName ();

    String symbol = fileName.substring (0, fileName.lastIndexOf ( '.'));

    System.out.println ( "(" + (i + 1) + "/" + stockFiles.length

    + ")" + Symbol);

    Integer stockID = db.insertStock (symbol, exchangeID);

    if (stockID == null) {

    System.err.println ( "Can not insert symbol:" + symbol);

    System.exit (1);

    }

    db.insertQuotes (stockFiles [i], stockID);

    }

    }

    public static void main (String [] args)

    throws SQLException, IOException, ParseException {

    if (args.length <1) {

    System.out.println ( "Usage: java ImportQuotes "+

    [ ] ");

    return;

    }

    // Open directory

    dir = new File (args [0]);

    if (! dir.exists ()) {

    System.err.println ( "No such directory:" + args [0]);

    System.exit (1);

    }

    if (! dir.isDirectory ()) {

    System.err.println ( "Not a directory:" + args [0]);

    System.exit (1);

    }

    db = new DatabaseSession ();

    if (args.length <2)

    importAll ();

    else {

    File exDirectory = new File (dir.getAbsolutePath ()

    + File.separator + args [1]);

    if (! exDirectory.exists ()) {

    System.err.println ( "No such directory:"

    + ExDirectory.toString ());

    System.exit (1);

    }

    if (! exDirectory.isDirectory ()) {

    System.err.println ( "Not a directory:"

    + ExDirectory.toString ());

    System.exit (1);

    }

    importExchange (exDirectory);

    }

    db.close ();

    }

    }

    додаток 4

    Головна сторінка


        Головна сторінка



    графи ринків

    Скачати 158.34 Kb.