Графы рынков

Современное состояние международного фондового рынка, его тенденции и перспективы. Сетевой подход при моделировании сложных систем, его использование при анализе фондовых рынков. Описание модели рыночного графа и доходностей, их свойства, плюсы и минусы.

Рубрика Экономико-математическое моделирование
Вид дипломная работа
Язык русский
Дата добавления 08.11.2015
Размер файла 1,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

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

Если сравнивать числа из таблиц 8-11 со значениями реберной плотности (таблицы 4-7), то можно видеть, что они значительно выше. Это справедливо для всех стран и всех периодов, следовательно, акции на фондовых рынках имеют тенденцию образовывать «кластеры», доходности которых меняются согласованно. Чем выше отношение коэффициента к плотности, тем сильнее эта тенденция.

Размер максимальной клики

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

Как видно из таблиц, динамика максимальных клик в целом повторяет динамику всех предыдущих характеристик. Так, в период, связанный с кризисом 2008 г., происходит существенное падение размера клики. Это говорит о том, что меньшее число акций приносили доход инвесторам. В период, следующий за кризисом, вновь наблюдается сильный рост.

Сравнивать абсолютные значения размера максимальной клики для разных стран представляется некорректным, поскольку число акций, торгующихся на рынках, сильно различается.

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

#

Порог

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

1271

1008

774

594

476

385

310

297

285

269

248

8

750

540

363

246

161

98

63

43

26

15

10

9

1770

1621

1455

1278

1081

891

721

567

417

299

200

10

1358

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

1282

1218

1137

1033

915

793

654

528

407

308

7

1344

1307

1263

1195

1128

1038

930

814

710

595

485

8

1375

1271

1129

975

811

639

479

337

233

159

97

9

1624

1614

1595

1565

1525

1453

1363

1233

1081

908

734

10

1616

1548

1467

1361

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, A.L. Barabбsi // Reviews of modern physics. - 2002. - Vol. 74. - P. 47.

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

3. Batsyn, M.V. Improvements to MCS algorithm for the maximum clique problem / M.V. Batsyn, B.I. Goldengorin, E.V. Maslov, P.M. Pardalos // Journal of Combinatorial Optimization. - 2014. - Vol. 27. - P. 397-416.

4. Bautin, G.A. Simple measure of similarity for the market graph construction / G.A. Bautin, V.A. Kalyagin, A.P. Koldanov, P.A. Koldanov, P.M. Pardalos // Computational Management Science. - 2013. - Vol. 10. - P. 105-124.

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

6. Boginski, V. On structural properties of the market graph / V. Boginski, S. Butenko, P. M. 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, P. M. Pardalos // Computational statistics & data analysis. - 2005. - Vol. 48. - №. 2. - С. 431-443.

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

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

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

11. Huang, W.Q. A network analysis of the Chinese stock market / W.Q. Huang, X.T. 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, B.I. Goldengorin, P.M. Pardalos // Models, Algorithms, and Technologies for Network Analysis. - Springer New York, 2013. - P. 93-106.

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

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

15. Mantegna, R.N. An Introduction to Econophysics: Correlations and Complexity in Finance / R.N. Mantegna, H.E. Stanley. - Cambridge: Cambridge University Press, 2000 - 154 p.

16. Markowitz, H.M. Portfolio selection / H.M. 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, J.C. Reboredo, D.K. 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, M.E.J. The structure and function of complex networks / M.E.J. Newman, // SIAM review. - 2003. - Vol. 45. - P. 167-256.

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

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

22. Onnela, J. P. Dynamic asset trees and Black Monday / J.P. 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, R.N. 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, R.N. 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, R.N. Mantegna // Journal of Economic Behavior & Organization. - 2010. - Vol. 75. - P. 40-58.

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

29. Vizgunov, A.N. Network approach for the Russian stock market / A.N. Vizgunov, B.I. Goldengorin, V.A. Kalyagin, A.P. Koldanov, P.A. Koldanov, P.M. Pardalos // Computational Management Science. - 2014. - Vol. 11. - P. 45-55.

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

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

