Python для финансовых расчетов

Ив Хилпиш

Обложка:


Содержание
Об авторе 17
Об изображении на обложке 17
Введение 19
Соглашения, принятые в книге 22
Файлы примеров и цветные иллюстрации 23
Ждем ваших отзывов! 24
Часть I. Python и финансовые вычисления
Глава 1. Python как инструмент финансовых расчетов 27
Язык программирования Python 27
Краткая история Python 30
Экосистема Python 31
Круг пользователей Python 33
Стек научных пакетов 33
Технологии в финансовой отрасли 35
Инвестиции в технологии 35
Технологии как движущая сила 36
Технологии и кадры решают все 37
В погоне за скоростью, производительностью и объемами данных 38
Анализ в реальном времени 39
Python для финансовых расчетов 40
Синтаксис Python, применяемый в финансовых вычислениях 41
Эффективность и производительность кода Python 45
От прототипа к готовому приложению 51
Финансовые расчеты на основе данных и искусственного интеллекта 52
Финансовые системы, управляемые данными 52
Финансовые системы на основе искусственного интеллекта 57
Резюме 60
Дополнительные ресурсы 61
Глава 2. Инфраструктура Python 63
conda как менеджер пакетов 65
Установка Miniconda 65
Выполнение основных команд в менеджере conda 67
conda как менеджер виртуального окружения 72
Контейнеры Docker 76
Контейнеры и образы 76
Создание образа Docker с Ubuntu и Python 77
Облачные экземпляры 82
Открытый и закрытый ключи RSA 83
Конфигурационный файл Jupyter Notebook 84
Сценарий установки Python и Jupyter Notebook 86
Сценарий оркестровки для процесса установки дроплета 87
Резюме 89
Дополнительные ресурсы 90
Часть II. Основы Python
Глава 3. Типы данных и структуры Python 93
Основные типы данных 94
Целые числа 94
Числа с плавающей точкой 95
Булевы значения 98
Строки 102
Пример: вывод и замена строк 104
Пример: регулярные выражения 107
Основные структуры данных 109
Кортежи 109
Списки 110
Пример: управляющие конструкции 112
Пример: функциональное программирование 114
Словари 116
Множества 117
Резюме 119
Дополнительные ресурсы 119
Глава 4. Работа с массивами NumPy 121
Массивы данных 122
Преобразование списка в массив 122
Класс array 124
Обычные массивы NumPy 127
Основные операции 127
Многомерные массивы 130
Метаинформация 134
Изменение формы и размера массива 135
Булевы массивы 139
Скорость выполнения операций 141
Структурированные массивы NumPy 143
Векторизация кода 145
Основные способы векторизации 145
Эффективное использование памяти 149
Резюме 151
Дополнительные ресурсы 152
Глава 5. Анализ данных с помощью библиотеки pandas 153
Класс DataFrame 154
Знакомство с классом DataFrame 154
Расширенные возможности класса DataFrame 159
Основные аналитические возможности 164
Основные инструменты визуализации 168
Класс Series 171
Группирование данных 172
Сложные операции извлечения данных 175
Конкатенация, соединение и слияние данных 179
Конкатенация 179
Соединение 181
Слияние 183
Производительность вычислений 186
Резюме 189
Дополнительные ресурсы 189
Глава 6. Объектно-ориентированное программирование 191
Обзор объектов Python 195
int 195
list 196
ndarray 197
DataFrame 199
Основные операции с классами Python 201
Модель данных Python 206
Код класса Vector 211
Резюме 212
Дополнительные ресурсы 212
Часть III. Обработка и анализ финансовых данных
Глава 7. Визуализация данных 215
Статические двухмерные графики 216
Одномерные наборы данных 217
Двухмерные наборы данных 223
Другие типы диаграмм 231
Статические трехмерные диаграммы 239
Интерактивные двухмерные диаграммы 243
Базовые графики 243
Финансовые диаграммы 248
Резюме 252
Дополнительные ресурсы 253
Глава 8. Финансовые временные ряды 255
Финансовые данные 256
Импорт данных 256
Статистическая сводка 260
Изменения во времени 263
Прореживание данных 266
Скользящая статистика 268
Общие сведения 269
Пример технического анализа 271
Корреляционный анализ 274
Исходные данные 274
Логарифмическая доходность 276
Регрессионный анализ по методу наименьших квадратов 277
Корреляция 278
Высокочастотные данные 279
Резюме 282
Дополнительные ресурсы 282
Глава 9. Операции ввода-вывода 283
Базовые операции ввода-вывода в Python 284
Запись объектов на диск 285
Чтение и запись текстовых файлов 288
Работа с реляционными базами данных 292
Считывание и запись массивов NumPy 295
Ввод и вывод данных с помощью библиотеки pandas 299
Работа с реляционными базами данных 300
Импорт данных из реляционных баз данных 302
Работа с CSV-файлами 305
Работа с файлами Excel 306
Ввод и вывод данных с помощью PyTables 308
Работа с таблицами 308
Работа со сжатыми таблицами 317
Работа с массивами 319
Вычисления в условиях нехватки памяти 321
Ввод и вывод данных с помощью TsTables 324
Исходные данные 325
Хранение данных 326
Извлечение данных 328
Резюме 330
Дополнительные ресурсы 331
Глава 10. Производительность Python 333
Циклы 334
Python 335
NumPy 336
Numba 337
Cython 338
Алгоритмы 340
Простые числа 340
Числа Фибоначчи 345
Число π 349
Биномиальные деревья 353
Python 354
NumPy 355
Numba 357
Cython 358
Метод Монте-Карло 359
Python 361
NumPy 362
Numba 363
Cython 364
Параллельные вычисления 365
Рекурсивный алгоритм библиотеки pandas 366
Python 367
Numba 369
Cython 370
Резюме 371
Дополнительные ресурсы 372
Глава 11. Математические инструменты 373
Аппроксимация 374
Регрессия 375
Интерполяция 386
Выпуклое программирование 391
Глобальная оптимизация 392
Локальная оптимизация 394
Условная оптимизация 395
Интегрирование 398
Численное интегрирование 400
Интегрирование методами моделирования 400
Символьные вычисления 401
Общие сведения 401
Решение уравнений 404
Интегрирование 404
Дифференцирование 406
Резюме 407
Дополнительные ресурсы 408
Глава 12. Стохастические методы 409
Случайные числа 410
Моделирование 417
Случайные переменные 417
Случайные процессы 421
Уменьшение дисперсии 438
Оценка опционов 441
Европейские опционы 442
Американские опционы 448
Оценка рисков 451
Стоимость под риском 451
Поправка на кредитный риск 456
Общий сценарий Python 460
Резюме 463
Дополнительные ресурсы 464
Глава 13. Статистический анализ 465
Нормальное распределение 466
Эталонный портфель 467
Существующие исторические данные 479
Оптимизация портфеля 486
Данные 486
Теоретическое обоснование 488
Оптимальный портфель 493
Граница эффективности 496
Линия рынка капиталов 498
Байесовская статистика 502
Формула Байеса 502
Байесовская регрессия 503
Два финансовых инструмента 508
Обновление оценочных значений со временем 513
Машинное обучение 518
Обучение без учителя 519
Обучение с учителем 522
Резюме 540
Дополнительные ресурсы 541
Часть IV. Алгоритмическая торговля
Глава 14. Торговая платформа FXCM 545
Настройка программного интерфейса FXCM 546
Получение данных 547
Получение тиковых данных 548
Получение свечных данных 550
Работа с программным интерфейсом FXCM 553
Получение исторических данных 553
Получение потоковых данных 556
Размещение заявок 557
Учетные данные 559
Резюме 560
Дополнительные ресурсы 560
Глава 15. Торговые стратегии 561
Простое скользящее среднее 562
Импорт данных 563
Торговая стратегия 564
Векторизованное тестирование на исторических данных 566
Оптимизация 569
Гипотеза случайного блуждания 571
Линейная регрессия по методу наименьших квадратов 575
Данные 575
Регрессия 578
Кластеризация 581
Частотный подход 583
Классификация 586
Два бинарных признака 586
Пять бинарных признаков 588
Пять дискретизированных признаков 590
Последовательное разделение данных на обучающий
и тестовый наборы 592
Рандомизированное разделение данных на обучающий
и тестовый наборы 594
Глубокие нейронные сети 596
DNN и библиотека Scikit-learn 596
DNN и библиотека TensorFlow 599
Резюме 604
Дополнительные ресурсы 604
Глава 16. Автоматизированная торговля 607
Управление капиталом 608
Критерий Келли в биномиальной модели 608
Критерий Келли в биржевой торговле 614
Торговая стратегия, основанная на машинном обучении 619
Векторизованное тестирование на исторических данных 620
Оптимальный леверидж 626
Анализ рисков 628
Сохранение объекта модели 633
Веб-алгоритм 633
Инфраструктура и развертывание 636
Протоколирование и мониторинг 638
Резюме 640
Сценарии Python 641
Автоматизированная торговая стратегия 641
Мониторинг стратегии 644
Дополнительные ресурсы 645
Часть V. Анализ деривативов
Глава 17. Принципы оценки опционов 649
Фундаментальная теорема ценообразования финансовых активов 650
Простой пример 650
Общая модель 651
Риск-нейтральное дисконтирование 653
Моделирование и обработка дат 653
Постоянная краткосрочная ставка 656
Рыночная среда 658
Резюме 662
Дополнительные ресурсы 663
Глава 18. Финансовое моделирование 665
Генерирование случайных чисел 666
Общий класс моделирования 668
Геометрическое броуновское движение 673
Класс моделирования 673
Пример использования 676
Прыжковая диффузия 679
Класс моделирования 679
Пример использования 682
Диффузия по закону квадратного корня 684
Класс моделирования 685
Пример использования 687
Резюме 689
Дополнительные ресурсы 690
Глава 19. Оценка деривативов 691
Общий класс оценки деривативов 692
Европейский опцион 696
Класс оценки 697
Пример использования 699
Американский опцион 705
Метод наименьших квадратов Монте-Карло 705
Класс оценки 707
Пример использования 710
Резюме 713
Дополнительные ресурсы 715
Глава 20. Оценка портфеля 717
Деривативные позиции 718
Класс деривативной позиции 718
Пример использования 721
Портфели деривативов 722
Класс портфеля 723
Пример использования 728
Резюме 736
Дополнительные ресурсы 738
Глава 21. Оценка на основе рыночных данных 739
Данные опционов 740
Калибровка модели 743
Релевантные рыночные данные 743
Моделирование опционов 745
Процедура калибровки 748
Оценка портфеля 755
Моделирование опционных позиций 755
Портфель опционов 756
Код Python 758
Резюме 760
Дополнительные ресурсы 761
Часть VI. Приложения
Приложение А. Обработка значений даты и времени 765
Python 765
NumPy 771
pandas 775
Приложение Б. Класс опционов в модели Блэка— Шоулза— Мертона 781
Определение класса 781
Пример использования 783
Предметный указатель 787