Python có đủ cho định lượng không?

Quỹ toàn cầu đa chiến lược đang tuyển dụng một nhà phát triển định lượng cho nhóm HK của họ

Vai diễn. -

  • Một thành viên chủ chốt của nhóm phát triển, xây dựng và nâng cao các thành phần chính cho bàn làm việc có hệ thống
  • Một vai trò có khả năng chạm đến nhiều khía cạnh của giao dịch điện tử và thuật toán, kiểm tra lại và hệ thống quản lý dữ liệu
  • Làm việc với các nhà giao dịch và nhà định lượng để triển khai, hỗ trợ và chạy các chiến lược
  • Xây dựng và hỗ trợ phần mềm khung giao dịch
  • Phát triển và hỗ trợ các ứng dụng nguồn cấp dữ liệu liên quan
  • Hỗ trợ các ứng dụng cơ sở hạ tầng đặc biệt khác nhau, quy trình, cơ sở dữ liệu, công cụ kiểm soát và giám sát sản xuất

Yêu cầu. -

  • Hơn 3 năm kinh nghiệm chuyên môn trong vai trò phù hợp với bàn giao dịch tại văn phòng phía trước mong muốn
  • Kỹ năng OOP xuất sắc trong lập trình C# / Windows cần thiết
  • Kinh nghiệm Python tuyệt vời cần thiết
  • Kiến thức cơ sở dữ liệu/SQL tốt
  • Kiến thức về trình xử lý nguồn cấp dữ liệu thị trường, nguồn cấp dữ liệu thực thi và hệ thống thời gian thực mong muốn
  • Người chơi đồng đội mạnh mẽ
  • Kinh nghiệm làm việc trong một quy trình phát triển liên tục trưởng thành rất được mong đợi
  • Kỹ năng giao tiếp mạnh mẽ cần thiết

Ứng dụng. -

Vui lòng gửi sơ yếu lý lịch PDF tới quants@ekafinance. com

Đúng là bạn có thể thuê một lập trình viên có năng lực thuê ngoài phần mã hóa chiến lược của mình nhưng sau này sẽ rất cồng kềnh khi bạn phải điều chỉnh chiến lược của mình theo kịch bản thị trường thay đổi

Trong bài viết này, chúng tôi đề cập đến những điều sau đây

  • Chọn ngôn ngữ lập trình
  • Tại sao nên sử dụng Python để giao dịch?
  • Mức độ phổ biến của Python qua các năm
  • Lợi ích và hạn chế của Python trong giao dịch thuật toán
  • Python so với. C ++ so với. r
  • Các ứng dụng của Python trong Tài chính
  • Viết mã bằng Python để giao dịch
  • Hướng dẫn cài đặt cho Python
  • Thư viện Python phổ biến hay còn gọi là Gói Python
  • Làm việc với dữ liệu trong Python
  • Tạo chiến lược giao dịch mẫu và kiểm tra lại bằng Python
  • Đánh giá chiến lược giao dịch mẫu
  • Cách bắt đầu với Python trong Giao dịch

Chọn ngôn ngữ lập trình

Trước khi tìm hiểu các khái niệm cốt lõi của Python và ứng dụng của nó trong tài chính cũng như sử dụng Python để kinh doanh, hãy tìm hiểu lý do tại sao chúng ta nên học Python

Có kiến ​​thức về một ngôn ngữ lập trình phổ biến là nền tảng để trở thành một nhà giao dịch thuật toán chuyên nghiệp. Với sự tiến bộ nhanh chóng của công nghệ mỗi ngày, các lập trình viên khó có thể học hết tất cả các ngôn ngữ lập trình

Một trong những câu hỏi phổ biến nhất mà chúng tôi nhận được tại QuantInsti là

“Tôi nên học ngôn ngữ lập trình nào cho giao dịch thuật toán?”

Câu trả lời cho câu hỏi này là không có gì giống như ngôn ngữ “TỐT NHẤT” cho giao dịch thuật toán. Có nhiều khái niệm quan trọng được xem xét trong toàn bộ quá trình giao dịch trước khi chọn ngôn ngữ lập trình

  • Giá cả
  • hiệu suất
  • khả năng phục hồi
  • tính mô đun và
  • nhiều thông số chiến lược giao dịch khác

