見出し画像

仮想通貨BOTの開発論

botterアドカレ2023 17日目の記事です。

どうも、Rosです。

本記事では、老害BOTTERの視点から仮想通貨のBOTの開発論を語ります。
とても抽象的なテーマですし、技術的なテーマにはほぼ触れません。老害らしくあーだこーだ書きます。
会社の飲み会でよくある「昔はよかった」「俺のときはこうだった」あれです。

BOT開発(概念)とは何か

MEV界隈で有名アカウントのlibevm氏の固定ツイートを見てみよう。
「MEVを抽出する能力は、紳士の証だ。MEVを上手く抽出できるということは、人生を無駄にしていることの表れだ。」

非常にクールである。
実はこれはチェスのプロプレイヤー、ポール・モーフィーが発した名言を一部変えたものらしい。原典はチェスに対して言い放った言葉なのである。

「金を稼ぐという点で人生を無駄にしているなんて言えないでしょう」
「技術力磨いてるなら有意義なのでは?」

という声が飛んでくるのは想像に難くない。だがこれを見た老害勢はフフッwと笑うかもしれない。自分は笑ってしまった

自分は金が欲しいので常に真剣にBOTを作成しているし、新しく覚えることはたくさんあるので作ってるときは割と楽しい。ただ、ぶっちゃけくだらないとは思ってる。これは概念として両立する。くだらないことを真剣にやっている。割とばかげている。

ゆえに、続けられるのである。

は?と思われるかもしれないが、この世には外から見たらワケワカンナイヨっていう世界は結構ある。競技オーバークロックとか、ルービックキューブとかSFDとか

「す、すげぇ・・・!!(で、この後は?)」

的な。
※競技オーバークロックとかルービックキューブを真面目にやってる方を貶める意図はない

この感覚については言語化が難しいが、仮想通貨BOTはこれに近いと思う。人間社会へ貢献してるかというとしていないだろうし、少なくとも「やりがい」なんてものはない。やりがい搾取なんて言葉がよく聞かれるが、我々の世界にそんな概念はない。
取りあうのは”やりがい”ではなく”金”であり、金こそがベンチマークスコアとなる。そういうものだ。

マックスを寄こせェェェ

国内CEXで老害誕生

予め言っておくと、”老害”とはただの自虐ネタである。
最近界隈でよく見る言葉として”老害”がある。この目まぐるしく変化する仮想通貨という市場の中にBOTTERとして数年単位で居座り、もはや”ご近所コミュニティ”と化している奴ら。主に国内取引所を主戦場とするBOTTERの間で語り継がれる言葉だ。

皆さんはMMORPGをプレイしたことがあるだろうか。
プレイしたことがあれば一度は見たことがある光景があるだろう。
お決まりの廃人勢が24時間365日時間湧きMOBに陣取っており、まるで付け入る隙がない。そう、まさにアレである。

画像は5%に陣取る老害勢

廃人と化した彼らは徹底的に時間湧きする時間や時給を管理し、日々の作業を効率化している。そして睡眠が必要な人間ならいざ知らず、24時間365日BOTは起動して待っているだけで良い。

ただ廃人プレイをするにも、ゲーム知識だったり折れない心だったりが必要だ。それなりに廃人同士の競争というのも激しいのである。
なぜならレアドロップ湧きの数は限定されているからだ。MMORPGにおいては廃人ギルド同士が常にレアドロップで争ってるなんてのはざらにある。


では、BOTTER界隈における廃人の立ち位置、老害勢はいかにして廃人プレイヤーと化したのか?私見では「運よく良い環境で、開発サイクルを回し、一気に経験値を稼いだから」であるためと考えている。

何が経験値ブーストとなったのか?

私見を述べたい。BOTの開発に重要なのは

「どれだけの数の試行錯誤を繰り返すことができるか(できたか)どうか」

だと思う。そして試行錯誤自体は主に環境能力により効用が大きく変わるのではないか。

市場

試行錯誤がうまくいってるかどうかは、そもそも市場環境が良くないと判断が難しい。収益機会が多ければそれだけ成功体験も積みやすい。
そういった市場環境で試行錯誤できるかどうか。つまり今(2023/12)だ。

これに当たるかどうかはまあ、ぶっちゃけほぼ運だ。
プレイヤーサイドではどうにもならないこともある。
運営が広告でも打ってプレイヤーを増やしてもらわないとどうにもならない。今です!お願いします。

レギュレーション

