3
フォロー
28
フォロワー

1998年生まれの大学生の暗号通貨と定量投資の旅

作成日:: 2020-03-07 18:11:51, 更新日:: 2024-12-12 20:54:50
comments   11
hits   8714

1998年生まれの大学生の暗号通貨と定量投資の旅

1998年生まれの大学生の暗号通貨と定量投資の旅

1. 暗号通貨の世界へ

私は 1998 年生まれで、現在は 985 学部のコンピューター サイエンスの 4 年生です。同じ学部で大学院の研究を続ける予定です。

私が初めて仮想通貨の世界に触れたのは2017年9月1日でした。そう、この日付をはっきりと覚えています。その3日後に仮想通貨界を揺るがした「94」事件が起きたからです。中央銀行と他の5つの省庁が共同で文書を発行しました。 ICOリスクを防ぐため、暗号通貨の価格は半減しました。

9月1日、WeChatのパブリックアカウントでビットコインを紹介するビデオを見ました(王子如のビデオだったと思います)。とても興味があったので、Huobiをダウンロードして100元をチャージしました。ビットコインの価格を見て3万元以上だったので怖かったので、LTCを購入しました。当時は1LTCあたり120元くらいだったようです。私は一晩中、口座にある数セントと1元の変動を見ていました。 LTC の価格上昇。いくつかの暗号通貨 QQ グループで人々がチャットしている様子をご覧ください。一晩中見ていた後、グループの友達はみんな値段が上がると言っていましたが、私はあまり面白くないと感じたので、数千元をチャージしました。当時、Huobiはまだ銀行カードのチャージを使用していました。長い間、お金が口座に届かなかったので、私はパニックになりました。私はグループの友達に助けを求め、カスタマーサービスに電話しました。しばらくして、ようやくお金が口座に届き、そして私はLTCをすべて購入しました。また。

9月4日、中央銀行が文書を発行するとすぐに通貨の価格が急落しました。私はとても怖かったので、すぐに損失を出して市場から撤退しました。その後、通貨の価格がゆっくりと半分になるのを見ました。その時、Huobiなどの国内取引所は登録できませんでした。国内外の取引所の価格差は大きく、一群のレンガ移動民を豊かにしました。

その後、私はお金を引き出して学校に戻り、底値で急いで購入することはしませんでした(新しい投資家は上昇価格を追いかけて下落価格を売ることしか知りません)が、それでも暗号通貨界の動向に注目し、時折いくつかの QQ グループで人々が何について話しているかを確認しました。それは強気相場の最も狂った月である12月でした。バイナンスのTRONは数百倍に上昇し、他の通貨も2倍になりました。50%以下の上昇は変動とはみなされませんでした。私は誘惑され、再チャージしました。数千ドル、そしてそして、値上がりと値下がりを追いかけて、さまざまな通貨が急騰するのを眺めるが、お金は稼げないという奇妙な操作をいろいろと行う。

2018年1月、活況を呈していた強気相場は終わりを迎えました。私はOKCoinに登録し、契約を始めました。本当に興奮しました。20倍のレバレッジ、倍増、清算など。私はKラインを見つめ、一晩中起きていた。

ほとんどすべての契約ギャンブラーと同様に、私は破産状態に陥りました。しかし、この経験から多くの金融知識を学んだと言わざるを得ません。以前はKラインさえ認識できませんでした。

2. 定量的

コンピューターサイエンスの学生として、市場を観察しながら眠れない夜を過ごした私は、プログラムに取引を任せて安眠できる方法はないかと考え始めました。

実は、fmz(当時はbotvsと呼ばれていました)を見つけたのですが、当時は初心者すぎて、長い間このプラットフォームの使い方がわからなかったので、諦めました。

