INTP型のブログ

苦味があるな?

optunaを使ったハイパーパラメータチューニング

結論から書くと若干効果あった

 

勾配boostingにはあんまりパラメータチューニング意味ないという話や、デフォルトで使っている人の話とか聞いてたので意味ないかなーと思ってたけど若干は効果あった感じ

 

ただ、日単位のシャープレシオとか見ると減少傾向にあったりするので、多分リターンのばらつき大きくなってる印象。チューニングしたことで売買頻度増加した感じがした

 

---

 

optuna.integretion.lightgbm.LightGBMTunerCVを使った。

 

optuna.readthedocs.io

 

正直パラメータよくわからないので雑に投げた感ある。

 

best_params受け取って、その値を設定した感じ。

 

---

 

問題点として現状リターンをbuy, sellで2つに分けているので目的変数が2個ある

 

現状は同じパラメータで二つとも学習させているけど、ちゃんとやるなら各々やるべきだよなと思った

 

っていうか書いてて気づいたのであとでやる

 

---

 

richmanbtc氏はoptuna使って特徴量選択とかやるみたいな話し出してたので、なんかやり方あるのかなーと模索しているけど全然わからん。

 

optunaってハイパーパラメータチューニングのためのもので特徴量を取捨選択にどうやって関与してくるんだろうか? 機能全然わからんのでドキュメント読むしかない感じ、エンジニア諸君はやくhowto記事書いて投稿しまくってくれ、読むのめんどいので

 

まあとりあえず思ってたよりハイパーパラメータチューニングする意味ありそうだったのは良かった

ストレスがやばい

なんかもはや触れるものすべて傷つける勢いであらゆる物事にイライラするので「あ、これ単純にストレスやばいだけだわ」って気づいた。心の余裕ゼロ

 

多分ストレスの一因に相場あると思うわ、なんやかんや損益の動き追っちゃうからそれで心的ダメージ受けてるような気がしてならない。いつか慣れてほしいまじで

 

アメリカ心理学会が認める、“本当に効く”8つのストレス解消法 | パレオな男

 

散歩・運動はコスパ良すぎるからやったほうがいいよな~

 

最近就職してから散歩も運動もルーティンに組み込めなくなってるからな。なんとかしてやりたい

 

こういうときはwoopとif-thenプランニングが強かった記憶あるのでやっとこかな……

 

最近仕事終わってからは急激にパワーなくなるので朝起きたタイミングがいいんだけど早起きだっる

 

まあちょっと早起きして散歩して運動してからパソコン向かう流れ作るのが強いな。そんな朝早いわけじゃないし

 

あとはずっと思ってたけどマッサージいきたいんだよな。スポーツやってた頃整体よく言ってたけど、久々に施術受けた味ある

 

お祈りもコスパいいと思うけど、心の底から祈り捧げられるものないから無理だ。

 

あとは一番は人間関係なんだけど、そもそも休日遊びさそう気力湧く気がしないので諦めよう。まずはやりやすいところからやってそのレベルまで心の余裕回復させるしか無い

 

あとは音楽は流しとけばいいし、読書はまあしてるのでいいかなという感じ。ムズい本読むので普通にストレス溜まる気がするけど、もっと前提知識いらない本とかも読むようにしようかな

 

意識的リラックスまじ大事、あらゆるものにイライラしすぎてそのうち爆発してしまうので

会社員辞めて~~~

やっぱ向いてねーわ

 

  • やりたくない仕事が来たときのストレス
  • 納期前に頑張って終わらせたのに、その分仕事回ってくるストレス

 

この二つのストレスがやばい、特に前者がやばい

 

基本的にコード書けるような仕事はそれなりに許すけど、仕様共有されてない仕事だけは嫌だ。どう考えても詰むし、聞いたら聞いたでさも知ってて当然みたいな対応されてキレそうになってしまう(しかも説明不足すぎて、何回も聞く羽目になるのもクソムカつく)

 

個人事業主時代に「ライターが思った通りの記事上げてこないのは100%お前が悪い」と言われてきたので、適当な指示を見るとクソムカついてしまう。俺が嫌々ちゃんとやってきたんだからお前もやれやとなってしまう

 

それに後者はなんだ?

 

会社としてそりゃ当然かも知れないけど、だったら俺が頑張って終わらせるメリットねーじゃん。

 

なんだかんだ面白い社長だしそういうことしねーだろと思ったら、手開いてるなら俺の抱えてる仕事やってと投げられたのでクソムカついてしまった。クソムカついたので忠誠心がゼロになった、もう頑張らないし、できる限り時間ギリギリまで使うようにするわ

 

