ACTUS và Marlowe

Hướng dẫn này giới thiệu ý tưởng chung về các tiêu chuẩn ACTUS đối với việc trình bày theo thuật toán của các hợp đồng tài chính, cùng với các ví dụ được triển khai trong Marlowe.

ACTUS

Quỹ Nghiên cứu Tài chính ACTUS https://www.actusfrf.org đã tạo ra một tiêu chuẩn cho các hợp đồng tài chính, được phân loại theo phương pháp phân loại và được mô tả trong một đặc điểm kỹ thuật chi tiết .

Các tiêu chuẩn ACTUS được xây dựng dựa trên sự hiểu biết rằng hợp đồng tài chính là các thỏa thuận pháp lý giữa hai (hoặc nhiều) đối tác về việc trao đổi các dòng tiền trong tương lai. Về mặt lịch sử, các thỏa thuận pháp lý như vậy được mô tả bằng ngôn ngữ tự nhiên dẫn đến sự mơ hồ và đa dạng giả tạo. Để đáp lại, các tiêu chuẩn ACTUS xác định hợp đồng tài chính bằng một tập hợp các điều khoản hợp đồng và các chức năng xác định ánh xạ các điều khoản này với các nghĩa vụ thanh toán trong tương lai. Qua đó, có thể mô tả phần lớn các công cụ tài chính thông qua một bộ tương ứng gồm hơn 30 Loại hợp đồng hoặc mẫu mô-đun.

Các thông số kỹ thuật ACTUS cung cấp nhiều bài tập để triển khai trong Marlowe và chúng tôi minh họa một cách tiếp cận vấn đề này trong ví dụ sau.

Ví dụ về trái phiếu phiếu giảm giá đơn giản

Trái phiếu không phiếu giảm giá là một chứng khoán nợ không trả lãi (phiếu giảm giá) nhưng được phát hành với giá chiết khấu, tạo ra lợi nhuận khi đáo hạn khi trái phiếu được mua lại cho đủ mệnh giá của nó.

Ví dụ, một người investorcó thể mua một trái phiếu có giá 1000 Lovelace với chiết khấu 15%. Cô ấy trả 850 Lovelace cho công ty phát hành trái phiếu trước thời gian bắt đầu (start time), tại đây 1672531200(2023-01-01 00:00:00 GMT).

Một tháng sau, sau ngày đáo hạn (maturity date), thời gian 1675209600 (2023-02-01 00:00:00 GMT) tại đây, nhà đầu tư có thể đổi trái phiếu lấy danh nghĩa đầy đủ của nó, tức là 1000 Lovelace.

When [
  (Case
     (Deposit
        "investor"
        "investor" ada
        (Constant 850))
     (Pay
        "investor"
        (Party "issuer") ada
        (Constant 850)
        (When [
           (Case
              (Deposit
                 "investor"
                 "issuer" ada
                 (Constant 1000))
              (Pay
                 "investor"
                 (Party "investor") ada
                 (Constant 1000)
                 Close))
            ]
            1675209600
            Close)))
     ]
     1672531200
     Close

Hợp đồng này có một nhược điểm đáng kể. Khi người đó investorđã đặt cọc 850 Lovelace, nó sẽ được thanh toán ngay lập tức cho issuer(nếu người investorđó không đầu tư đúng lúc, hợp đồng sẽ kết thúc). Sau đó, hai kết quả có thể xảy ra

  • số issuertiền gửi 1000 Lovelace vào investortài khoản của, và sau đó ngay lập tức được thanh toán investorđầy đủ;

  • Nếu investorcô không đặt cọc, thì hợp đồng sẽ được đóng và tất cả số tiền trong hợp đồng sẽ được hoàn trả, nhưng không có tiền trong hợp đồng vào thời điểm này, vì vậy investorcô sẽ mất tiền.

Làm thế nào chúng ta có thể tránh vấn đề issuermặc định này?

Có ít nhất hai cách để giải quyết vấn đề này: chúng ta có thể yêu cầu người issuer đặt cọc toàn bộ số tiền trước khi hợp đồng bắt đầu, nhưng điều đó sẽ đánh bại đối tượng phát hành trái phiếu ngay từ đầu. Thực tế hơn, chúng tôi có thể yêu cầu một bên thứ ba làm người bảo lãnh cho thỏa thuận.

Bài tập

Đưa ra một biến thể của zeroCouponBondhợp đồng trong đó cần thiết issuerđể đặt toàn bộ giá trị của khoản tiền trước khi trái phiếu được phát hành.

Bài tập

Đưa ra một biến thể của zeroCouponBondhợp đồng cũng bao gồm guarantorngười thanh toán đầy đủ trước khi trái phiếu được phát hành và người sẽ thanh toán cho bên đối tác đó nếu nhà phát hành vỡ nợ; nếu người phát hành thực hiện thanh toán đúng hạn, thì người bảo lãnh sẽ thu hồi tiền của họ.

Ví dụ về trái phiếu phiếu giảm giá được đảm bảo

Trái phiếu phức tạp hơn này liên quan đến một investorngười đặt cọc 1000 Lovelace, ngay lập tức được thanh toán cho issuer. Sau issuer đó phải trả lãi 10 Lovelace mỗi tháng. Khi đáo hạn, nhà đầu tư sẽ nhận lại tiền lãi cộng với toàn bộ giá trị của trái phiếu.

couponBondFor3Month12Percent =
    -- investor deposits 1000 Lovelace
    When [ Case (Deposit "investor" "investor" ada (Constant 1000))
        -- and pays it to the issuer
        (Pay "investor" (Party "issuer") ada (Constant 1000)
            -- after 1 month expect to receive 10 Lovelace interest
            (When [ Case (Deposit "investor" "issuer" ada (Constant 10))
                -- and pay it to the investor
                (Pay "investor" (Party "investor" ) ada (Constant 10)
                    -- same for 2nd month
                    (When [ Case (Deposit "investor" "issuer" ada (Constant 10))
                        (Pay "investor" (Party "investor" ) ada (Constant 10)
                            -- after maturity date investor
                            -- expects to receive notional + interest payment
                            (When [ Case (Deposit "investor" "issuer" ada (Constant 1010))
                                (Pay "investor" (Party "investor" ) ada (Constant 1010) Close)]
                            1680307200 -- 2023-04-01 00:00:00 GMT
                            Close))]
                    1677628800 -- 2023-03-01 00:00:00 GMT
                    Close))]
            1675209600 -- 2023-02-01 00:00:00 GMT
            Close))]
    1672531200 -- 2023-01-01 00:00:00 GMT
    Close

Bài tập

Đưa ra một biến thể của zcouponBondFor3Month12Percenthợp đồng cũng bao gồm guarantorngười thanh toán đầy đủ trước khi trái phiếu được phát hành và người sẽ thanh toán cho bên đối tác đó nếu nhà phát hành vỡ nợ; nếu người phát hành thực hiện thanh toán đúng hạn, thì người bảo lãnh sẽ thu hồi tiền của họ.

Last updated