32. Watts, D.J. Collective dynamics of `small-world' networks / D.J.Watts, S.H. 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 <id> <from_date> " +

"<to_date> <interval> <dir>");

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 = "1521";

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 {

// Cannot 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<Date> selectDates(String country, Date fromDate,

Date toDate) throws SQLException {

ArrayList<Date> dates = new ArrayList<Date>();

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

* <tt>minDays</tt> 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<Integer> selectStocks(String country, Date fromDate,

Date toDate, int minDays) throws SQLException {

ArrayList<Integer> stocks = new ArrayList<Integer>();

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<Integer> selectStocks(String country, Date fromDate,

Date toDate) throws SQLException {

ArrayList<Integer> stocks = new ArrayList<Integer>();

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<Quote> selectQuotes(int stock, Date fromDate,

Date toDate) throws SQLException {

ArrayList<Quote> quotes = new ArrayList<Quote>();

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<Integer, double[]> dailyInflation(String country)

throws SQLException {

TreeMap<Integer, double[]> inflation =

new TreeMap<Integer, double[]>();

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 < stockFiles.length; 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("Cannot 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 <dir> " +

[<exchange>]");

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


Подобные документы

  • Подходы к оценке стоимости финансовых активов в рамках линейной и нелинейной парадигмы. Анализ фрактальных свойств американского фондового рынка. Разработка методики расчета параметров модели Веге-Изинга, построенной на основе гипотезы когерентных рынков.

    дипломная работа [2,3 M], добавлен 13.12.2010

  • Построение процедуры для проверки индивидуальных гипотез о равенстве вероятностей совпадения и несовпадения знаков случайных величин. Проверка адекватности условия оптимальности процедуры идентификации графа фондового рынка экспериментальным данным.

    дипломная работа [823,9 K], добавлен 28.12.2015

  • Основные понятия, структура и свойства сетей Петри. Рассмотрение принципов анализа двудольных ориентированных графов. Проведение проверки корректности абстрактного сценария. Преимущества использования сетей Петри в моделировании и анализе бизнес систем.

    презентация [98,6 K], добавлен 14.09.2011

  • Характеристика состояния акций второго эшелона рынка нефтяной отрасли. Рассмотрение подходов ученых к определению сущности поведения участников фондового рынка. Исследование и анализ особенностей эконометрического поведения участников фондового рынка.

    курсовая работа [522,1 K], добавлен 13.10.2017

  • Объемы валового внутреннего продукта и национального дохода. Тенденции развития отраслей экономики. Состояние финансовых и товарных рынков. Производственные показатели предприятия. Понятия корреляции и регрессии. Корреляционно-регрессионный анализ.

    курсовая работа [214,8 K], добавлен 21.01.2011

  • Методы и модели анализа динамики экономических процессов. Эластичность в экономическом анализе. Коэффициент корреляции, его свойства. Динамические ряды и временные ряды, тренд, их компоненты. Решение задачи потребительского выбора и его свойства.

    курс лекций [399,8 K], добавлен 15.06.2015

  • Имитационное моделирование. Описание моделируемого объекта. Обслуживающие устройства. Конвейер с постоянным интервалом. Дискретный подход в имитационном моделировании. Математическое ожидание. Среднеквадратичное отклонение. Равномерное распределение.

    курсовая работа [43,9 K], добавлен 20.12.2008

  • Построение сетевой модели. Упорядочивание сетевого графика. Определение критического пути. Временные характеристики сетевого графика. Современное сетевое планирование в условиях неопределенности. Оптимизация сетевого графика по схеме "Время-стоимость".

    курсовая работа [537,0 K], добавлен 28.04.2014

  • Построение одноиндексной математической модели задачи линейного программирования, ее решение графическим методом. Разработка путей оптимизации сетевой модели по критерию "минимум исполнителей". Решение задачи управления запасами на производстве.

    контрольная работа [80,8 K], добавлен 13.12.2010

  • Теоретические и методологические основы моделирования развития фирм с рентноориентированным управлением. Экономико-математические основы моделирования динамически сложных систем. Функция заимствования: понятие, сущность, свойства, аналитический вид.

    дипломная работа [630,4 K], добавлен 04.02.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.