まあそれでも前者のストレスに比べたら微々たるものなんだけど。

 

まじで仕様わからない機能の実装無理ゲーすぎる。似たシステム見ても同じような実装ないし、いうなればノーヒントで1~100の数字で正解のもの入れろと言われてるような気分だわ

 

会社員続けてもいいかもなと思ってたけどやめたわ。今後はやめる方針で考える

 

そうなるとやっぱ自力で稼ぐ方法をちゃんと考えないとな…。会社への利益提供も最低限のものでいいや

天才だと思ったり大したこと無いなとなったり

これは自慢なんですけど、10月半ばにウェブ系のエンジニアとして就職してから色んな経験を経てメキメキスキルが伸びたような気がします。

 

スキルが伸びたからか、まともに仕様共有してくれる人からの依頼ももらえるようになったんですが、それに応じて仕事の難易度も上がり仕様はあるけど実装はほぼゼロからみたいな感じになってきました(言うて他クラスから関数引っ張ってきたら楽に実装できたりするから完全にゼロからではないけど)

 

周りが優しいからなのか、バッファというか余裕を多めに見積もってくれてる文化なのかわかりませんが、開発系のタスクは一日本気出したら終わるようなものに4日とか割いてくれたりするので、適度にアニメとか見ながら5時間ぐらいダラダラコーディングしてます。

 

未経験からでかつ、去年7月ぐらいから本格的に学習した話をすると「伸びすぎでしょ!」みたいな反応をもらえたりもして、自分の能力に自信を持っちゃったりするわけです。

 

まあ納期ゆるいというのが一番大きい気がするので(これがユーザー向けサービスの開発とかだと話変わってくる気がする)、あんまり調子乗りすぎるなよと理性では思いますが、軽く調子乗ってる部分もあるのは事実だったりします。

 

他にも最近では独学で機械学習を使った自動売買システム(mlbot)を作り、直近では実際に利益を出せてます。……これからどうなるのか不安しか無いですけど

 

f:id:intptan:20220312034717p:plain

 

そんなこんなで自分のことを「やはり天才……!」とか思ったりしちゃうところあるわけですが、上には上がいると言うかあくまで『伸びが良い』って評価なんだよなとも思うわけです。

 

エンジニアスキルランキングみたいなのを作るとして、自分が上位に来るかもしれないのは同じ経験数ランキングでしかなく、全エンジニアでくくられたら圏外中の圏外なわけです。

 

昔から割とよーいどんでスタートした時、大抵同じタイミングでスタートした人たちより要領掴むのが早いのか成長速度高いんですが、だいたいそこで調子こいて努力しなくなったり油断して大ミスかましたりして、結果コツコツ積み重ねた人たちに最終的に負けるんですよね。童話かよ

 

ただ今回はありがたいことにあんまり油断せずに済みそうだなとも思っています。

 

mlbot作る中で情報収集も兼ねてコミュニティに入ったんですが、似たような境遇の人達が自分より早く難題を理解したり解決したり、新たなビジネスチャンス見つけてきてRust勉強しだしてたりで、なんかもうやべぇやつらしかいないんですよね。

 

だから自分なんてまだまだだなぁとその都度思えるわけで、しかして仕事では定期的に褒められたりするわけで、なんかこう反復横飛びするがごとく認識がいったりきたりしています。

 

そんな感じの自慢記事でした、おわり

VTuberに夢見ていたものとリアル

togetter.com

 

一言で言えば着ぐるみと芸能人の違いなような気がする。

 

中の人が変わろうともガワだけで魅力を保つというのは難しいことではあるし、着ぐるみにおいても最もメディアに引っ張りだこになったであろうのがふなっしーである点を考慮すると、人間自体が持つキャラクター性みたいなのは人気に大きく影響するのだろうなと思った

 

だからこそVTuberは声優とキャラクター時代が切り離されず、中の人が同じだからで追いかけるファンが大量に発生するわけだし。

 

VTuberは着ぐるみではなく、整形という面が強かったんじゃないかなと思う。

 

それも顔の一部分を変更するようなものではなく、肉体まるまるを変更してしまえるような。SFでよくある、ボディまるっきりの交換をネットワーク上で実現したのがVTuberかもしれないなと思った。なんなら性別変更すら可能なわけだし(今はそういうのはVRChatで展開されてるイメージだけど)

 

---

 

