Alpaca技術ブログ

AIと超高速データストレージを駆使して新しいトレーディングを創る

Alpacaの最近の開発スタイル、そして金融 X AIに挑戦したい機械学習エンジニアを募集中

こんにちは、Alpacaの北山です。

現在Alpacaの東京チームは金融 X AIに挑戦したい機械学習エンジニアを募集しております。特に我々が特化しているトレーディングの分野で、主に秒から数分までの短期のトレーディング、HFT周辺技術に興味のある方は非常に楽しめると思います。

www.wantedly.com

本エントリーでは技術ブログっぽく、社内の雰囲気をつかむため、Alpacaがどのようなスタイルで現在開発をしているのかを説明したいと思います。

はじめに

現在、Alpacaの東京チームはFinolabというFintech専用のコワーキングスペースに入居しています。東京駅から徒歩3分程度で、大手町駅から徒歩1分の非常に便利な場所です。ただし、大手町駅は非常に広いので、路線によっては、駅内を結構歩くことになりますが、東京・大手町の駅近オフィスと言って間違いありません。

Alpacaは機械学習とビッグデータ技術を用いて金融のさまざまな問題に挑戦します。現在、コンシューマ向けにリリースしているサービスは2つで、ディープラーニングを用いて投資アルゴリズムを設計する「アルパカアルゴ( http://www.alpaca.ai/ja/alpacaalgo/)」、米国株向けに今何を買うべきかを解決するサービス「アルパカスキャン(http://www.alpaca.ai/ja/alpacascan/ )」です。これらの自社プロダクトは主に米国側のチームで開発しており、日本側ではよりプロフェッショナルに近い部分を攻めています。

クライアント様と様々なプロジェクトを行っており、まさに金融 X AIに挑む技術集団です。我々が得意としているのはそのなかでもトレーディングと呼ばれる、基本的にはヘッジファンドなどのシークレットな箇所からなかなか世にでることのない技術で、そういう意味でも、その一端に触れることができるエキサイティングな内容だと思います。

開発スタイルやコミュニケーション

基本的には毎朝のスクラムを基本としたアジャイルな開発スタイルです。Pivotal Trackerで案件はすべて開発しており、開発方式もPivotal Trackerに即した形式のものになっています。コード管理はGithubを利用しており、サービスの変更はすべてPRを通して行い、テストが通ったことを確認してからマージする、最近ではオーソドックスな開発スタイルです。テストはCircleCIで自動的に実行されます。

Alpacaは現在日本5名、シリコンバレー8名の体制です。基本的に業務はすべてリモートで行えるように設計されています。ただし、現在は各拠点のチーム内で活動することを重要視しております。ただし、用事があるときや、体調がイマイチな場合にリモートですべて仕事ができるのは非常に便利です。

社内コミュニケーションはすべてSlackに集約しており、社内向けにメールは利用しません。USのチームと確認事項が多い場合などは適宜Zoomでミーティングを行います。

スクラムでの会話/Githubでのやりとり/PivotalTracker/Slackでの議論などの社内のコミュニケーションは英語を利用します。ここは少し障壁に感じる人も多いかもしれませんが、英語を伸ばしたいと考えているエンジニアにとってもまさに最高の環境です。また、米国側との交流も活発です。

開発環境・技術的なあれこれ

プログラミング言語的にはPython、Go言語、JavaScriptなどを利用しています。Pythonは機械学習部分を含むサービス全般、Go言語は我々がMarketStore(マーケットストア)と呼んでいる金融時系列向け高速データストレージの開発に利用しており、今後もミドルウェア部分に活用していきます。JavaScriptはフロントエンドと一部チャートレンダリングなどのためにNode.js上で利用しています。

Pythonを全般的には活用しているのは、chainer/TensorFlowなどのディープラーニングライブラリ、大量の数値演算を扱うためNumPyやPandas、DASKなどの数値計算ライブラリが充実しているためです。我々がターゲットにしているトレーディング領域は、大量の数値演算を扱うため、この分野にアドバンテージをもつPythonがロジックを実装するメイン言語となります。ただし、大量の計算部分は適宜MarketStore側にオフロードされ、Go言語で実装する可能性もあります。

アプリケーションを触る場合、サービス開発がメインとなるため、Pythonを利用いただくことが多いと思います。ロジック実装以外にはログ集計などの環境整備や、インフラ周りの運用改善も積極的に取り組んで頂きます。ここではfluned/BigQuery/redashなどを活用しています。

Dockerはすでにプロダクションにも投入しており、開発環境とプロダクション環境はほぼ同一のDocker環境で動作しています。ディープラーニングを活用するアプリケーションをDocker上でプロダクションレベルで運用できるチームはまだほとんどいないのではないかと思います。

現在のAlpacaの開発スタイル・環境などをまとめてみました。トレーディングという分野・Alpacaの働き方・開発環境に興味を持った方はぜひ、以下のWantedlyを通してご応募ください!

www.wantedly.com