
Decentralized Numerai 案1
numerai的なものをethで作れるか考えてみた。
登場人物
Predictor: 予測を売る。
Executor: 予測を買う。トレードして儲ける
Predictorの予測報告の流れ
Predictorは予測を事前にpublicにせずにforward成績を証明するため、以下の動きをする。
1. Predictorが提出時刻前に予測のハッシュを投稿。
2. Predictorが提出時刻後に予測を投稿
第三者は、ハッシュを見て、提出時刻前に計算されたものかどうかを判定できる 。過去の予測報告を見て、Predictorのforward成績を計算できる。
PredictorとExecutorの予測取引の流れ
1. Predictorが提出時刻前に予測の価格(USDTなど)を投稿。本気度を示すために任意の金額をburnする(USDTなど)
2. Executorが予測を購入 (USDTなど)
3. Predictorが予測を購入したExecutor毎に、各Executorの公開鍵で暗号化した予測を投稿
購入したExecutorのみが事前に予測を見れる。正しい予測が送られなかった場合、返金はできないが、次からそのPredictorから購入しなければ良い。
burnについて
Predictorは予測投稿時に、任意の金額を0x00に送金するなどでburnする。
burnが無いと、Predictorは予測を大量に投稿して、foward成績をハックできてしまう。ファイナンス機械学習で言及されている、バックテストのハックのようなことが悪意がなくても起きる。なので、試行にコストをかけさせる。ファイナンス機械学習で試行回数を論文に書くべきとあったが、それと似てる。
Executorは価格/burn比(後述)が小さいほど、forward成績がハックされている可能性が低いと判断できる。価格/burn比が小さく、forward成績が高いPredictorから予測を購入すれば良い。
孔雀の羽のような、シグナリングとも見れる。スパイ映画で武器を捨てたり、仲間を売ったりするのも似てる。
もったいないので、どこかに溜めておいても良いかもしれない。
どのくらいでハック(悪意が無いものも含め)を抑制できるかわからない。burnが無くてもガス代はかかるので、それだけでも抑制できるかもしれない。正しい努力(本当に成績を上げる)コストより、ハック(試行回数を増やして偶然高い成績が出る)コストが高くないといけない。
価格/burn比 >= 試行回数
a = 価格 / burn と置く。Predictorの利益を考える。
例えば、a = 1だと必ず儲からない。a = ∞だと必ず儲かる。a = 2だと、2つに一つ購入されればトントン。
試行回数を増やしてfoward成績をハックしている人が居たとして、10回試行して1個良い成績を出した人は、a > 10でないと儲からない。逆に、儲かる見込みがあるなら、1個良い成績を出すために行った試行回数はa以下と考えられる。
aを試行回数とみなして成績の補正をすれば良さそう。
悪意なくハックしている人(試行回数が多いのにaが小さいので自分も損する)は弾けないので、burnの絶対額も無視できない気がする。でも、numeraiのランキングとかを見ると、偶然上位に来る人は少ない気がするから。悪意がある人だけ弾ければ良い可能性もある。
numerai型インセンティブとの比較
厳しい見方をすると、ファンドにとってアンサンブルしても全体の相関に寄与しない予測者は、例え相関がプラスでも要らない。価格次第で弱い予測者も買われる可能性はあるが、この記事の方式は強い予測者に有利かもしれない。numerai型だと相関がプラスの人は全員儲かる(NMR希薄化で実はマイナスかもしれないが、NMR建てならプラス)。
一方、相関が小さくてもアンサンブルで全体の相関に貢献できる予測は購入される。numeraiで課題とされていた、真の貢献にインセンティブを与えられるかもしれない。
信用させるために、burnが発生している。これは、1人1モデルのようなことを保証できれば不要なコスト。この記事方式の不利なところかも。
モデル選択方法の比較
numeraiでは、ステーキング量が多いものを選択する。これだと、自信だけあって実力が無いものも選択しうる。資産が多い人は、適当に作ったモデルでも多くステークしている可能性がある。
過去のfoward成績で選べば、これらが軽減する。
機能するか?
わからない。とりあえず作ってみる
2022/01/08追記
burnもロックもやめました。ガス代がburnの機能(適当な予測を大量に提出して、偶然購入されることを期待するチート抑制)を果たすと思います。