INTP型のブログ

苦味があるな?

dexアビトラbotの構想とやること

【具体的構想】

 

  • solana上の特定のDEXの通貨ペア、それのbids, asksを取得する
  • 仮にA,B,CのDEX上から特定通貨ペアのbids, asksを取得しているとしたとき、Aのbest askよりB, Cのbest bidが高い場合、購入後そこで即売却すれば乖離分の利益が取れる(手数料発生するためそれを考慮する)

 

【問題点】

たくさんある

  • その中でもweb socketを使って常時bids, asksを監視できないのが辛い
  • solanaとweb socketを使った通信を確立することはできるっぽいけど、それを扱うためのライブラリがない感じ(厳密にはonAccountChangeで見れるけど、callbackで処理を渡すので自分の作りたい処理がデータ更新時に作れない)
  • そのためライブラリで補っている部分を自分で作る必要があると思われる
  • ウェブソケットすらあんまりわかってないのでそこから一つずつやるしか無い

 

【気持ち】

 

まじでつらい、情報なさすぎて泣きそう

 

今日とか調べてたら昨日書いた自分の記事出てきたからね、絶望でしょ

 

日本語の情報がないだけだろと思う人もいるかもだけど、英語の情報もない。

 

ブロックチェーンの中でも比較的有名なsolanaでこれなんだから、マイナーチェーンとかどんだけ情報無いんだと震えてる

 

断片的に聞いた話だと公開されてるコントラクトとかも読んだりしてるらしいし、solanaでわからないなんて泣き言いうのはダサいような気はする。でもわからんのだ……

 

ライブラリで表現できているのであれば、多分自分でも表現できるとは思うんだよな。

 

Serum-tsのメソッドなんかは特に再現できると思ってる。なんか日本人の記事で「Serum-tsは使いやすさ重視で性能的には微妙、最終的には自分で実装することになるかもね」みたいなこと言ってたし

 

想像してたより苦戦してるけど、まあでもbids, asks取得までは来てるし、swapもライブラリ使うのであればまあ普通にできるかなって感じなので、web socket使ってbids, asks取れるようになればほぼゴールみたいなもん

 

まあその後は並列処理やりたいんだけど、jsだと流石に厳しい部分ありそうな気がするし、jsで書いたコードを今度はRust化するとかいう地獄が待ってそうな気がしないでもないけど

 

とりあえずできることから一つずつやろうということで、今週末はウェブソケットいろいろ実験してみて知見を深めようかなという次第

 

幸い、bitflyerがweb socket用意してくれてたはずなので、それ使えば理解早いはず。bfで一応bot作ってるからね

dex bot開発ムズすぎワロタぁ!

  • TwitterでRustやってるって話をよく目にするので軽率にRust勉強する
  • ブロックチェーンといえばSolidityでしょと軽率にSolidityやりだす
  • 「あれ?なんか違くね?」となりググる
  • rust-web3というライブラリを見つけてやってみる←できない
  • 気合で色々ググってイーサリアムネットワークにノード立てて、ウェブソケットで接続して、自分のウォレット残高取得する
  • イーサリアムネットワークやっててもしょうがないのでsolanaでやる場合をググる
  • solanaの場合はrust-web3使えないことに気づく
  • rustで使えるライブラリは存在せず、javascriptpythonしか無いっぽいことに絶望する
  • solana-web3.jsの中身読んでrust化しようと試みるがムズすぎて断念
  • solana-web3.jsを普通に使ってみて、全容把握に努めることにする←今ココ

 

ここまで一週間以上

 

情報が無い無い尽くしで死にかけ。

 

rust-web3やってた頃は「わーい、これで色んなチェーン触れるんだー」と無邪気に思ってたけど、チェーンごとに仕様変わるようなので絶望した

 

情報無いし、知識も無いし、Rustはコンパイルエラーでガタガタ抜かしよるし、俺にはレベルが高すぎる

 

とはいえ今はmlbot触ってもそんなに意味あるタイミングではないと思うし、やること無いのでやるしか無いんだけどね…

 

こういうのは経験則上一つずつやりながら確かめていくのが一番の近道だと思うので、確かめられるラインであるsolana-web3.jsを普通にjavascriptで動かしていくのが良いのではなかろうかと思ってたりする、jsなら多少は分かるだろうという気持ち

 

mlbotも「わかんねー」言いながらなんだかんだ実運用までたどり着いたので頑張りまっしょい

EMAから考えるATR指値計算式の改善案

EMAの計算式めんどいので出さないけど、EMAは要は直近のデータの方が影響でかく出るようにした移動平均線

 