Mỗi ngôn ngữ lập trình đều có ưu và nhược điểm riêng và sự cân bằng giữa ưu và nhược điểm dựa trên yêu cầu của hệ thống giao dịch sẽ ảnh hưởng đến việc lựa chọn ngôn ngữ lập trình mà một cá nhân có thể muốn học

Mỗi tổ chức có một ngôn ngữ lập trình khác nhau dựa trên kinh doanh và văn hóa của nó

  • Bạn sẽ sử dụng loại hệ thống giao dịch nào?
  • Bạn đang có kế hoạch thiết kế một hệ thống giao dịch dựa trên thực thi?
  • Bạn đang cần một backtester hiệu suất cao?

Dựa trên câu trả lời cho tất cả những câu hỏi này, người ta có thể quyết định ngôn ngữ lập trình nào là tốt nhất cho giao dịch thuật toán

Tại sao nên sử dụng Python để giao dịch?

Linux as well as macOS. The installation details for the OS are provided on the official website in detail.

Thư viện Python phổ biến hay còn gọi là Gói Python

Thư viện là tập hợp các mô-đun hoặc chức năng có thể tái sử dụng, có thể được sử dụng trực tiếp trong mã của chúng tôi để thực hiện một chức năng nhất định mà không cần phải viết mã cho chức năng đó.

Như đã đề cập trước đó, Python có một bộ thư viện khổng lồ có thể được sử dụng cho nhiều chức năng khác nhau như tính toán, học máy, trực quan hóa, v.v. Tuy nhiên, chúng ta sẽ nói về các thư viện Python phù hợp nhất cần có để mã hóa các chiến lược giao dịch trước khi thực sự bắt đầu với Python.

Chúng tôi sẽ được yêu cầu.

  • nhập dữ liệu tài chính,
  • thực hiện phân tích số,
  • xây dựng chiến lược giao dịch,
  • đồ thị cốt truyện, và
  • thực hiện backtesting trên dữ liệu

Đối với tất cả các chức năng này, đây là một số thư viện Python được sử dụng rộng rãi nhất để giao dịch

NumPy

  • NumPy hoặc NumericalPy, là một thư viện Python chủ yếu được sử dụng để thực hiện tính toán số trên các mảng dữ liệu
  • Mảng là một phần tử chứa một nhóm các phần tử
  • Người ta có thể thực hiện các thao tác khác nhau trên nó bằng các chức năng của NumPy

gấu trúc

  • Pandas là một thư viện Python chủ yếu được sử dụng với DataFrame, là định dạng bảng hoặc bảng tính nơi dữ liệu được lưu trữ trong các hàng và cột
  • Pandas có thể được sử dụng để nhập dữ liệu từ tệp Excel và CSV trực tiếp vào mã Python
  • Pandas cũng có thể được sử dụng để thực hiện phân tích dữ liệu và thao tác dữ liệu dạng bảng

Matplotlib

  • Matplotlib là một thư viện Python được sử dụng để vẽ biểu đồ 2D như biểu đồ thanh, biểu đồ phân tán, biểu đồ, v.v.
  • Nó cũng bao gồm các chức năng khác nhau để sửa đổi biểu đồ theo yêu cầu của chúng tôi

TA-Lib

  • TA-Lib hoặc thư viện Phân tích Kỹ thuật là một thư viện Python mã nguồn mở và được sử dụng rộng rãi để thực hiện phân tích kỹ thuật trên dữ liệu tài chính bằng các chỉ báo kỹ thuật như RSI [Chỉ số sức mạnh tương đối], dải bollinger, MACD, v.v.
  • Nó không chỉ hoạt động với Python mà còn với các ngôn ngữ lập trình khác như C/C++, Java, Perl, v.v.

Dưới đây là một số chức năng có sẵn trong  TA-Lib

  • BBANDS - Đối với Dải bollinger,
  • AROONOSC - Đối với Bộ tạo dao động Aroon,
  • MACD - Đối với Trung bình Động Hội tụ/Phân kỳ,
  • RSI - Đối với chỉ số sức mạnh tương đối