今思うと2017年ごろは運営の調整ミスだった。日本が誇るbitFlyer FXはとても熱かった。絶え間なく流れていく約定履歴、次々に発生するロスカット、25%を超える乖離、高頻度BOTの戦争を加熱させたランキング報酬、無視されるSFD、立て続けに発生するサーキットブレイク。1秒間に約定がなければ、BOTのバグを疑った。
(※老害特有の懐古)

それが今は、規制やら仕様変更やらで修正されてしまった。
これがMMORPGなら「あ、あのバグでLV上げたあいつね。」で晒されてもおかしくない。今と昔とでは経験値稼ぎの難易度にそれぐらいの差がある。

時間

市場環境が良くても、いざその時に仕事が忙しい、プライベートが忙しい。で開発時間を取れるかどうか。どっかの啓発本みたいに、時間の作り方!なんて概念なんて提唱しない。1日は24時間しかないのである。
もし、あなたが結婚や就職など人生の大きなイベントを迎えようとしているときにBOTを作ろうとしているなら辞めたほうがいいだろう。
これは24時間365日運営されているMMORPGなので。

ちなみに廃人は、仕事を辞めることを厭わない。
時間を作りたい人は仕事を辞めるのが手っ取り早いだろう。

BOTTER:「Bさんって社会人だったっけ?」
B:「そうだよーw」
BOTTER:「バブルに向けてBOT作成するので」
B:「うん」
BOTTER:「仕事辞めてくれませんか?」
BOTTER:「あとDEX進出に備えてコントラクト作成するので EVMとWASM覚えてください」

有名なコピペをBOTTER風にアレンジ

マインド

その時にBOTに向かう動機、気力、モチベーションがあるか。
ここに関しては普通に「金が欲しい」だと動機としては弱いと思ってる。

周りを観察してみると
・知的好奇心(研究、技術)
・生活のため

借金を返す
・別事業をやるための資金

等々。

「ちょっと贅沢したいな~」「生活を楽にしたいな~」みたいな安心感を求めるモチベーションでこのMMORPGを攻略していける人はそうそういないように思う。大金を稼ぐBOTTERは会社を辞める、健康を捨てる等々、割と人生を無駄にしにきている賭けにきている。

え、動機が出てこない?そういうときは、手っ取り早く爆損して資産をゼロ近辺にしよう。嫌でも動機が出てくる。ソースは私だ。

もう1回遊べるドン

仮説・理論を立てる能力

と、ここまでが取り巻く環境の話だ。そのうえでスキルの話になる。
BOTを作るうえで一番重要なのはなんですか?と問われたら自分はこれ。
「緻密に設計された儲かるためのロジック」である。

ようは「どうやったら儲かるのか?」。これの発想の質やネタの数がそのまま試行錯誤の数に直結する。

簡単なところからいえば
・海外の買いみて誰よりも早く注文したら、儲かるんじゃね?
・為替の値動きに追従してるBOTって少ないだろうから、競合少ないのでは?
・別取引所の価格差みて売買すれば儲かるんじゃね?
・時折来る謎の大口発注のヒゲを取れれば、儲かるんじゃね?

みたいな話である。
発生している現象に対してまずは疑問を持ち、多角的に分析を行い儲かるロジックを考える。

これはSFDを例題に考えればわかりやすいかもしれない。

SFDのルールは「5%以上で売って、5%未満で買い戻せば儲かる」である。はい終わり。勝ちました。




もちろん、そんなはずはない。
やってみればわかるが、謎の遅延判定などの要因で負ける。

SFDという事象において、考慮すべきは本当に乖離だけだろうか?

なぜ乖離が引き起こされるのか?
何によって乖離が引き起こされるのか?そのパターンは?
乖離が起こされたあとの板の状態はどうなるのか?
他の競合はどのように発注してる?

まあ、適当にやっても昔は勝てたんですけど(※マジで環境が大事)。


追記:はい、これを下書きした後に、まさにHohetoさんから記事がでました。こういうことですね。


いやいうてそんなのそんなに思いつかないよ!ってなる方は多いかもしれない。そういう時は素直にパクろう。
世の中にはTwitterやらGithubやら論文やらどこにでもその手のネタがある。
老害BOTTERのツイート….Solanaにいるアビトラ戦隊のつぶやき…というかDEXBOTならBOTのオンチェーン行動は全て明らかだ。ぶっちゃけオリジナリティなんて追及したところで3日で真似される。

実装する能力

追記:QASHさん記事と大分内容が被りました。

これはあえて技術力って書いていない。実装する能力だ。儲かるロジックを実現できれば、中身なんてどうでもいい。

「いやいやお前、あんだけ過去にTwitterでasyncioの素晴らしさ語っといて何言ってんだよ」って言われそうではある。