基本的に単純移動平均線よりEMAのほうが強いというか、EMA見てるトレーダーが多分多いんじゃないかなと思うんだけど、それはイコールより近い値のほうが重要であるってことだと思うんだよね

 

で、前にも書いたけど、相場には足を生成する確率分布があるはずで、仮にそれが正規分布なんだとしたら平均は重要だと思うわけですよ

 

でもEMAが重要視されているということは単純な平均より、直近の値が強く出るように加重平均したほうがいいんじゃないかと思ったわけです

 

だからRichmanbtc氏のATR指値計算みたいなのに加重平均取り込んだら強いんじゃねっていう

 

やり方は……

 

ちょっと面白そうな方法思いついたんでそれでやってみます。やってみて対して効果なかったら追記するかも、あったら隠しとこうかなという

 

さっき軽く試した限りは良くなりそうな雰囲気あったんで楽しみ

 

そういえば、いい加減git管理しないとなぁと思いつつずっとやってないのであった。面倒くさいんだよな、管理するという行為面倒くさいにも程がある

 

追記:

微妙かも…

外れ値出たときにその影響受けすぎてしまう、どっちかというとこれはレンジ相場ではなくトレンドフォローで使えそうな気がした。知らんけど

レンジ相場は外れ値の影響をどれだけ無視できるのかのほうが重要?わからない

 

追記2:

指値戦略はヒゲの多いときに勝てる

ヒゲのないときはほぼ勝てない、ワークする条件にヒゲ量を加えられればいい?

ヒゲがある場合は値幅を小さくして確実にワークさせる、ヒゲがない場合は値幅を大きくしてワークしないようにする、

もしくは長期の値動きに対して短期の値動きが小さいのであれば同じく値幅を小さくする、わからない

これが対話不足ってやつか……

今働いている会社の社長って多分INTPなんですよね

 

だから未経験エンジニアみたいな博打案件雇うし、面接の時ダンボール机にしようとしたりするし、「聞かれたら言おうと思ってた」って指示1行だけみたいな適当なことするんですよ

 

なんかこう凄い同族っぽさを感じるんですけど、同時にだからこそ反面教師というか「俺もこういうところあるから直さないとなぁ…」と思ったりするわけです

 

特に気をつけないといけないなと思ったのが対話不足なところで、さっきも書きましたけど「聞かれたら言おうと思ってた」ばかりでは駄目ですよね。

 

「聞かれたら言おうと思ってた」ならいつ聞かれても答えられるような姿勢が必要じゃねと思うんですよ。もしそうじゃなくて全然対応できないんだとしたら、結果的には適当な指示投げて放置しているのと変わらんわけですから

 

あと多分「聞かれたら言おうと思ってた」の裏には(言わなくてもわかるっしょ)みたいなのが若干あるようなきがするんですよね

 

僕だけかもしれんですけど、自分の思考の中にあることっていつの間にか共通知識というか、周りも知っているような認識になってくるんですけど、現実はそんなわけないじゃないですか。くどいぐらいちゃんと説明してようやく50%ぐらい認識共有できるレベルだと思うんですよ

 

だからまあ何が言いたいかって言うと、『もっと話したほうが良いのかもしれん…』と似たような人を見て思ったわけです。

 

今とかまじでやること無くて適当に色々やってるんですけど、「まじでこれやってていいの…?」って不安になるときあるんですよね。一応チャットで書いてはいるんですけどリアクションも何もないので「もしかして不満あったりするのかな…?」みたいな。

 

多分、何も言わない = それやっててよし

って解釈で問題ないと思うんですけど、実際に「了解」の一言やリアクションがあるだけでも、顔色伺う側からすると大分感覚違うんですよね

 

だから「何も言わなくても何となく分かるっしょ」は事前にこういうときに無言だったらこういうことだから、みたいなすり合わせしてない限りは対話不足と言われる一因なんだろうなと思ったわけです。

 

まあ一社員としては「何も言ってないんだから適当に仕事して金もらっとこ」ぐらいの認識なんですが、個人のプライベートでの学びとして「言わなくてもいっか…」は少しぐらい減らすようにしようかなと思った次第です。おわり

それは普通にマーケットの差なのではと思った

news.yahoo.co.jp

 

「ITエンジニアの給料安すぎ」って話だけど、ことITに関しては扱うものがデジタルコンテンツだったりするので、言語によるマーケットの差はクソデカイと思うんだよな

 

nlab.itmedia.co.jp

 

第1位:英語(11億3200万人)

第2位:中国語・官話(11億人1700万人)

 

日本は1.2~1.3億ぐらい

 

単純に日本語で作った場合と英語・中国語で作った場合で比較したとき、言語によって対象外にならないユーザーに約10倍の開きがある。

 