この記事に関連してニコニコのボイスロイド文化に触れられていたけど、あれは確かに着ぐるみのまま人気が出た状態なような気はする。

 

ゆっくりとかもそうだけど、ゆっくり霊夢はこんなキャラ。ゆっくり魔理沙はこんなキャラ。みたいな、そのシリーズを見ている人たち、作っている人たちで薄っすらと共有しているキャラクター性みたいなのがあったりする。

 

ボイロは更に色濃くキャラを共有していて、誰かが人気動画で癖の強いキャラクター性を主張すると、その方向に引っ張られたりもする。

 

複数の制作者によって世界観を共有した結果、消費者・製作者全体で共有されるキャラクター性が生まれて、それがベースに人気が出てくる。

 

これはVIPRPGや艦これ・東方の二次創作みたいなもので、これがVTuberが着ぐるみとして人気を博した先の未来だったのかもしれないなと思う。

 

そのためには一つのガワに対して複数人によるキャラクター性の主張みたいなものは必要になりやすいように思う。

 

リアルな気ぐるみで言えばくまもんなんかは着ぐるみ自体でキャラクター性を作り上げていたけど、その背景には大規模なマーケティングがあったわけで、一つの媒体だけで着ぐるみにキャラ付けするというのは非常に難しいのではないかと思った。

 

特に声がついてしまうと、その声が個人を作り上げるものの一つとして認識されてしまうから、なおさらVTuberは難しい。

 

ボイロにしろ、VIPRPGにしろ、艦これ・東方にしろ、これらはVTuberが抱える個人の声色への依存が存在しない。そういう意味ではVTuberの着ぐるみ化は前提から間違った願望だったのかもしれない、と思った

なかなか優秀なシステムが出来たのではなかろうか

f:id:intptan:20220309183010p:plain

 

今朝起きた時焼かれてたので「うわー」と思いつつ回復していったので強いなと思ったら、今度はさらに焼かれて「ぬわー!!」ってなってたけど、いままた回復してきてて強いなと思った

 

このbotbitflyer_bot_second version3.0ということにしている(firstは逆指値botで焼き尽くされて死んだ)

 

version1.0はプロトタイプということで指値botなのは変わらないけど、機械学習による予測精度が非常に残念なやつだった。

 

version2.0では機械学習の特徴量を一新、大きく変更したため2.0とした。version2.0は非常に固い売買をするやつで「仮想通貨は平均したら上げ、つまり売りは雑魚」と言わんばかりに徹底的に売りの予測リターンをマイナス算出するやつだった。その結果直近のショート市場ではトントン程度の成績しか出せなかった

 

そして今回のversion3.0は執行ルールを変更した(このままじゃだめだ……)と夜な夜な散歩しながらぶつくさ独り言を言いつつ、家に帰って実験してだめだったらまた散歩に行くみたいなループをしながら、直近の戦績がかなり好ましくなる売買基準を見つけた

 

こうした売買ルールの変更はカーブフィッティング(要は変数を過去市場にマッチするように調整してしまうこと)の恐れがあるのだけど、個人的にはこれは説明力が高いのであれば問題ないと思っている(検定の方法もあるっぽいけどやり方よくわからないのでやってない)

 

説明力とは、例えば「ATRを使えば直近相場のボラを推定できるので、その内側に収まるように指値を出せば両方が刺さりやすく、利益にもなりやすい」みたいな話。逆にない場合はなんとなく移動平均線の日数を調整して、「67にパラメータ設定すると、直近の相場にマッチするから67を使ってモメンタム判断に使おう!」みたいなやつ

 

この判断基準でいうと今回の変更は説明力が高いと思っているので、カーブフィッティングの可能性は低いかなと思った。(希望的観測含む)

 

で、実際に運用を始めたのが3/7の夕方頃。ちょうど48時間ほど運用した計算になる。結果としては運用資産に対して10%ほどの利益となっている

 

月間平均リターンは計算上80%程度(レバレッジ込み)で、標準偏差を加味すると65%の範囲で45%~120%におさまり、98%で5%~160%の範囲に収まると考えられる(確率分布を正規分布とした場合)

 

ただしこれは直近一年間に限った話であり、過去4年間までを含んだ場合は-30%~170%が98%の期間になる。

 

長期にした場合でもシャープレシオは1.4程度はあり、直近1年間にした場合は2.0を超えているため期待度は高い、と思っている

 

ただしカーブフィッティングや過学習の可能性は否定しきれないため、後は信じて運用をし続けるしか無いなという印象

 