ちなみにPythonはGIL外す方向性になったので今更ですが勝利宣言していいですか?

これはロジックを実装したあとでの、芸術性、こだわり、美しさの話なのである。別にマルチスレッドでも大抵のケースでは問題はない。asyncio使ったからって儲かるわけじゃない。ほかに手段はいくらでもある。

まあワイはPythonのマルチスレッドは使わないけど。


さて、本題に戻って実装力に関して一番必要なのは、技術の選定とそれをキャッチアップするマインドだと思う。
自身の既存のスキルだけで幅を狭めてしまうと、DEXのような領域に行くこと自体が難しくなってしまう。

少なくとも、DEXのBOTが話題になった際に「スマートコントラクト書けないからいいや」ってなった時点で試合終了なのだ。このマインドでは儲かるはずがない。つーかスマートコントラクト書けなくてもETHのRPC叩くだけで成立しているDEXBOTはごまんとある。そういう収益機会ですら逃してしまっている。少なくともワイは逃がした。

聞こえますか?老害の皆さん。俺から貴方たちへの鎮魂曲です。(自虐)

俺から老害達への鎮魂曲(DALL-E)

技術の選定に際しては、自身のスキルセットを前提にするべきではない。
儲かるロジックが実現できれば手っ取り早くPythonで書くし、Gethみたいなノードに組み込んで動かす場合にはGoで書くし。MOVEやRustが書けないのであれば書いて覚えるDEXの仕組みがわからなければ調査する。

仮想通貨BOTTERに本業エンジニアが多い理由は、既にそういうスキルを持っているからというよりは、そういうマインドを持ちやすいからだと思う。
つーか筆者の場合だと、別に本業でやってることはBOTで全く役に立っていないからな。

開発の進み方

「じゃあ実際どうやって開発してんの?」

これについては、もはや自分の中ではテンプレートと化している。
なんか今回のNOTE、技術的なこと書いてる感ないのでGPTさんを使い疑似コードで書く。


def brainstorm_profitable_idea():
    # 調べる
    while True: # 死の無限ループ
        try:
            research()
        except HiramekiException as e:
            return get_profitable_idea(e)

# ステップ 1: 儲かる方法を考える。調査及びひらめきの世界、ようは英知。ここが全てだ。
profitable_idea = brainstorm_profitable_idea()  # 儲かる方法を考える関数

# ステップ 2: Pythonでプロトタイプを書いて動かす。1日~2日程度。
prototype = create_prototype(profitable_idea)

# ステップ 3: 試運転する(数日程度)
result = test(prototype)
if not result_is_profitable(result):
    return

# ステップ 4: 速度が必要であればRustなりで書き直す。
if more_need_speed(result):
    rewrite_bot()  # コードを書き直す
else:
    print("適当に運用する")

この英知サイクルを回すうえでは、ソフトウェア開発ではアンチパターンとされていることもがっつりやる。
オブジェクト指向やきれいなコードにこだわらないし、テストコードも必要最小限に留める。
継続的インテグレーション、CI/CD、DevOps、テスト駆動開発なんて概念はない。
(※アドカレの皆様、ごめんなさい)

ようは「Done is better than perfect.」
かのFacebookのCEOザッカーバーグもいっている概念に近く、まずは作り動かす。とにかくネタがあればそれを作って試す。ダメそうならすぐ捨てる。うまくいきそうならそれを仕上げる。この繰り返しだ。
もちろんこの英知サイクルは大抵は失敗する。

なーーーー英知ィーーー

自身の例でいえば、FTX、Binanceでの高頻度やML、株のイントラデイ戦略、現在進行形で損失している株寄引。割とがんばって作ってなお崩壊状態となったBOTが腐るほどある。そういうスクラップアンドビルドをやり続けることで、そのうち勝ち筋が見つかるようになるのだ。
そして、見つけた勝ち筋から、仕上げまで到達したBOTはとても強い。

最期に

と、ここまで老害らしく色々と根性論的なことを書き立ててきたが正直なところ自分もいつまで勝てるのかについてはとても疑問を持っている。
少なくとも5年後に今の収益を立てているか、そもそもやっているかについてはわかるはずもない。少なくとも、仮想通貨界隈のトレンドについていけなくなったときゆっくりと死を迎えるのではないかと思っている。

ということで、皆さんも人生を仮想通貨BOTの開発に捧げてみてはいかがだろうか。失敗しても大丈夫である。別に死にはしないので。

失敗してもいいけど、生活だけは守りましょう

この記事が気に入ったらサポートをしてみませんか?