しかもデジタルコンテンツはいくらでも複製できる以上、マーケットの大きさが売上に繋がりやすいように思う。

 

10倍開きがあるから売上にも10倍差があるとまでは言わないけれど、2倍違うだけでも相当な違いになるわけで、それが給料に繋がってるんじゃねという気がする

 

逆に言えば日本語というフィルターによって国際競争に対して守りの壁を作れている部分もあるだろうけど。

 

そんな感じの話でした

 

 

2022年3月トレード損益と反省

f:id:intptan:20220401205615j:plain

 

+45,925円(+35%程度、レバ2倍)

 

【内訳】

  • mlbot: 100%

 

振り返り

2021年末にmlbotの存在を知り、

  • 1月:情報収集 + 統計、金融の基礎学習
  • 2月:情報収集 + システム開発
  • 3月:システムの実運用 + 改善のための情報収集

という感じで日々を送ってた。

 

1月は自動売買も機械学習も金融も全て知らなかったのでとにかく本を読んだり統計の勉強をしたりした。せめてもの救いとしてpythonはそれなりに分かっていたのでそこの基礎学習を省くことが出来たのは良かった

 

2月はある程度情報を集められたのでシステム開発を開始した。機械学習知らないし、データサイエンスでよく使われるライブラリも知らないのでまじで死にそうだった

 

マジでムズすぎる、機械学習もよくわからんし金融のこともよくわからないのでもう何もかもわからない、わからなすぎてうつっぽくなってきたわ

むっず!!!!!! - INTP型のブログ

 

↑このときとか難しすぎて頭フットーしちゃいそうだよぉって感じだった。てか振り返ってみたら1月頃だった、システム開発が2月で基本は1月で終わってたっぽい。記憶は当てにならないね

 

3月というか2月末ぐらいから実運用始めた。2月末に運用したモデルはバックテスト最強だったけど、実運用ではスリッページで死亡した。ただこれは知識ゼロの自分としては実運用しないと気づけなかったことだったと思うのでしょうがない気はする

 

その後改良版初期モデル→version2→version3と3月10日頃?に現在も使っているモデルに到達した。(損益グラフの赤と緑の境目ぐらいがversion3運用日)

 

更にその後は思いつきを試してみたりしていたけど特に当たりはなく、システムの改良をしたりしていた。

 

それから3月末に新botを作って運用開始した。海外取引所なのでレバレッジ10倍出せるためこれで勝てるのであれば資金効率がかなり良くなる。バックテスト的には現在使っているモデルより強いのだけど、3日ほど運用して負けてる(テスト運用なので微々たるもの、なので損益には含めていない)

 

取引所と通貨ペア自体が優位性に繋がっているのでどこで何やってるかは伏せておく

 

反省と今後

 

反省点は特になし。

 

利益を出すモデルが実際に作れたし、3月末バックテスト的にはそれよりも強いモデルが作れたので十分な成果だと思う。

 

今後は新botの成績を監視しつつ、いけそうだったら資金移してそっちでよりレバをかけて運用したいと思っている

 

botの優位性は同じ戦略を考えた人が増えたり、それを狩ろうとする人が増える(つまり戦略をメタられる)ほどなくなっていくと思っているので、それはイコール時間経過がbotには不利に働くということなはず。であるなら稼げるbotは今が最も期待値が高いと思う。ので、なるべくレバレッジはかけれるなら大きくかけて運用したい(もちろん破産確率は考慮した上で)

 

そんなわけで4月は新botに資金投入が理想。とはいえテスト期間で結構なボロ負けをしているのでどうなるか不明。ただ、自分の実装ミスで初日ボロ負けているので、まだまだ様子見したいなという気持ち

 

あとはRust勉強してdex bot(debotが一般的?)を作れるようになりたい。ざっと必要知識はtypescriptとRustとsoldityらしいので、ひとまずRustやったあとにもうちょっと具体的なところ調べつつsolidity見てみようかなと思っている。

 

ただあんまりモチベ無いのでどうなるか不明。できるようになっても動かせる資金無くて遊べないのがなぁっていう。

 

debotをやりたい理由は稼げるというより自分がまだまだなんだという認識をしたいからというのが7割ぐらいある。mlbotで割とあっさり利益出せてしまってちょっと天狗になってしまっている部分あるけど、エンジニアとしてはまだまだ。

 

debotはコーディングスキルがかなり問われる世界なので、そこで強者に揉まれてみたいなという気持ちがある。どこまで言っても『難しいことをやる』がポリシーなので、そのためには自分より優れたエンジニアに挑戦できるというのはとても魅力的に感じる

 

まあ、さっきも書いたけどお金ないから動かせないし、あんまりなぁって感じではある。

 