その後、OK API (github: https://github.com/ccyanxyz/okex) に接続してロボットを書き始め、二重移動平均やグリッドなどの戦略をいくつか書きました。あまり儲からなかったのですが、また、定量分析の扉を踏み入れ、さまざまなテクニカル指標について学び、talibライブラリの使い方を習得しました。その後、学校の用事が多くなったため、私はそれをやめ、ロボットは停止し、手動での視聴と操作モードに戻りましたが、頻度は非常に低く、時々1、2回操作しただけでした。

3. FMZを使用する

ぐるぐる回った後、最終的に fmz に戻りましたが、すでに独自の戦略を書いた経験があったため、今回は fmz を非常に早く開始することができました。 fmzはほぼすべての主流の取引所に接続されており、取引や口座などの操作が統一されていることがわかりました。便利で使いやすいです。コードを書いてどこでも実行できます。交換を手動でカプセル化する労力は、API を使用する人にとっては救世主を見つけるようなものです。

私はGitHubでfmzの公開戦略リポジトリを見つけました(https://github.com/fmzquant/strategies)。まるで宝物を見つけたような気分でした。私は一晩か二晩かけてすべての戦略を調べ、バックテストのためにコピーしました。戦略ロジックを研究し、改善しようとしましたが、まだ未熟だと言わざるを得ません。すべての戦略を読んだ後でも、まだ「お金印刷機」を書いていません。

その後、落ち着いてよく考えてみると、現在の暗号通貨界は2017年の暗号通貨界ではなく、2000元から2000万元という神話的な話はもうありません。私のような貧しい学生にとっては、それはすでに難しすぎます。暗号通貨に投機して大金を儲ける。それは幻想だったので、通貨の価格を監視して上昇と下降を追いかけることをあきらめ、「お金の印刷機」を書こうとする非現実的な考えもあきらめました。戦略を立て、FMZのクラウドソーシングエリアに広告を掲載し始めました。注文を受けて戦略の作成を手伝い、正直に苦労して稼いだお金を稼ぎましょう。

これまで私は、他の人のために多くの戦略を書いてきました。そのプロセスは実はかなり複雑です。人々はしばしば、まったくお金を生まない未熟なアイデアや戦略を持って私のところにやって来ます。また、多くの人は自分のニーズを明確に説明できず、最終的に何度も戦略をテストした結果、利益が出ず、他の人と議論しなければならないことがわかったので、広告を以下のように変更し、注文を受け入れるためのルールと基準を設定し、心配事を減らしました。

もともと、学校の用事が多かったので注文頻度はどんどん減っていき、多くの人を断っていました。しかし、2月にfcoinが逃げ出し、私の資産のほとんどを奪っていきました(でも、お金です。だから最近はみんなから注文を受けてお金を稼がないといけないんです。

私の戦略ライブラリ:

今日、fmz を閲覧していたら、ちょっと言葉にならないものを見つけました。注文を受け付けるある「会社」が、私の注文受付広告を盗作していたのです。以下はその広告です。

そこで私は「熟知度」を「熟練度」に変更し、開始価格を下げました(激しい競争の兆しを感じました)。

なぜ私はFMZに「熟達」していると言わなかったのでしょうか?「C++に熟達している人はいない」というジョークを聞いたことがあるか分かりませんが、ハハハハ、私は「熟達」と書くのに慣れています。私の履歴書とその他の関連スキルの紹介。

4. 裁定取引のアイデア

私は最近、スポットヘッジ、先物スポットアービトラージ、クロスピリオドアービトラージ、三角アービトラージなどのいくつかのアービトラージ戦略を研究してきました。この2日間で、今まで見たことのないアービトラージのアイデアを見ました(私が無知なのかもしれません)。ここでシェアしたいと思います。

外国為替市場に以下の価格の取引ペアがいくつかあると仮定します。

USDollar/BritishPound 0.5
BritishPound/FrenchFranc 10.0
FrenchFranc/USDollar 0.21

この場合、取引手数料を無視すると、元々1米ドルを持っていたとすると、まずそれを英国ポンドに、次にフランスフランに、そして米ドルに両替することができます。その過程で、1米ドルは1x0.5x10.0x0.21になります。 1.05 USD、利益0.05USD。

上記の例には裁定取引の機会がありますが、次の例には裁定取引の機会がありません。

USDollar/BritishPound 0.5
USDollar/FrenchFranc 4.9
BritishPound/FrenchFranc 10.0
BritishPound/USDollar 1.99
FrenchFranc/BritishPound 0.09
FrenchFranc/USDollar 0.19

では、このような巨大な市場で、裁定取引の機会があるかどうかをどのように判断するのでしょうか?

この問題は、有向グラフの最短経路問題として抽象化できます。各通貨を頂点として、為替レートを辺の重みとして有向グラフを形成します。次に、頂点(USDなど)から始めて、裁定取引が可能な循環パス。

上記の例は OJ 問題 (http://poj.org/problem?id=2240) からのものであり、解決策は http://hehejun.blogspot.com/2018/10/poj2240- arbitrage で確認できます。 html.

そこで最近、裁定機会を捉えて裁定取引を行う戦略を考え出せるかと考えました。GitHubで検索したところ、すでに実装されていることがわかりました: https://github.com/wardbradt/peregrine。このプロジェクトは、この裁定取引を解決します。問題。これは、負の重みの辺を持つ有向グラフの最短経路問題に抽象化されます。上記のOJ問題の解決は異なります。負の重みの辺を持つ有向グラフの最短経路は、ベルマンフォードアルゴリズムを使用します。興味があれば勉強できます。研究してください。

OJ 問題の解決案を参考にして、fmz で簡単な実装も作成しました。まだ完成しておらず、正確さは保証できません。議論を促すためにここに投稿します。

var coins = {
    EMPTY: 0,
};
var price = {};

function get_coins() {
    for(var i = 0; i < exchanges.length; ++i) {
        var base = _C(exchanges[i].GetCurrency);
        var quote = _C(exchanges[i].GetQuoteCurrency);
        var len = Object.keys(coins).length;
        if(!coins.hasOwnProperty(quote)) {
            coins[quote] = len;
            len += 1;
        }
        if(!coins.hasOwnProperty(base)) {
            coins[base] = len;
            len += 1;
        }
    }
}

function get_graph() {
    var graph = [];
    for(var i = 0; i < exchanges.length; ++i) {
        var ticker = _C(exchanges[i].GetTicker);
        var base = _C(exchanges[i].GetCurrency);
        var quote = _C(exchanges[i].GetQuoteCurrency);
        graph.push({
            from: coins[base],
            to: coins[quote],
            weight: ticker.Buy
        });
        price[base + quote] = ticker.Buy;
        graph.push({
            from: coins[quote],
            to: coins[base],
            weight: 1 / ticker.Sell
        });
        price[quote + base] = 1 / ticker.Sell;
    }
    return graph;
}

function bfm(graph, initAmount, feeRate) {
    var dist = [];
    var pre = [];
    var i;
    var j;
    var fee = 0;
    for(i = 0; i < Object.keys(coins).length; ++i) {
        dist.push(0);
        pre.push(-1);
    }
    dist[1] = initAmount;
    for(i = 0; i < Object.keys(coins).length - 1; ++i) {
        for(j = 0; j < graph.length; ++j) {
            var from = graph[j].from;
            var to = graph[j].to;
            var rate = graph[j].weight;
            if(dist[from] * rate > dist[to]) {
                dist[to] = dist[from] * rate;
                pre[to] = from;
            }
        }
    }
    if(dist[1] <= initAmount) {
        return false;
    }
    var path = [];
    var top = pre[1];
    var coin_keys = Object.keys(coins);
    path.push({
        from: coin_keys[top],
        to: coin_keys[1],
        rate: price[coin_keys[top] + coin_keys[1]]
    });
    while(top != 1) {
        var temp = top;
        top = pre[top];
        path.push({
            from: coin_keys[top],
            to: coin_keys[temp],
            rate: price[coin_keys[top] + coin_keys[temp]],
        });
    }
    path.reverse();
    
    fee = path.length * feeRate * initAmount;
    if(dist[1] - initAmount <= fee || path.length == 0) {
        return false;
    }
    return path;
}

function onTick() {
    var graph = get_graph();
    var account = _C(exchanges[0].GetAccount);
    var balance = account.Balance;
    
    var path = bfm(graph, balance, 0);
    if(!path) {
        return;
    }
    Log(path);
    
    // buy & sell follow the path 
    ...
}

function main() {
    get_coins();
    
    while(1) {
        onTick();
    }
}

5. まとめ

まとめると、fmzは使いやすく信頼性が高く、静かに財産を築いている優れたプラットフォームです。fmzがますます良くなることを願っています。私としては、卒業後も修士号を取得するために勉強を続けるつもりです(ブロックチェーンでも)。フィールドで作業し、その後 fmz で作業を継続します。小遣いを稼ぎます。

(2020年3月7日午後に書きました。誰かのために戦略を書き終えたところ、FMZ残高が足りないことに気づいたので、ロイヤリティをごまかしにここに来ましたハハハ)

微信: C790266922