3
tập trung vào
28
Người theo dõi

Hành trình đầu tư tiền điện tử và định lượng của sinh viên năm 1998

Được tạo ra trong: 2020-03-07 18:11:51, cập nhật trên: 2024-12-12 20:54:50
comments   11
hits   8714

Hành trình đầu tư tiền điện tử và định lượng của sinh viên năm 1998

Hành trình đầu tư tiền điện tử và định lượng của sinh viên năm 1998

1. Bước vào thế giới tiền điện tử

Tôi sinh năm 1998 và hiện là sinh viên năm cuối ngành khoa học máy tính tại trường đại học 985. Tôi sẽ tiếp tục học sau đại học tại trường này.

Lần đầu tiên tôi tiếp xúc với thế giới tiền điện tử là vào ngày 1 tháng 9 năm 2017. Vâng, tôi nhớ rất rõ ngày này vì ba ngày sau là sự cố “94” làm rung chuyển thế giới tiền điện tử. Ngân hàng trung ương và năm bộ khác đã cùng nhau ban hành một văn bản để ngăn ngừa rủi ro ICO và giá tiền điện tử đã giảm một nửa.

Vào ngày 1 tháng 9, tôi đã xem một video giới thiệu về Bitcoin trên một tài khoản công khai WeChat (tôi nghĩ đó là video của Vương Tử Như). Tôi rất tò mò về điều này, vì vậy tôi đã tải xuống Huobi và nạp 100 nhân dân tệ vào đó. Tôi đã thấy giá của Bitcoin , hơn 30.000 RMB, khiến tôi sợ, vì vậy tôi đã mua một số LTC. Vào thời điểm đó, có vẻ như khoảng 120 RMB cho mỗi LTC. Tôi đã dành cả đêm để theo dõi sự biến động của vài xu và một nhân dân tệ trong tài khoản của mình, và sự gia tăng giá của LTC. Xem mọi người trò chuyện trong nhiều nhóm tiền điện tử QQ. Sau khi xem cả đêm, bạn bè trong nhóm của tôi đều nói rằng giá sẽ tăng, nhưng tôi cảm thấy không đủ thú vị, vì vậy tôi đã nạp thêm vài nghìn nhân dân tệ. Vào thời điểm đó, Huobi vẫn sử dụng thẻ ngân hàng để nạp tiền. Sau một lâu rồi, tiền không về tài khoản của tôi, nên tôi hoảng loạn. Tôi nhờ bạn bè trong nhóm giúp đỡ và gọi đến bộ phận chăm sóc khách hàng. Sau một thời gian, tiền cuối cùng cũng về tài khoản của tôi, và sau đó tôi mua hết LTC lại.

Ngày 4 tháng 9, ngay khi ngân hàng trung ương ban hành một văn bản, giá của đồng tiền đã lao dốc. Tôi đã rất sợ hãi nên đã nhanh chóng bán lỗ và rời khỏi thị trường. Sau đó, tôi đã chứng kiến ​​giá của đồng tiền từ từ giảm một nửa. Vào thời điểm đó , các sàn giao dịch trong nước như Huobi không thể đăng ký được. Các sàn giao dịch trong nước và nước ngoài Chênh lệch giá rất lớn, làm giàu cho một nhóm người chuyển gạch.

Sau đó tôi rút tiền và quay lại trường, không vội vàng quay lại mua khi đáy (các nhà đầu tư mới chỉ biết chạy theo giá tăng và bán khi giá giảm), nhưng tôi vẫn chú ý đến các xu hướng trong vòng tròn tiền điện tử và thỉnh thoảng kiểm tra những gì mọi người đang thảo luận trong một số nhóm QQ. Đó là tháng 12, tháng điên rồ nhất của thị trường tăng giá. TRON trên Binance tăng hàng trăm lần và các đồng tiền khác cũng tăng gấp đôi. Bất kỳ mức nào dưới 50% đều không được coi là biến động. Tôi đã bị cám dỗ, và sau đó tôi đã nạp tiền. Vài nghìn đô la và sau đó là đủ loại hoạt động kỳ lạ nhằm theo đuổi sự lên xuống, theo dõi nhiều loại tiền tệ tăng vọt nhưng không kiếm được tiền.

Vào tháng 1 năm 2018, thị trường tăng giá bùng nổ đã kết thúc. Tôi đã đăng ký OKCoin và bắt đầu chơi với các hợp đồng. Tôi phải nói rằng nó thực sự thú vị. Đòn bẩy 20x, tăng gấp đôi, thanh lý, v.v. Tôi nhìn chằm chằm vào đường K và thức trắng đêm.

Giống như hầu hết những người chơi cờ bạc theo hợp đồng, cuối cùng tôi đã bị phá sản. Nhưng tôi phải nói rằng trải nghiệm này đã dạy cho tôi rất nhiều kiến ​​thức tài chính. Trước đây tôi thậm chí còn không nhận ra được K-line.

