Chuyển đến nội dung
Tất cả tài liệu trong thư viện

Lập lịch hết hạn tín hiệu bằng công cụ hết hạn của Lean

Bài viết Strategy library · Tác giả: QuantConnect

Tóm tắt

Ví dụ về khung Lean này cho thấy Mô hình Alpha có thể dùng công cụ hỗ trợ hết hạn để đặt thời điểm đóng các nhận định giao dịch được tạo ra. Thuật toán dùng nhóm cổ phiếu US được chọn thủ công, gồm SPY, dữ liệu theo giờ, phân bổ danh mục theo tỷ trọng bằng nhau, khớp lệnh tức thời và giới hạn mức sụt giảm cho từng mã. Mô hình Alpha chờ đến giờ cập nhật đã lên lịch rồi mới tạo thêm nhận định.

Ví dụ chọn khoảng hết hạn theo ngày trong tuần: một tháng, cuối tháng, cuối tuần hoặc cuối ngày. Ví dụ cũng ghi nhật ký thời điểm đóng và ngày trong tuần của nhận định được tạo, minh họa cách kiểm tra lịch trình. Đây là cơ chế của khung phần mềm chứ không phải tín hiệu giao dịch đã được kiểm thử: mô hình luôn gán hướng đi lên, và tài liệu không báo cáo hiệu suất đầu tư hay bằng chứng rằng lựa chọn thời điểm có khả năng sinh lời. Khoảng ngày hẹp và nhóm chỉ có một mã trong ví dụ cũng giới hạn những gì có thể suy ra. Giá trị của ví dụ là minh họa cách triển khai quản lý thời hạn nhận định, không phải khuyến nghị chiến lược hoàn chỉnh.

Ý chính

  • Mô hình Alpha có thể dùng công cụ hết hạn để xác định khi nào các nhận định được tạo sẽ đóng.
  • Ví dụ chọn khoảng hết hạn theo ngày hiện tại trong tuần.
  • Thời điểm cập nhật kế tiếp được lên lịch giúp mô hình không phát hành nhận định ở mỗi lần cập nhật dữ liệu.
  • Có thể ghi nhật ký thời điểm đóng của nhận định để kiểm tra cách hoạt động của thời hạn.
  • Ví dụ minh họa cách dùng khung phần mềm và không cung cấp bằng chứng về hiệu suất giao dịch.

Thẻ

Toàn văn
# ExpiryHelperAlphaModelFrameworkAlgorithm


# ExpiryHelperAlphaModelFrameworkAlgorithm









Expiry Helper framework algorithm uses Expiry helper class in an Alpha Model

Expiry Helper algorithm uses Expiry helper class in an Alpha Model

## Source (Apache-2.0)

```python
# QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
# Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from AlgorithmImports import *

### <summary>
### Expiry Helper algorithm uses Expiry helper class in an Alpha Model
### </summary>
class ExpiryHelperAlphaModelFrameworkAlgorithm(QCAlgorithm):
    '''Expiry Helper framework algorithm uses Expiry helper class in an Alpha Model'''

    def initialize(self) -> None:
        ''' Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized.'''

        # Set requested data resolution
        self.universe_settings.resolution = Resolution.HOUR

        self.set_start_date(2013,10,7)   #Set Start Date
        self.set_end_date(2014,1,1)      #Set End Date
        self.set_cash(100000)           #Set Strategy Cash

        symbols = [ Symbol.create("SPY", SecurityType.EQUITY, Market.USA) ]

        # set algorithm framework models
        self.set_universe_selection(ManualUniverseSelectionModel(symbols))
        self.set_alpha(self.ExpiryHelperAlphaModel())
        self.set_portfolio_construction(EqualWeightingPortfolioConstructionModel())
        self.set_execution(ImmediateExecutionModel())
        self.set_risk_management(MaximumDrawdownPercentPerSecurity(0.01))

        self.insights_generated += self.on_insights_generated

    def on_insights_generated(self, s: IAlgorithm, e: GeneratedInsightsCollection) -> None:
        for insight in e.insights:
            self.log(f"{e.date_time_utc.isoweekday()}: Close Time {insight.close_time_utc} {insight.close_time_utc.isoweekday()}")

    class ExpiryHelperAlphaModel(AlphaModel):
        _next_update = None
        _direction = InsightDirection.UP

        def update(self, algorithm: QCAlgorithm, data: Slice) -> list[Insight]:
            if self._next_update and self._next_update > algorithm.time:
                return []

            expiry = Expiry.END_OF_DAY

            # Use the Expiry helper to calculate a date/time in the future
            self._next_update = expiry(algorithm.time)

            weekday = algorithm.time.isoweekday()

            insights = []
            for symbol in data.bars.keys():
                # Expected CloseTime: next month on the same day and time
                if weekday == 1:
                    insights.append(Insight.price(symbol, Expiry.ONE_MONTH, self._direction))
                # Expected CloseTime: next month on the 1st at market open time
                elif weekday == 2:
                    insights.append(Insight.price(symbol, Expiry.END_OF_MONTH, self._direction))
                # Expected CloseTime: next Monday at market open time
                elif weekday == 3:
                    insights.append(Insight.price(symbol, Expiry.END_OF_WEEK, self._direction))
                # Expected CloseTime: next day (Friday) at market open time
                elif weekday == 4:
                    insights.append(Insight.price(symbol, Expiry.END_OF_DAY, self._direction))

            return insights

```

Hiển thị toàn văn kèm ghi nguồn theo giấy phép của tài liệu gốc. Giấy phép: Apache-2.0

Bản tóm tắt này do tác nhân nghiên cứu của Stratmill biên soạn từ tài liệu gốc; đây không phải bản sao của tài liệu.