そういう意味では運用環境をより良くしたほうがいいかもなと思うんだけど、AWS使うと金かかるしなとも思ってしまう。利益もう少し伸びてから使いたいんだよね、ローカルのほうが止まっちゃったとしても再起動楽だし(ずっと動かしてるとメモリ圧迫されまくって色々困るのはあれだけども)

 

mlbotの新規開発を考えてもいいけど、これは思いつき次第なところあるので何とも。本読んでinputはしておいたほうがいいかな

 

機械学習に関しては先が遠すぎてなぁ……。極めるにしてもなんかそこまでの必要性を今感じてないから微妙な所ある。データサイエンティストになりたいわけでもないし

 

まとめると

 

  1. botの監視と資金投入
  2. debot開発(のためにまずRust基礎)
  3. 運用環境の改善(AWS使うかDB使って損益保持するか、ログ管理ちゃんとするか)
  4. mlbotで使えそうな本読んでおく

 

4月はやるとしたらこの辺かなと思った

 

ちな「本業の勉強は?」というツッコミあるかもだけどゼロイチで作るとかじゃないので特に必要性感じない(スキルアップが必要なほど難しくない)。もっというと実運用でウェブ系知識磨けるので、bot開発自体本業に繋がってる所あるし。debotとかやり始めたらさらなるレベルアップが望めると思っていたりもする

 

ただ基本的に必要にかられないとやる気でないので、モチベーションどうなるか次第なところある。

 

とりあえず新botが使い物になってくれると4月の利益期待できるんだけどな。神のみぞ知るってやつですわ

 

(どうでもいいけど神の見えざる手ってワードかっこよすぎよな)

 

---

 

あと昔やってたサイトの進捗報告みたいな感じで飽きるまでは書いてみようかなと思います。飽きるか、負けまくってモチベ消滅するかしたら終わります

なぜRSIは養分指標なのか

実際養分指標なのかは知らんですが、

 

  • 友人がRSI見てボロ負けしてなんかすごいことになった
  • 強い裁量トレーダーの人が「RSI見てるやつおる?w」って煽ってた
  • 機械学習で食わせたら弱かった

 

の3点から養分指標ってことにします

 

※結構機械学習で定常性高いからってRSI食わせてるやつ見かけるし、自分もそれで食わせてたけど色々検証したら「弱くね?」ってなった

 

---

 

r05649.hatenablog.com

 

どこか羽ばたいていったのであろう元村氏のブログには

 

「消えるのはヒトが先か、大衆心理(テクニカル)が先か」

 

と書いてある通り、テクニカル指標は大衆心理をハックしたものだと思っている。

 

※というか当時は全くわからなかったけど、2016年時点でこの理解度やばいな…EMAに触れてるのもできるトレーダーって感じがしてすごい。

 

RSIも登場当時は何かしらの心理を反映したものだったはずだし、実際勝てる指標でもあったのだと思うけど、いつから養分指標になったのか

 

  1. 市場反映速度向上に伴う
  2. 有名指標になったことで狩る対象になった

 

あたりかなぁと思う。

 

1はランダムウォーク理論にもあるけど、無駄のない市場は情報を価格に織り込む速度が早い = 指標より近い時間軸を見るようにしなければならない

 

って話になるはず。

 

データは常に更新し続け、EMA(指数平滑移動平均線)のように、より近いデータを重視する概念がある限りその傾向は加速する。

 

元村氏もこう言ってるし。

 

RSIは現代の市場の速度に追いつけていないって話なんじゃないかなと思った。

 

もう一つは板取引は特定の戦略を損させることが可能なので、それをRSIは受けてるんじゃないかなと思った。

 

例えばRSI80でエントリして、次の足以降エントリ価格より損失だったら損切り。みたいなルールで売買しているプレイヤーがいたとしたなら、逆にRSI80のときにより大きな資本で買えば逆方向に価格を動かせるので、RSIのプレイヤーが損切りしたあとに利確で確実に勝てる

 

そしてこうなってくるとRSIは信頼できない指標になるので、買う売るの判断が曖昧になってランダムな指標になっちゃうんじゃないかなと思う

 

だから有名すぎる指標は狩る対象になり、最終的にランダムな指標になって、市場を反映しているとはいえないモノになるんじゃないかと考えた

 

---

 

優位性という考え方をするのであれば、戦略のメタがある以上周知されるのはよくないなと思った

 

また逆に言えば「その戦略は優勢を失っていないか」「その優位性とはどんなものか」っていうのをちゃんと考えたほうがいいのかもなと思った

 

なお、これはあくまで自分の考察なので、本当にRSIが使えないのかや仮にそうだとしてそれを反映した理論なのかは知りません