Неудачное начало моего пути к программированию

В прошлой жизни - теперь известная как Линя Б.Ф.С. (До школы Flatiron) - Я занимался структурированием продуктов в команде корпоративных деривативов инвестиционного банка. Это может показаться забавным местом для начала моего пути к программированию, но, тем не менее, это было началом для меня.

Вам может быть интересно, помогло ли изучение стратегий корреляционной торговли сформировать образ мышления программиста или, возможно, мой опыт работы с производными финансовыми инструментами вдохновил меня на разработку способа монетизации волатильности рынка. Это были бы крутые причины. Увы, мое погружение в программирование произошло из-за того досадного обстоятельства, что я остался с кучей откровенно дерьмовых данных и сломанными внутренними приложениями.

Я присоединился к команде корпоративных деривативов после ее полной реструктуризации. Первый проект, который мне поручили, заключался в полной реорганизации наших торговых данных за пять лет. Вы можете подумать: ах, как же это плохо - ведь всего пять лет!

Вы ужасно ошибаетесь.

Оглядываясь назад, я удивляюсь, что не убежал с криком. Данные не были организованы каким-либо из логических способов, которые вы могли бы себе представить: помечены клиентом, помечены датой сделки, помечены продуктом ... любой из них был бы ПРЕКРАСНО. Вместо этого у нас был файл клиента, файл маржинального кредита, файл продуктов волатильности, файл пропущенных сделок, файл прибылей и убытков и бесчисленное множество других файлов, которые, казалось, содержали избыточную информацию. Кроме того, почти не было формул или ссылок на ячейки - большая часть данных была жестко привязанной.

Да… вы, ботаники по Excel, понимаете мою боль.

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

Мало того, что была острая необходимость в консолидированной базе данных - и способе поддерживать эту базу данных - высшее руководство хотело четкие ежемесячные отчеты о наших сделках. Это означало отчеты о прибылях и убытках, отчеты о коэффициенте успешности, отчеты о клиентах и ​​активный способ отслеживания общего условного риска в бухгалтерских книгах наших трейдеров. Мой предшественник тратил часы на составление каждого отчета вручную для руководства, но я абсолютно не собирался тратить столько времени на создание обычных отчетов. И вот я подумал: должен быть способ получше!

Введите находку VBA.

Так что же такое VBA?

VBA расшифровывается как Visual Basic для приложений, и в основном это язык программирования Microsoft, используемый для разработки программ Excel. Я не решаюсь называть его языком программирования, потому что вы не можете использовать его вне приложения Microsoft (поэтому его нельзя использовать для создания автономного приложения), но он чертовски полезен. / em>

VBA поддерживает почти все используемые нами торговые инструменты, от наших расценок до автоматической генерации электронной почты и управления базами данных. Вы можете изучить самые основные функции VBA, записав макросы и просмотрев сгенерированный код. Мне посчастливилось использовать множество макросов Excel в наших торговых инструментах - и отладить их достаточно - чтобы научиться основам.

Я использовал VBA для создания базы данных, в которой отслеживались все наши сделки и информация о маржинальном кредите, и в конечном итоге создал программу, которая будет отправлять выбранные данные из основного листа в новый лист Excel, который затем будет прикреплен к электронному письму, отправленному на адрес выбранный список рассылки менеджмента. Я создал дашборд. Я создал автоматический счетчик прибылей и убытков. Я создал столько чертовых кнопок на своем листе Excel, что затем мне пришлось создать вкладку инструкций, чтобы объяснить моей команде, как все это работает.

Но я должен был понять, что вот-вот пересечу точку невозврата.

Вскоре я начал создавать все больше и больше инструментов для наших клиентов и внутренних команд. Я создал инструмент анализа IRR, который позволил фирмам PE анализировать свою IRR по инвестициям с маржинальной ссудой и без нее. Я создал инструмент сценария ликвидации конвертируемых облигаций, чтобы проанализировать риск принятия ЦБ в качестве обеспечения. Я создал инструмент отслеживания сложных процентов, потому что по какой-то причине наши внутренние программы не могли рассчитать сложные проценты. Мне казалось, что я трачу больше времени на программирование инструментов Excel, чем на структурирование производных стратегий, но я не возражал. Я часто задерживался допоздна, чтобы закончить проект по программированию, вместо того, чтобы перечитывать 10-К компании.

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

VBA и другие языки программирования

Теперь, когда я немного изучил другие языки программирования - в основном Ruby и немного JavaScript - я действительно благодарен за то, что сначала изучил VBA. Я многое узнал о программировании на VBA, например о важности рефакторинга кода, области видимости переменных и использовании согласованного комментирования.

Когда я начал изучать JavaScript и Ruby, многие из изученных мной концепций были связаны с теми, которые я уже знал по VBA. Например, на каждом языке есть разные типы данных, такие как строка, целое число, логическое значение и т. Д. VBA имеет как минимум 12 типов данных (целое, длинное, одиночное, двойное, валюта, дата, строка, объект, логическое, десятичное, байтовое, вариантное) по сравнению с 7 в JavaScript и 6 в Ruby.

Одно из различий в VBA заключается в том, что вы должны объявлять свои типы данных при объявлении своей переменной, что добавило дополнительный уровень мысли при планировании того, что вы хотите, чтобы ваши функции VBA выполняли. Изучив сначала функциональный язык, изучение объектно-ориентированного языка казалось намного проще и интереснее. Кроме того, VBA был ограничен листами Excel - и давайте будем честными, сколько удовольствия вы можете получить с ячейками в электронной таблице?

VBA привел меня в форму, сохранив некоторые передовые практики в программировании. У меня было так много кошмаров об отладке с помощью VBA, что я сейчас безумно одержим тем, чтобы мой код был организован и комментировал всякий раз, когда это было полезно. Не раз случалось (к сожалению), что один из моих листов Excel ломался, и я начинал смотреть на код только для того, чтобы понять, что понятия не имею, что я вообще делал. О, как бы я хотел, чтобы Pry существовал для VBA.

Итак, мое путешествие замкнулось. По мере того, как я узнаю все больше и больше о программировании, я продолжаю думать о примитивном коде VBA, который я писал раньше, и о том, насколько лучше я смогу это сделать сейчас, когда я изучил больше методов и фундаментальных теорий программирования. Но я знаю, что, вероятно, однажды вернусь в VBA, потому что, честно говоря, этот ботаник по Excel во мне никогда не умрет.