Biểu đồ giao dịch trọng tài hàng hóa tương lai và điểm dựa trên dữ liệu cơ bản FMZ

Tác giả:Tốt, Tạo: 2020-06-17 10:59:26, Cập nhật: 2023-11-01 20:28:10

img

Tóm lại

Một số người có thể không quen thuộc với từ arbitrage, nhưng arbitrage rất phổ biến trong cuộc sống thực. Ví dụ, chủ cửa hàng tiện lợi mua một chai nước khoáng từ thị trường bán buôn với giá 0,5 nhân dân tệ, sau đó bán nó trong cửa hàng với giá 1 nhân dân tệ, và cuối cùng kiếm được sự khác biệt 0,5 nhân dân tệ. Quá trình này thực sự tương tự như trọng tài. Trọng tài trên thị trường tài chính tương tự như nguyên tắc này, ngoại trừ việc có nhiều hình thức trọng tài.

Trọng tài là gì?

Trong thị trường hợp đồng tương lai hàng hóa, về lý thuyết, giá hợp đồng Apple được giao vào tháng 5 trừ giá hợp đồng Apple được giao vào tháng 10, kết quả nên gần 0 hoặc ổn định trong một phạm vi giá nhất định. Nhưng trên thực tế, do thời tiết, nguồn cung và nhu cầu thị trường và các yếu tố khác, giá hợp đồng ngắn hạn và dài hạn sẽ bị ảnh hưởng ở mức độ khác nhau trong một khoảng thời gian, và sự khác biệt giá cũng sẽ dao động đáng kể.

Nhưng trong mọi trường hợp, sự khác biệt giá cuối cùng sẽ trở lại một phạm vi giá nhất định, sau đó nếu sự khác biệt giá lớn hơn phạm vi này, bán ngắn hợp đồng tháng 5, và mua dài hợp đồng tháng 10 cùng một lúc, bán ngắn sự khác biệt để kiếm lợi nhuận; nếu sự khác biệt giá nhỏ hơn phạm vi này, mua dài hợp đồng tháng 5, cùng một lúc bán ngắn hợp đồng tháng 10, kiếm lợi nhuận từ việc mua dài chênh lệch. Đây là sự điều chỉnh giữa thời gian thông qua việc mua và bán cùng một loại nhưng tháng giao hàng khác nhau.

Ngoài sự điều chỉnh giữa thời gian, còn có sự điều chỉnh giữa thị trường như mua đậu nành từ các nước xuất khẩu trong khi bán đậu nành từ các nước nhập khẩu, hoặc bán đậu nành từ các nước xuất khẩu và nhập khẩu đậu nành từ các nước nhập khẩu; mua nguyên liệu, quặng sắt phía trước và bán dây kết thúc phía sau Sắt, hoặc bán nguyên liệu sắt phía trước trong khi mua điều chỉnh quặng kết thúc phía sau, v.v.

Điều gì là tiền tương lai và điểm sự điều chỉnh

Mặc dù các phương pháp chênh lệch giá trên thực sự là chênh lệch giá, nhưng chúng không phải là chênh lệch giá thuần túy. chúng về cơ bản là đầu cơ rủi ro. Cách đầu cơ này là kiếm lợi nhuận bằng cách mua dài hoặc bán ngắn chênh lệch giá. Mặc dù chênh lệch giá đã ổn định trong hầu hết thời gian, có thể có tình huống thị trường mà chênh lệch giá không quay trở lại trong một thời gian dài.

Nguyên tắc cốt lõi của tương lai và điểm trọng tài là cùng một hàng hóa chỉ có thể có một giá tại cùng một thời điểm. Hợp đồng tương lai sẽ trở thành một điểm khi thời gian giao hàng đạt đến, vì vậy việc trả giá sẽ bị buộc khi thời gian giao hàng hợp đồng gần. Điều này hoàn toàn khác với trọng tài liên thời gian.

  • Giá giao dịch tương lai - Giá giao dịch tại chỗ