Zipline

  • Zipline là một thư viện Python dành cho các ứng dụng giao dịch
  • Đây là một hệ thống hướng sự kiện hỗ trợ cả kiểm tra lại và giao dịch trực tiếp
  • Zipline được tài liệu hóa tốt, có một cộng đồng tuyệt vời, hỗ trợ tích hợp Nhà môi giới tương tác và Pandas

Đây chỉ là một số thư viện mà bạn sẽ sử dụng khi bắt đầu sử dụng Python để hoàn thiện chiến lược giao dịch của mình.

Để biết chi tiết hơn về vô số thư viện Python, bạn có thể duyệt qua blog này trên các Nền tảng giao dịch Python phổ biến.

Làm việc với dữ liệu trong Python

Biết cách truy xuất, định dạng và sử dụng dữ liệu là một phần thiết yếu của giao dịch bằng Python, vì không có dữ liệu thì bạn không thể tiến hành được gì.

Dữ liệu tài chính có sẵn trên các trang web trực tuyến khác nhau. Dữ liệu này còn được gọi là dữ liệu chuỗi thời gian vì nó được lập chỉ mục theo thời gian [khoảng thời gian có thể là hàng tháng, hàng tuần, hàng ngày, 5 phút, hàng phút, v.v. ].

Ngoài ra, chúng tôi cũng có thể tải trực tiếp dữ liệu từ các trang tính Excel ở định dạng CSV, lưu trữ các giá trị dạng bảng và có thể được nhập vào các tệp và mã khác.

Bây giờ, chúng ta sẽ tìm hiểu cách nhập cả dữ liệu chuỗi thời gian và dữ liệu từ tệp CSV thông qua các ví dụ dưới đây.

Nhập dữ liệu bằng Python

Đây là một ví dụ về cách nhập dữ liệu chuỗi thời gian từ Yahoo Finance cùng với lời giải thích về lệnh trong phần bình luận

Ghi chú. Trong Python, chúng ta có thể thêm nhận xét bằng cách thêm ký hiệu '#' ở đầu dòng

Để tìm nạp dữ liệu từ Yahoo Finance, trước tiên bạn cần cài đặt pip yfinance. Bạn có thể tìm nạp dữ liệu từ Yahoo Finance bằng phương thức tải xuống

Bây giờ, hãy xem một ví dụ khác nơi chúng tôi có thể nhập dữ liệu từ tệp CSV hiện có

Tạo chiến lược giao dịch mẫu và kiểm tra lại bằng Python

Một trong những chiến lược giao dịch đơn giản nhất liên quan đến Đường trung bình động. Nhưng trước khi đi sâu vào phần viết mã, trước tiên chúng ta sẽ thảo luận về cơ chế tìm các loại đường trung bình động khác nhau.

Sau đó, cuối cùng chúng ta chuyển sang một chiến lược giao dịch trung bình động đó là trung bình động hội tụ phân kỳ, hay ngắn gọn là MACD.

Hãy bắt đầu với hiểu biết cơ bản về đường trung bình động.

Đường trung bình động là gì?

Trung bình động còn được gọi là Trung bình động, là giá trị trung bình hoặc giá trị trung bình của dữ liệu được chỉ định trong một tập hợp các khoảng thời gian liên tiếp nhất định. Khi có dữ liệu mới, giá trị trung bình của dữ liệu được tính bằng cách loại bỏ giá trị cũ nhất và thêm giá trị mới nhất.

Vì vậy, về bản chất, giá trị trung bình hoặc trung bình di chuyển cùng với dữ liệu và do đó có tên là 'Trung bình di chuyển'.

Ví dụ về cách tính trung bình động đơn giản như sau.
Giả sử cửa sổ là 10, tức là n = 10

Trên thị trường tài chính, giá chứng khoán có xu hướng biến động nhanh và khi vẽ đồ thị chuỗi giá, chúng ta rất khó đoán được xu hướng hay biến động của giá chứng khoán.

Trong những trường hợp như vậy, đường trung bình động sẽ rất hữu ích vì nó làm dịu các biến động, cho phép các nhà giao dịch dự đoán chuyển động một cách dễ dàng.

Trung bình Di chuyển Chậm. Đường trung bình động có thời lượng dài hơn được gọi là đường trung bình động chậm vì chúng phản ứng chậm hơn với sự thay đổi của xu hướng. Điều này sẽ tạo ra các đường cong mượt mà hơn và chứa ít dao động hơn.