2. Định lượng

Sau nhiều đêm mất ngủ theo dõi thị trường, với tư cách là một sinh viên khoa học máy tính, tôi bắt đầu tự hỏi liệu có cách nào để giao dịch chương trình thay mình để tôi có thể ngủ ngon không.

Thực ra, tôi đã tìm thấy fmz (lúc đó gọi là botvs), nhưng lúc đó tôi còn quá mới, và sau một thời gian dài tôi vẫn không biết cách sử dụng nền tảng này nên tôi đã bỏ cuộc.

Sau đó, tôi bắt đầu viết robot bằng cách kết nối với OK API (github: https://github.com/ccyanxyz/okex) và viết một số chiến lược như đường trung bình động kép và lưới. Mặc dù tôi không kiếm được nhiều tiền, đó cũng là lúc tôi bước vào cánh cửa phân tích định lượng, tìm hiểu về nhiều chỉ số kỹ thuật khác nhau và học cách sử dụng thư viện talib. Sau đó, do nhiều việc ở trường nên tôi ngừng làm, robot cũng dừng lại, rồi lại quay về chế độ xem và vận hành thủ công, nhưng tần suất rất thấp, thỉnh thoảng tôi chỉ thực hiện một hoặc hai thao tác.

3. Sử dụng FMZ

Sau khi loanh quanh một hồi, cuối cùng tôi cũng quay lại fmz, nhưng vì đã có kinh nghiệm viết chiến lược riêng nên lần này tôi có thể bắt đầu với fmz rất nhanh. Tôi thấy rằng fmz đã kết nối với hầu hết các sàn giao dịch chính thống và đã thống nhất các hoạt động của giao dịch, tài khoản, v.v. Nó rất tiện lợi và dễ sử dụng. Bạn có thể viết mã và chạy nó ở mọi nơi. Đối với một người đã dành nhiều thời gian nỗ lực đóng gói thủ công việc trao đổi, Đối với những người sử dụng API, điều này giống như tìm được vị cứu tinh.

Tôi đã tìm thấy kho lưu trữ chiến lược công khai fmz trên GitHub (https://github.com/fmzquant/strategies). Giống như tìm thấy kho báu vậy. Tôi đã dành một hoặc hai đêm để xem qua tất cả các chiến lược, sao chép chúng và kiểm tra ngược lại chúng. Tôi đã đọc logic chiến lược và cố gắng cải thiện nó, nhưng tôi phải nói rằng tôi vẫn còn quá non. Sau khi đọc tất cả các chiến lược, tôi vẫn chưa viết được “cỗ máy in tiền”.

Sau đó, tôi bình tĩnh lại và suy nghĩ cẩn thận. Vòng tròn tiền điện tử hiện tại không còn là vòng tròn tiền điện tử của năm 2017 nữa. Sẽ không còn những câu chuyện thần thoại về 2000 nhân dân tệ đến 20 triệu nhân dân tệ nữa. Đối với một sinh viên nghèo như tôi, điều đó đã quá khó khăn kiếm được một khoản tiền lớn bằng cách đầu cơ vào tiền điện tử. Đó là một điều viển vông, vì vậy tôi đã từ bỏ việc theo dõi giá của đồng tiền và đuổi theo sự tăng giảm, và cũng từ bỏ ý tưởng không thực tế là cố gắng viết một “cỗ máy in tiền” chiến lược, và bắt đầu đăng quảng cáo trong khu vực crowdsourcing trên FMZ. Nhận đơn đặt hàng và giúp mọi người viết chiến lược, và kiếm được một số tiền khó kiếm một cách trung thực.

Cho đến nay, tôi đã viết nhiều chiến lược cho người khác. Quá trình này thực sự khá quanh co. Mọi người thường đến với tôi với một số ý tưởng hoặc chiến lược chưa trưởng thành mà không thể kiếm được tiền. Nhiều người cũng không thể mô tả rõ ràng nhu cầu của mình và cuối cùng thực hiện Sau Sau khi thử nghiệm chiến lược này nhiều lần, tôi thấy rằng nó không kiếm được tiền và tôi phải tranh luận với những người khác, vì vậy tôi đã thay đổi quảng cáo của mình thành quảng cáo bên dưới, đặt ra các quy tắc và tiêu chuẩn để chấp nhận đơn hàng và khiến bản thân bớt lo lắng hơn.

Ban đầu, tần suất đặt hàng của tôi ngày càng thấp hơn, vì tôi có rất nhiều việc ở trường phải làm và tôi đã từ chối nhiều người. Nhưng vào tháng 2, fcoin đã chạy trốn và lấy đi hầu hết tài sản của tôi (nhưng tôi không có nhiều tiền). Vì vậy, gần đây tôi phải bắt đầu nhận đơn đặt hàng từ mọi người và kiếm tiền.

Thư viện chiến lược của tôi:

Hôm nay, khi tôi đang duyệt fmz, tôi thấy một điều hơi vô lý. Một “công ty” nào đó đã chấp nhận đơn hàng thậm chí còn đạo nhái quảng cáo nhận đơn hàng của tôi. Sau đây là quảng cáo của anh ta:

Vì vậy, tôi đã thay đổi “sự quen thuộc” thành “sự thành thạo”, sau đó hạ giá khởi điểm xuống (tôi ngửi thấy mùi cạnh tranh khốc liệt).

Tại sao tôi không nói rằng tôi “thành thạo” FMZ? Tôi không biết bạn có nghe câu nói đùa “Không ai có thể thành thạo C++” không, hahahaha, vì vậy tôi quen viết “quen thuộc” trong sơ yếu lý lịch của tôi và các kỹ năng giới thiệu liên quan khác.

4. Một ý tưởng kinh doanh chênh lệch giá

Gần đây tôi đã nghiên cứu một số chiến lược kinh doanh chênh lệch giá, bao gồm phòng ngừa giao ngay, kinh doanh chênh lệch giá giao ngay tương lai, kinh doanh chênh lệch giá chéo kỳ, kinh doanh chênh lệch giá tam giác, v.v. Hai ngày nay, tôi đã thấy một ý tưởng kinh doanh chênh lệch giá mà trước đây tôi chưa từng thấy (có thể là tôi thiếu hiểu biết), vì vậy Tôi muốn chia sẻ nó ở đây.

Giả sử có một số cặp giao dịch trên thị trường ngoại hối với mức giá như sau:

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

Trong trường hợp này, bỏ qua phí giao dịch, nếu ban đầu tôi có 1 USD, trước tiên tôi có thể chuyển đổi nó thành Bảng Anh, sau đó thành Franc Pháp, rồi thành USD. Trong quá trình này, 1 USD trở thành 1x0,5x10,0x0,21= 1,05 USD, lợi nhuận 0,05 USD.

Ví dụ trên có cơ hội kinh doanh chênh lệch giá, nhưng ví dụ sau thì không:

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

Vậy trong một thị trường lớn như vậy, làm sao chúng ta xác định được liệu có cơ hội kinh doanh chênh lệch giá hay không?

Bài toán này có thể được trừu tượng hóa thành bài toán đường đi ngắn nhất của đồ thị có hướng. Mỗi loại tiền tệ được sử dụng làm đỉnh và giá hối đoái được sử dụng làm trọng số cạnh để tạo thành đồ thị có hướng. Sau đó, bắt đầu từ một đỉnh (như USD), Tìm một con đường tròn có thể được kinh doanh chênh lệch giá.

Ví dụ trên xuất phát từ một bài toán OJ (http://poj.org/problem?id=2240) và bạn có thể tìm thấy giải pháp tại đây: http://hehejun.blogspot.com/2018/10/poj2240- arbitrage. html.

Vì vậy, gần đây tôi tự hỏi liệu mình có thể đưa ra một chiến lược để nắm bắt các cơ hội kinh doanh chênh lệch giá và tiến hành kinh doanh chênh lệch giá hay không. Tôi đã tìm kiếm trên GitHub và thấy rằng nó đã được triển khai: https://github.com/wardbradt/peregrine. Dự án này giải quyết vấn đề chênh lệch giá này vấn đề. Nó được trừu tượng hóa thành bài toán đường đi ngắn nhất của đồ thị có hướng với các cạnh có trọng số âm. Giải pháp cho bài toán OJ được đề cập ở trên là khác nhau. Đường đi ngắn nhất của đồ thị có hướng với các cạnh có trọng số âm sử dụng thuật toán Bellman-Ford. Những người quan tâm có thể nghiên cứu nó. Nghiên cứu.

Tôi cũng đã thực hiện một triển khai đơn giản trên fmz, tham khảo các ý tưởng giải pháp của bài toán OJ. Nó vẫn chưa hoàn thành và tính chính xác không thể được đảm bảo. Tôi đăng nó ở đây để kích thích thảo luận:

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. Tóm tắt

Tóm lại, fmz là một nền tảng tốt, dễ sử dụng và đáng tin cậy, kiếm được một khoản tiền lớn một cách lặng lẽ. Tôi hy vọng fmz sẽ ngày càng tốt hơn. Còn tôi, tôi sẽ tiếp tục học lên thạc sĩ sau khi tốt nghiệp (cũng trong lĩnh vực blockchain) lĩnh vực), và sau đó tiếp tục làm việc trên fmz. Kiếm chút tiền tiêu vặt.

(Viết vào chiều ngày 7 tháng 3 năm 2020. Mình vừa viết xong chiến lược cho một người và thấy số dư FMZ của mình không đủ nên vào đây để gian lận chút tiền bản quyền hahahaha)

WeChat: C790266922