Tính năng lớn nhất của tương lai và điểm tùy chọn nhị phân là không có rủi ro về lý thuyết, chủ yếu dựa trên trạng thái chênh lệch để tính phạm vi lợi nhuận. Nếu chênh lệch quá lớn, bạn có thể mua mua và mua tương lai cùng một lúc, chờ đợi chênh lệch trở lại bằng không, bạn có thể đóng vị trí ở cả hai bên của tương lai và điểm, và kiếm lợi nhuận từ chênh lệch. Có hai phương pháp chính: vị trí đóng gấp đôi tùy chọn nhị phân và giao dịch hợp đồng tùy chọn nhị phân.

Hàng hóa thời hạn tương lai và thời điểm kênh điều chỉnh

Nói một cách đơn giản, liên kết phức tạp nhất là giao dịch tại chỗ của hàng hóa, liên quan đến một loạt các vấn đề như biên lai kho, thuế v.v. Trước hết, cần một công ty liên quan đến phạm vi đầu tư. Nếu đó là tài khoản tương lai phân phối hợp đồng, nó phải là một pháp nhân doanh nghiệp. Nếu cần giao dịch tại chỗ gấp đôi, cần một kênh bán hàng đáng tin cậy. Có nhiều trang web giao dịch tại chỗ trực tuyến.

Cần lưu ý rằng giao dịch tại chỗ thường có thuế giá trị gia tăng từ 17% đến 20%, vì vậy nếu đó là một sự phân biệt giá trị gần hai lần, bạn cần phải bán ngắn tương lai 1,2 đến 1,25 lần sau khi mua tại chỗ. Trong trường hợp phân phối hợp đồng, bạn cần phải bán ngắn cùng tỷ lệ tương lai sau khi mua tại chỗ, và bạn cũng cần phải xem xét chi phí giao dịch, vận chuyển và kho. Tất nhiên, tiền đề của tất cả điều này là mức chênh lệch giá hiện tại đủ lớn và có đủ giới hạn.

Ngoài ra, do sự tồn tại của vàng (T + D) trên Sàn giao dịch vàng Thượng Hải, sự điều chỉnh hiện tại trong thời kỳ vàng không chỉ có thể là điều chỉnh tích cực, mà còn có thể là các hoạt động điều chỉnh ngược mà không cần cho thuê vàng.

Làm thế nào để có được dữ liệu tại chỗ và phân phối

Có rất nhiều loại dữ liệu tại chỗ và chênh lệch trực tuyến, hầu hết trong số đó được trình bày dưới dạng bảng, rõ ràng không phù hợp để phân tích và đánh giá thị trường.FMZ.COMChỉ cần gọi một hàm để có được giá giao dịch và giá chênh lệch của mỗi loại, và hỗ trợ dữ liệu lịch sử từ năm 2016 đến nay.

# Backtest configuration
'''backtest
start: 2020-06-01 00:00:00
end: 2020-06-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
'''

# Strategy entry
def main():
    while True:
        ret = exchange.GetData("GDP")  # Calling GDP data
        Log(ret)  # Print data
        Sleep(1000 * 60 * 60 * 24 * 30)

Quay lại kết quả

{
     "Quarterly": "Q1 2006",
     "GDP": {
         "Absolute Value (100 million yuan)": 47078.9,
         "YoY Growth": 0.125
     },
     "primary industry": {
         "Absolute Value (100 million yuan)": 3012.7,
         "YoY Growth": 0.044
     },
     "Tertiary Industry": {
         "Absolute Value (100 million yuan)": 22647.4,
         "YoY Growth": 0.131
     },
     "Secondary industry": {
         "Absolute Value (100 million yuan)": 21418.7,
         "YoY Growth": 0.131
     }
}

Thực hiện biểu đồ giao ngay và phân phối

Hãy sử dụng nền tảng FMZ để định lượng và thực hiện giá giao ngay và giá chênh lệch dưới dạng biểu đồ.FMZ.COM), bấm Dashboard, và bấm Strategy Library + New Strategy. Chọn Python trong menu thả xuống ở góc trên bên trái và điền tên của chiến lược.