Trung bình động nhanh. Đường trung bình động có thời lượng ngắn hơn được gọi là đường trung bình động nhanh và phản ứng nhanh hơn với sự thay đổi của xu hướng.

Hãy xem xét biểu đồ hiển thị ở trên, nó chứa

  • giá đóng cửa của một cổ phiếu IBM [đường màu xanh],
  • đường trung bình động 10 ngày [đường lớn],
  • đường trung bình động 50 ngày [đường màu đỏ] và
  • đường trung bình động 200 ngày [đường màu xanh lục]

Có thể quan sát thấy rằng đường trung bình động 200 ngày là trơn tru nhất và đường trung bình động 10 ngày có số lần dao động nhiều nhất. Đi xa hơn, bạn có thể thấy rằng đường trung bình động 10 ngày hơi giống với đồ thị giá đóng cửa

Các loại đường trung bình động

Có ba loại đường trung bình được sử dụng phổ biến nhất, đường trung bình động đơn giản, có trọng số và đường hàm mũ. Sự khác biệt đáng chú ý duy nhất giữa các đường trung bình động khác nhau là trọng số được gán cho các điểm dữ liệu trong khoảng thời gian trung bình động.

Hãy cùng tìm hiểu chi tiết hơn về từng vấn đề.

Đường trung bình động đơn giản [SMA]

Đường trung bình động đơn giản [SMA] là giá trung bình của chứng khoán trong một khoảng thời gian cụ thể. Đường trung bình đơn giản là loại đường trung bình đơn giản nhất và được tính bằng cách cộng các phần tử và chia cho số khoảng thời gian.

Tất cả các phần tử trong SMA đều có cùng trọng số. Nếu chu kỳ trung bình động là 10, thì mỗi phần tử sẽ có trọng số 10% trong SMA.

Công thức cho đường trung bình động đơn giản được đưa ra bên dưới.

SMA = Tổng số điểm dữ liệu trong khoảng thời gian trung bình động / Tổng số khoảng thời gian

Đường trung bình động hàm mũ [EMA]

Logic của đường trung bình động hàm mũ là giá mới nhất ảnh hưởng nhiều hơn đến giá tương lai so với giá trong quá khứ. Do đó, giá hiện tại được coi trọng hơn so với giá lịch sử. Với trọng số cao nhất đến giá mới nhất, trọng số giảm theo cấp số nhân so với giá trước đây.

Điều này làm cho đường trung bình động hàm mũ phản ứng nhanh hơn với các biến động giá ngắn hạn so với đường trung bình động đơn giản.

Công thức cho đường trung bình động hàm mũ được đưa ra bên dưới.

EMA = [Giá đóng cửa - EMA*[ngày trước]] x số nhân  +  EMA*[ngày trước]

Hệ số trọng số = 2 / [thời gian trung bình động +1]

Đường trung bình động có trọng số [WMA]

Trung bình trượt có trọng số là trung bình trượt do phép nhân của từng thành phần với trọng số được xác định trước.

Trung bình động hàm mũ là một loại trung bình động có trọng số trong đó các yếu tố trong khoảng thời gian trung bình động được gán trọng số tăng dần theo cấp số nhân.

Trung bình trượt có trọng số tuyến tính [LWMA], thường được gọi là trung bình trượt có trọng số [WMA], được tính bằng cách gán trọng số tăng tuyến tính cho các phần tử trong khoảng thời gian trung bình trượt.

Bây giờ chúng ta đã hiểu về đường trung bình động và các loại khác nhau của chúng, hãy thử tạo một chiến lược giao dịch sử dụng đường trung bình động.

Đường trung bình động hội tụ phân kỳ [MACD]

Đường trung bình động hội tụ phân kỳ hay MACD được phát triển bởi Gerald Appel vào cuối những năm bảy mươi. Đây là một trong những chỉ báo động lượng theo xu hướng đơn giản và hiệu quả nhất.

Trong chiến lược MACD, chúng tôi sử dụng hai chuỗi, chuỗi MACD là sự khác biệt giữa EMA 26 ngày và EMA 12 ngày và chuỗi tín hiệu là EMA 9 ngày của chuỗi MACD.