機械学習部分はまだまだ改善余地あると思っているので頑張りたいが、正直ここを頑張るのはもっとスケールを大きくしたくて時間軸を伸ばしたときかなぁとも思っているので、ひとまず実運用コードをちゃんとしたものにしてあげたい。

 

未だにapi叩いたときの例外処理を設定してないので、リクエストでエラー出ると停止するとかいう最強の脆弱性を抱えているので…

 

ただなんかひたすらにやる気でないので、とりあえず週末になったら直そうかなという次第。

 

多分だけど気になって相場見ちゃって、損益の上下動に精神が疲弊しているんだろうなと思った。裁量トレーダーの皆さんはどんなメンタルしてるんだよとっていうね。

 

まだ自分の成績は稼げることの実証とまではいかないけれど、初心者同士でちょっと交流してみた感じ利益を出せてる人も結構いるので、われこそはという人は挑戦してみてもいいんじゃないかと思う

 

pythonの前提知識はあったけど金融とかデータサイエンスとか数学とか、そういうのゼロで今年入ってから始めたわけだから、まだ3ヶ月程度だけど短期的にはプラスに出来たわけで、可能性に溢れている場所だとは思う

 

調子よかろうが悪かろうが、今後も当面はメモ代わりに結果と考察とか書いたりしそうな気がするので、それ見て判断してもいいとは思いやす

 

とりあえず今日はvampire Survivorsってやつを相場観ながらやって寝ます

BOT弐号機だしたのでやること考える

f:id:intptan:20220305173028p:plain

 

指値BOT作った

コツコツ稼いでドカンと焼かれるタイプのBOTで現在絶賛焼かれ中

 

昨日も似たような感じで焼かれてたけど一日かけてプラ転してたので信じたい気持ち

 

想定していた通りの挙動はしてくれているので、とりあえず動かしておこうかなという感じ。バックテストの成績では月間のシャープレシオが1.0以上はあるので月での利益はプラスになる可能性が7割程度はあると思うけれど、直近で見ると負けてるのが気がかり

 

ただ現状これ以上執行改善するのは難しいので機械学習の部分を突き詰めていきたいという所存。

 

機械学習

 

別に研究者になりたいわけじゃないので根本的なアルゴリズムどうこうは置いといて、汎化性能の向上を突き詰めていきたい(汎化性能 = 予測精度のこと)

 

機械学習段階における変数は

 

  • 特徴量
  • ハイパーパラメータ

 

の二つしか無いと考えているので、そこを頑張るということになる。(厳密に言えば交差検証などのテストの部分も入るだろうけど、現状より改善する方法は多分ないと思うし、汎化性能に直接関わる部分ではないと思っているので除外)(あと薄い知識で現段階の見解書いてるだけなので参考にしないでください)

 

機械学習といえばやはりkaggleなので、kaggle界隈から情報を頑張って取得していこうと思う。

 

後はトレード界隈から強そうな特徴量を探してくることだけど、こっちは実運用時にそれ食わせられなくね…?みたいなやつもあったりするから難しい。ほか、単純にそのデータをバックテストするときにどうやって用意すんのやっていうのもある。オープンインタレストとか強そうだから使いたいんだけどなぁ…

 

現状の知識は特徴量は定常性高いほうがいいよね、ということはこういうふうにしたほうがいいよね。ぐらいしかないのでマジで浅い

 

とりあえずkaggleで勝つなんたらかんたらって本を読んで、この辺詰められる知識を考えていく予定。

 

ちなみに現状のbotもmlbot(機械学習を使った自動売買システムのこと)なんだけど、適当にテクニカル指標入れてるだけなのでなんなら無いほうがいいレベルかもしれない。

 

マジで適当に作ったのでEMAとか無限の過去を利用する指標も使っているので、多分バックテストと実運用での乖離も発生しちゃってる気がする。

 

なのでなるべく早く機械学習部分はがっつり一新ちゃわないとやばい。

 

やばいと思えれば頑張れるだろうという気持ちと、実際に動かして数字が増減するとモチベも高まるだろうと思って実運用無理やりスタートしたけど全然やる気でない。

 

やる気でないときは確かwoopだっけ、そういう理論でとにかく目的を明確化して(自分の願い→それを達成するための目的→それをやる理由→やった後の結果みたいなやつだった記憶ある)おこうという記事

 

うまく性能あげられれば、もう少し焼かれ方もマイルドになるだろうし、そうなれば日利もプラスになる確率上がってハッピー! ということで頑張って本読もうと思います。めんどくせ