Bước 1: Viết khung chiến lược

# Strategy main function
def onTick():
     pass


# Strategy entrance
def main():
     while True: # Enter loop mode
         onTick() # execution strategy main function
         Sleep(1000 * 60 * 60 * 24) # Strategy sleep for one day

Khung chiến lược có hai chức năng,mainchức năng là lối vào của chiến lược,mainchức năng là xử lý trước khi giao dịch, chương trình sẽ bắt đầu từmainchức năng, và sau đó nhập chế độ vòng lặp vô hạn, lặp đi lặp lại thực hiệnonTickchức năng,onTickchức năng chính của chiến lược, chủ yếu là thực hiện mã cốt lõi.

Bước 2: Thêm chức năng biểu đồ

# Global variables
# Futures and Spots chart
cfgA = {
    "extension": {
        "layout":'single',
        "col": 6,
        "height": "500px",
    },
    "title": {
        "text": "futures and spots chart"
    },
    "xAxis": {
        "type": "datetime"
    },
    "series": [{
        "name": "Futures Price",
        "data": [],
    }, {
        "name": "Spot Price",
        "data": [],
    }
    ]
}
# Spread chart
cfgB = {
    "extension": {
        "layout":'single',
        "col": 6,
        "height": "500px",
    },
    "title": {
        "text": "Spread chart"
    },
    "xAxis": {
        "type": "datetime"
    },
    "series": [{
        "name": "Spread Price",
        "data": [],
    }]
}
chart = Chart([cfgA, cfgB]) # Create a chart object


# Strategy main function
def onTick():
    chart.add(0, []) # draw chart
    chart.add(1, []) # draw chart
    chart.add(2, []) # draw chart
    chart.update([cfgA, cfgB]) # update chart


# Strategy entrance
def main():
    LogReset() # Clear the previous log information before running
    chart.reset() # Clear the previous chart information before running
    while True: # Enter loop mode
        onTick() # execution strategy main function
        Sleep(1000 * 60 * 60 * 24) # Strategy sleep for one day

Trong chiến lược này, tổng cộng 2 biểu đồ đã được tạo ra và được sắp xếp cạnh nhau.cfgAbên trái là biểu đồ hiện tại, bao gồm giá tương lai và giá giao ngay, vàcfgBsau đó gọi nền tảng FMZ xây dựng trong thư viện vẽ đường Python để tạo ra một đối tượng biểu đồ. cuối cùng dữ liệu trong biểu đồ được cập nhật trong thời gian thực trongonTick function.

Bước 3: Nhận dữ liệu

last_spot_price = 0 # Save the last valid spot price
last_spread_price = 0 # Save the last valid spread price

def onTick():
    global last_spread_price, last_spot_price # import global variables
    exchange.SetContractType("i888") # Subscribe to futures varieties
    futures = _C(exchange.GetRecords)[-1] # Get the latest K line data
    futures_ts = futures.Time # Get the latest K-line futures timestamp
    futures_price = futures.Close # Get the latest K-line closing price

    spot = exchange.GetData("SPOTPRICE") # Get spot data
    spot_ts = spot.Time # Get spot timestamp
    if 'iron ore' in spot.Data:
        spot_price = spot.Data['iron ore']
        last_spot_price = spot_price
    else:
        spot_price = last_spot_price

    spread = exchange.GetData("spread") # Get spread data
    spread_ts = spread.Time # Get spread timestamp
    if 'iron ore' in spread.Data:
        spread_price = spread.Data['iron ore']
        last_spread_price = spread_price
    else:
        spread_price = last_spread_price

Tổng cộng, chúng ta cần có được ba loại dữ liệu: giá tương lai, giá ngay lập tức và giá chênh lệch.SetContractTypechức năng để trực tiếp đăng ký biểu tượng tương lai, và sau đó sử dụngGetRecordsĐối với giá giao ngay và chênh lệch, bạn có thể sử dụng phương pháp được giới thiệu trước đây, sử dụngGetDatachức năng để gọi mã dữ liệu cơ bản, và trả về dữ liệu từ điển có chứa dấu thời gian.