Chúng ta có thể kích hoạt tín hiệu giao dịch bằng cách sử dụng chuỗi MACD và chuỗi tín hiệu.

  • Khi đường MACD cắt lên trên đường tín hiệu, thì nên mua chứng khoán cơ bản
  • Khi đường MACD cắt xuống dưới đường tín hiệu, thì tín hiệu bán được kích hoạt

Triển khai chiến lược MACD bằng Python

Nhập các thư viện Python cần thiết và đọc dữ liệu thị trường chứng khoán

Tính toán và vẽ đồ thị chuỗi MACD là sự khác biệt giữa EMA 26 ngày và EMA 12 ngày và chuỗi tín hiệu là EMA 9 ngày của chuỗi MACD

Tạo tín hiệu giao dịch
Khi giá trị của chuỗi MACD lớn hơn chuỗi tín hiệu thì mua, nếu không thì bán.

Tính lợi nhuận tích lũy

Đánh giá chiến lược giao dịch mẫu

Cho đến nay, chúng tôi đã tạo ra một chiến lược giao dịch bằng Python cũng như kiểm tra lại nó trên dữ liệu lịch sử

Nhưng điều này có nghĩa là nó đã sẵn sàng để được triển khai trên thị trường trực tiếp?

Chà, trước khi đưa chiến lược của mình vào hoạt động, chúng ta nên hiểu hiệu quả của chiến lược đó hay nói một cách đơn giản hơn là .

Mặc dù có nhiều cách để đánh giá một chiến lược giao dịch, nhưng chúng tôi sẽ tập trung vào những cách sau,

  • Lợi nhuận hàng năm,
  • Biến động hàng năm, và
  • tỷ lệ sắc nét

Hãy cùng tìm hiểu chi tiết cũng như thử đánh giá chiến lược của chính mình dựa trên những yếu tố này

Lợi nhuận hàng năm hoặc Tỷ lệ tăng trưởng kép hàng năm [CAGR]

Nói một cách đơn giản, CAGR là tỷ lệ hoàn vốn của khoản đầu tư của bạn, bao gồm cả lãi kép của khoản đầu tư của bạn. Do đó, nó có thể được sử dụng để so sánh hai chiến lược và quyết định chiến lược nào phù hợp với nhu cầu của bạn.

Tính CAGR

CAGR có thể được tính dễ dàng bằng công thức sau

CAGR = [[Giá trị cuối cùng của khoản đầu tư / Giá trị ban đầu của khoản đầu tư]^[1/số năm]] - 1

Ví dụ: chúng tôi đầu tư vào năm 2000, tăng lên 4000 trong năm đầu tiên nhưng giảm xuống 3000 trong năm thứ hai. Bây giờ, nếu chúng ta tính CAGR của khoản đầu tư, nó sẽ như sau

CAGR = [3000/2000]^[½] - 1 = 0. 22 = 22%

Đối với chiến lược của chúng tôi, trước tiên chúng tôi sẽ cố gắng tính lợi nhuận hàng ngày và sau đó tính CAGR. Mã, cũng như đầu ra, được đưa ra dưới đây

CAGR là 17. 38%

Biến động hàng năm

Trước khi chúng tôi xác định mức độ biến động hàng năm, hãy hiểu ý nghĩa của mức độ biến động. Biến động của cổ phiếu là sự thay đổi của giá cổ phiếu trong một khoảng thời gian.

Đối với chiến lược, chúng tôi đang sử dụng công thức sau.

Biến động hàng năm = căn bậc hai [ngày giao dịch] * căn bậc hai [phương sai]

Mã, cũng như đầu ra, được đưa ra dưới đây

Biến động hàng năm là 29. 67%

Tỷ lệ Sharpe

Tỷ lệ Sharpe về cơ bản được các nhà đầu tư sử dụng để hiểu rủi ro được chấp nhận so với các khoản đầu tư không có rủi ro, chẳng hạn như trái phiếu kho bạc, v.v.

Tỷ lệ sắc nét có thể được tính theo cách sau.

Tỷ lệ sắc nét = [r[x] - r[f]] / δ[x]

Ở đâu,
r[x] = lợi tức đầu tư hàng năm x
r[f] = Lãi suất phi rủi ro hàng năm
δ[x] = Standard deviation of r[x]

