Расширенная лекция по количественной торговле на Python — визуализация траектории случайного блуждания

Python искусственный интеллект

Добро пожаловать на подписку«Python Combat — построение системы количественной торговли на основе акций»Буклет, буклет будет последовательно запускать статьи в колонках, связанные с содержанием буклета, и предоставлять более полное и расширенное введение в соответствующие точки знаний.Эта колонка является продолжением содержания буклета! ! !

предисловие

В разделе буклета «Предварительные основы: теория случайных блужданий моделирования NumPy» мы используем иллюстрацию:

Еще в 1900 году парижский докторант Луи Башелье (1887-1946) отследил взлеты и падения парижского фондового рынка в то время, рассчитывая использовать математические инструменты для описания процесса изменения цен на акции. В своей статье «Теория спекуляций» он указал, что ежедневные движения цен на акции принципиально непредсказуемы, подобно «броуновскому движению», которое представляет собой случайное блуждание без каких-либо законов. Как и у человека, который покупает акции и сразу же продает их, вероятность выигрыша или проигрыша одинакова.

Прелесть математики в том, что мы можем превратить непредсказуемую природу акций в предсказуемую. Самый классический пример — случайная прогулка симулированного пьяного: предположим, пьяный пьяница начинает бесцельно ходить от уличного фонаря. Каждый шаг может быть вперед, назад или поворот. Итак, через определенное время, где находится пьяница?

Здесь мы объединяем использование библиотек Numpy и Matplotlib в буклете и используем Python, чтобы представить, как рисовать траекторию случайного блуждания и как прогнозировать цену акции случайного блуждания со статистической точки зрения.

Создать массив случайных блужданий

Мы используемnumpy.random.randint(low, high=None, size=None, dtype=’l’)Функция генерирует случайные числа.

  • Возвращает случайное целое число в диапазоне [низкий, высокий), включая низкий, исключая высокий
  • Параметры: low — минимальное значение, high — максимальное значение, size — размерность массива, dtype — тип данных, тип данных по умолчанию — np.int
  • Если значение high не заполнено, диапазон по умолчанию для генерации случайных чисел равен [0, low]
print("np.random.randint:\n {}".format(np.random.randint(1,size=5)))# 返回[0,1)之间的整数,所以只有0
"""
np.random.randint:
 [0 0 0 0 0]
"""
print("np.random.randint:\n {}".format(np.random.randint(1,5)))# 返回1个[1,5)时间的随机整数
"""
np.random.randint:
 2
"""
print("np.random.randint:\n {}".format(np.random.randint(-5,5,size=(2,2))))
"""
np.random.randint:
 [[-5 -3]
 [ 2 -3]]
"""

Визуализация траекторий случайного блуждания

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

draws = np.random.randint(0, 2, size=nsteps)
steps = np.where(draws > 0, 1, -1)
walk = steps.cumsum()

Мы используем функцию matplotlib.pyplot.plot(), чтобы нарисовать смоделированный график траектории пьяного мужчины, который случайно проходит 2000 шагов от оси 0, как показано ниже:

图片描述

Поскольку каждое движение пьяницы совершенно случайно, его окончательное точное положение невозможно рассчитать, как непредсказуемы ежедневные движения цен на акции. Однако со статистической точки зрения можно рассчитать распределение вероятностей конечного местонахождения пьяного. Затем мы используем 1000 случайных блужданий, чтобы увидеть результаты.Мы инкапсулируем расчет траектории случайного блуждания в виде функции random_walk() следующим образом:

_ = [plt.plot(np.arange(2000), random_walk(nsteps=2000), c='b', alpha=0.05) for _ in np.arange(0,1000)]

Смоделированный график траектории смоделированного пьяного мужчины, начинающего 1000 случайных прогулок по 2000 шагов от оси 0, как показано ниже:图片描述

На рисунке мы интуитивно наблюдаем развитие случайного блуждания.Каждая слабая синяя линия — это симуляция.Горизонтальная ось — количество пройденных шагов, а вертикальная ось — положение вдали от начальной точки. Чем темнее синий цвет, тем больше вероятность появления пьяного в этой позиции после прохождения соответствующего количества шагов.Видно, что диапазон возможных позиций пьяного продолжает расширяться, но чем дальше от начальной точки, тем ниже вероятность местоположения.

Суммировать

Истинное распределение вероятностей точно рассчитано с математическими формулами, которая является сущностью количественной торговли. Edward Thorpe, оригинатор количественной торговли, использует идею этой модели случайной прогулки для расчета распределения вероятностей цен на акции, соответствующую ордерам в день, когда договор выкуплен, чтобы рассчитать цену текущего ордера , Стоит ли цена слишком высокой или слишком низкой, а затем использовать формулу Келли, купить и продавать.

Чтобы узнать больше о количественном трейдинге, подпишитесьбуклетчитать! ! В то же время вы также можете обратить внимание на мой общедоступный аккаунт WeChat [Master Lantern предлагает вам использовать количественную торговлю Python], чтобы узнать больше о количественной торговле Python.