Hiển thị biểu đồ

img img img

Nhận mã chiến lược đầy đủ

# fmz@b72930603791887d7452f25f23a13bde
'''backtest
start: 2017-01-01 00:00:00
end: 2020-06-01 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
'''


# Global variables
# Futures and Spots chart
cfgA = {
    "extension": {
        "layout":'single',
        "col": 6,
        "height": "500px",
    },
    "title": {
        "text": "futures and spots chart"
    },
    "xAxis": {
        "type": "datetime"
    },
    "series": [{
        "name": "Futures Price",
        "data": [],
    }, {
        "name": "Spot Price",
        "data": [],
    }
    ]
}
# spread chart
cfgB = {
    "extension": {
        "layout":'single',
        "col": 6,
        "height": "500px",
    },
    "title": {
        "text": "spread chart"
    },
    "xAxis": {
        "type": "datetime"
    },
    "series": [{
        "name": "spread Price",
        "data": [],
    }]
}
last_spot_price = 0 # Save the last valid spot price
last_spread_price = 0 # Save the last valid spread price
chart = Chart([cfgA, cfgB]) # Create a chart object

def onTick():
    global last_spread_price, last_spot_price # import global variables
    exchange.SetContractType("i888") # Subscribe to futures varieties
    futures = _C(exchange.GetRecords)[-1] # Get the latest candlestick data
    futures_ts = futures.Time # Get the latest K-line futures timestamp
    futures_price = futures.Close # Get the latest K-line closing price
    Log('Future price:', futures_ts, futures_price)

    spot = exchange.GetData("SPOTPRICE") # Get spot data
    spot_ts = spot.Time # Get spot timestamp
    if 'iron ore' in spot.Data:
        spot_price = spot.Data['iron ore']
        last_spot_price = spot_price
    else:
        spot_price = last_spot_price
    Log('Spot price:', spot_ts, spot_price)

    spread = exchange.GetData("spread") # Get spread data
    spread_ts = spread.Time # Get spread timestamp
    if 'iron ore' in spread.Data:
        spread_price = spread.Data['iron ore']
        last_spread_price = spread_price
    else:
        spread_price = last_spread_price
    Log('spread price:', spread_ts, spread_price)

    chart.add(0, [futures_ts, futures_price]) # draw chart
    chart.add(1, [spot_ts, spot_price]) # draw chart
    chart.add(2, [spread_ts, spread_price]) # draw chart
    chart.update([cfgA, cfgB]) # update chart
    Log('---------')


# Strategy entrance
def main():
    LogReset() # Clear the previous log information before running
    chart.reset() # Clear the previous chart information before running
    while True: # Enter loop mode
        onTick() # execution strategy main function
        Sleep(1000 * 60 * 60 * 24) # Strategy sleep for one day

Chiến lược hoàn chỉnh đã được đăng trên nền tảng FMZ (FMZ.COM) chiến lược quảng trường, nó có thể được sử dụng trực tiếp bằng cách nhấp vào liên kết bên dưới.

https://www.fmz.com/strategy/211941

Kết thúc

Điều khoản trọng tài không phức tạp như tưởng tượng. Nó không đòi hỏi quá nhiều kiến thức về lý thuyết tài chính, cũng không đòi hỏi quá nhiều mô hình toán học hoặc thống kê phức tạp. Điều khoản trọng tài về cơ bản là để kiếm lợi nhuận từ giá không hợp lý đến lợi nhuận hợp lý. Điều kiện thị trường thay đổi mỗi năm. Đối với các nhà giao dịch, tốt nhất là không sao chép dữ liệu lịch sử sang hiện tại, mà là kết hợp dữ liệu hiện tại để nghiên cứu xem giá chênh lệch có hợp lý hay không.


Có liên quan

Thêm nữa