Tỷ lệ Sharpe phải cao trong trường hợp tương tự hoặc ngang hàng. Mã, cũng như đầu ra, được đưa ra dưới đây

Tỷ lệ Sharpe là 0. 62

Cách bắt đầu với Python trong Giao dịch

Dưới đây là một số tài nguyên rất hữu ích sẽ hướng dẫn bạn cách bắt đầu với Python trong lĩnh vực Giao dịch

  • GHI HỘI THẢO TRÊN WEB - Cách sử dụng Python để giao dịch và đầu tư
  • BLOG & HƯỚNG DẪN - Python for Trading
  • DANH SÁCH PHÁT VIDEO - Python for Trading
  • SÁCH MIỄN PHÍ - Khái niệm cơ bản về Python. Với Minh Họa Từ Thị Trường Tài Chính
  • THEO DÕI HỌC TẬP. Giao dịch thuật toán cho mọi người

Phần kết luận

Python được sử dụng rộng rãi trong lĩnh vực máy học và hiện nay là giao dịch. Trong bài viết này, chúng tôi đã đề cập đến tất cả những gì cần thiết để bắt đầu giao dịch với Python. Điều quan trọng là phải học Python để bạn có thể viết mã các chiến lược giao dịch của riêng mình và kiểm tra chúng.

Các mô-đun và thư viện phong phú của Python làm trơn tru quá trình tạo thuật toán máy học mà không cần phải viết mã khổng lồ.

Để bắt đầu học Python và viết các loại chiến lược giao dịch khác nhau, bạn có thể chọn khóa học “Giao dịch theo thuật toán cho mọi người” trên Quantra. Trong trường hợp bạn quan tâm đến định dạng lớp học trực tuyến do người hướng dẫn, EPAT của QuantInsti là khóa học giao dịch thuật toán dành cho bạn. Liên hệ với cố vấn khóa học để biết thêm chi tiết về EPAT.

từ chối trách nhiệm. Tất cả dữ liệu và thông tin được cung cấp trong bài viết này chỉ dành cho mục đích thông tin. QuantInsti® không tuyên bố về tính chính xác, đầy đủ, hiện tại, phù hợp hoặc hiệu lực của bất kỳ thông tin nào trong bài viết này và sẽ không chịu trách nhiệm pháp lý cho bất kỳ lỗi, thiếu sót hoặc chậm trễ nào trong thông tin này hoặc bất kỳ tổn thất, thương tích hoặc thiệt hại nào phát sinh từ thông tin đó. . Tất cả thông tin được cung cấp trên cơ sở nguyên trạng

Python có tốt cho giao dịch định lượng không?

Nhờ các công cụ phân tích của nó, Python được sử dụng rộng rãi trong giao dịch định lượng . Nhờ các thư viện như Pandas, người dùng Python được hưởng lợi từ việc trực quan hóa dữ liệu dễ dàng hơn và tính toán thống kê tinh vi.

Python có được sử dụng trong tài chính định lượng không?

Python hiện đã có chỗ đứng vững chắc trong thế giới tài chính định lượng . Nó được sử dụng rộng rãi trong các ngân hàng đầu tư và quỹ phòng hộ định lượng, vừa là công cụ nghiên cứu vừa là ngôn ngữ triển khai sản xuất.

Python hay C++ tốt hơn cho tài chính?

C++ bây giờ không phổ biến nhưng vẫn được sử dụng. Vì các ngân hàng vẫn vận hành các hệ thống kế thừa được xây dựng trên C++ nên các lập trình viên hiểu ngôn ngữ lập trình vẫn có lợi thế. Python đặc biệt quan trọng đối với các nền tảng định giá, quản lý rủi ro và quản lý thương mại .

Python có hữu ích cho tài chính không?

Python là ngôn ngữ lập trình phổ biến nhất trong lĩnh vực tài chính . Bởi vì nó là một ngôn ngữ hướng đối tượng và mã nguồn mở, nên nó được nhiều tập đoàn lớn, bao gồm cả Google, sử dụng cho nhiều dự án khác nhau. Python có thể được sử dụng để nhập dữ liệu tài chính như báo giá chứng khoán bằng khung Pandas.

Chủ Đề