/Các toán tử BRAIN Expression Language

Các toán tử BRAIN Expression Language

Toán tử BRAIN Expression (BRAIN Expression Language) là một tập hợp các kỹ thuật toán học được sử dụng để thực hiện ý tưởng Alpha của bạn thông qua ngôn ngữ lập trình BRAIN Expression.

Ngôn ngữ BRAIN Expression là một ngôn ngữ lập trình độc quyền được sử dụng bởi WorldQuant BRAIN, được thiết kế để làm cho việc viết và kiểm tra các mô hình tài chính trở nên dễ dàng hơn.

Ngôn ngữ này có thể được coi như một dạng mã giả, sử dụng ngôn ngữ tự nhiên và cấu trúc lập trình đơn giản để truyền đạt logic của thuật toán.

Mục tiêu của việc sử dụng toán tử BRAIN Expression là cung cấp một cách rõ ràng và ngắn gọn để diễn đạt các ý tưởng và thuật toán phức tạp, giúp cho các nhà phát triển và nghiên cứu dễ dàng hiểu và triển khai các mô hình tài chính.

1. Nhóm toán tử BRAIN Expression xử lý số học

Nhóm toán tử BRAIN Expression xử lý số học (Arithmetic Operators) trong ngôn ngữ BRAIN Expression thực hiện các phép toán số học cơ bản bao gồm cộng, trừ, nhân, chia, và mũ.

STTTên hàmMiêu tả chi tiết
1+, -, *, /, ^Các toán tử số học: cộng, trừ, nhân, chia, lũy thừa.
2<, <=, >, >=, ==, !=Các toán tử so sánh logic: Nhỏ hơn (hoặc bằng), Lớn hơn (hoặc bằng), Bằng, Không bằng.
3cond ? expr1 : expr2Toán tử ba ngôi: Nếu điều kiện đúng, thì expr1, ngược lại expr2. Ví dụ: close < open ? close : open
4abs(x)Giá trị tuyệt đối của x.
5add(x, y, filter=false)Tổng của tất cả các đầu vào (ít nhất cần 2 đầu vào). Nếu filter = true, lọc tất cả giá trị NaN thành 0 trước khi thực hiện phép cộng.
6ceiling(x)Số nguyên lớn nhất gần nhất.
7divide(x, y)x chia y.
8exp(x)Hàm số mũ tự nhiên: e^x.
9floor(x)Số nguyên nhỏ nhất gần nhất.
10fraction(x)Loại bỏ phần số nguyên và trả lại phần còn lại dưới dạng phân số với dấu.
11inverse(x)Nghịch đảo của x: 1 / x.
12log(x)Logarit tự nhiên. Ví dụ: Log(high/low) sử dụng logarit tự nhiên của tỷ lệ high/low làm trọng số cho cổ phiếu.
13log_diff(x)Trả về logarit của giá trị hiện tại của đầu vào hoặc x[t] trừ đi logarit của giá trị trước đó của đầu vào hoặc x[t-1].
14max(x, y, ..)Giá trị lớn nhất của tất cả đầu vào. Ít nhất cần 2 đầu vào.
15min(x, y, ..)Giá trị nhỏ nhất của tất cả đầu vào. Ít nhất cần 2 đầu vào.
16multiply(x ,y, … , filter=false)Tích của tất cả đầu vào. Ít nhất cần 2 đầu vào. Filter lọc giá trị NaN thành 1 trước khi nhân.
17nan_mask(x, y)Thay thế đầu vào bằng NaN nếu giá trị mặt nạ tương ứng hoặc đầu vào thứ hai là âm.
18nan_out(x, lower=0, upper=0)Nếu x < lower hoặc x > upper, trả về NaN, ngược lại trả về x. Ít nhất cần một trong số “lower”, “upper”.
19power(x, y)x ^ y.
20purify(x)Xóa vô cùng (+inf, -inf) bằng cách thay thế chúng bằng NaN.
21replace(x, target=”v1 v2 ..vn”, dest=”d1,d2,..dn”)Thay thế các giá trị mục tiêu trong đầu vào bằng các giá trị đích tương ứng.
22reverse(x)Trả về đối của x (đảo dấu).
23round(x)Làm tròn đầu vào đến số nguyên gần nhất.
24round_down(x, f=1)Làm tròn đầu vào xuống đến bội số lớn nhất của f nhỏ hơn đầu vào.
25sign(x)Nếu đầu vào = NaN, trả về NaN, ngược lại nếu đầu vào > 0, trả về 1, nếu đầu vào < 0, trả về -1, nếu đầu vào = 0, trả về 0.
26signed_power(x, y)x mũ y sao cho kết quả cuối cùng bảo tồn dấu của x.
27s_log_1p(x)Giới hạn hàm bằng cách sử dụng logarithm sao cho giá trị đầu vào cao hơn vẫn cao hơn và giá trị đầu vào âm vẫn âm trong đầu
28sqrt(x)Căn bậc hai của x.
29subtract(x, y, filter=false)x – y. Nếu filter = true, lọc tất cả giá trị NaN thành 0 trước khi thực hiện phép trừ.
30to_nan(x, value=0, reverse=false)Chuyển đổi giá trị thành NaN hoặc NaN thành giá trị nếu reverse = true.
31densify(x)Chuyển đổi một trường nhóm của nhiều ngăn thành ít hơn các ngăn hiện có để làm cho việc làm việc với các trường nhóm trở nên hiệu quả về mặt tính toán.
Các toán tử BRAIN Expression Language

2. Nhóm toán tử BRAIN Expression xử lý logic

Các hàm Logic Comparison Operators trong ngôn ngữ BRAIN Expression dùng để thực hiện các phép so sánh và kiểm tra các điều kiện trong biểu thức.

Dưới đây là tóm tắt chung về các hàm này:

STTTên hàmMiêu tả chi tiết
1and(input1, input2)Toán tử AND Logic, trả về true nếu cả hai toán hạng đều đúng và trả về false nếu không đúng.
2or(input1, input2)Toán tử OR Logic, trả về true nếu ít nhất một trong hai đầu vào là đúng và trả về false nếu cả hai không đúng.
3equal(input1, input2)Trả về true nếu cả hai đầu vào giống nhau và trả về false nếu không giống nhau.
4negate(input)Kết quả là true nếu toán hạng được đảo ngược là sai; kết quả là sai nếu toán hạng được đảo ngược là đúng.
5less(input1, input2)Nếu input1 < input2 trả về true, ngược lại trả về false.
6if_else(input1, input2, input3)Nếu input1 là true thì trả về input2, ngược lại trả về input3.
7is_not_nan(input)Nếu (input != NaN) trả về 1, ngược lại trả về 0.
8is_nan(input)Nếu (input == NaN) trả về 1, ngược lại trả về 0.
9is_finite(input)Nếu (input NaN hoặc input == INF) trả về 0, ngược lại trả về 1.
10is_not_finite(input)Nếu (input NaN hoặc input == INF) trả về 1, ngược lại trả về 0.

3. Các Toán tử chuỗi thời gian

Đối với toán tử chuỗi thời gian có tham số xem lại số ngày (d), d phải < 512.

Time Series Operators là một tập hợp các toán tử hoặc hàm được sử dụng trong lĩnh vực tài chính để thực hiện các phân tích và tính toán trên dữ liệu thời gian (time series data). Chúng được thiết kế đặc biệt để hỗ trợ việc phân tích và xử lý dữ liệu thời gian, mà thường xuyên xuất hiện trong tài chính. Các Time Series Operators chơi một vai trò quan trọng trong phân tích dữ liệu thời gian trong lĩnh vực tài chính với các chức năng cụ thể như: tính trung bình (ts_mean), độ lệch chuẩn (ts_std_dev), độ lệch (ts_skewness), và độ nhoè (ts_kurtosis) của dữ liệu thời gian. Điều này giúp đánh giá và hiểu rõ phân phối của dữ liệu tài chính.

STTTên hàmMiêu tả chi tiết
1days_from_last_change(x)Số ngày kể từ lần thay đổi cuối cùng của x
2ts_weighted_delay(x, k=0.5)Thay vì thay thế giá trị hôm nay bằng giá trị hôm qua như ts_delay(x, 1), nó gán trung bình có trọng số của giá trị hôm nay và hôm qua, với trọng số của giá trị hôm nay là k và của hôm qua là (1 – k).
3hump(x, hump = 0.01)Giới hạn lượng và biên độ của sự thay đổi trong đầu vào (do đó giảm độ xoay)
4hump_decay(x, p=0)Toán tử này giúp bỏ qua các giá trị đã thay đổi quá ít so với các giá trị trước đó.
5inst_tvr(x, d)Giá trị giao dịch tổng cộng / Giá trị sở hữu tổng cộng trong d ngày trước
6jump_decay(x, d, sensitivity=0.5, force=0.1)Nếu có một sự nhảy vọt lớn trong dữ liệu hiện tại so với dữ liệu trước đó.
7kth_element(x, d, k)Trả về giá trị thứ k của đầu vào bằng cách xem qua d ngày. Toán tử này có thể được sử dụng để điền giá trị bị thiếu nếu k = 1.
8last_diff_value(x, d)Trả về giá trị cuối cùng của x mà không bằng giá trị hiện tại từ d ngày trước
9ts_arg_max(x, d)Trả về chỉ số tương đối của giá trị nhỏ nhất trong chuỗi thời gian trong d ngày trước. Nếu ngày hiện tại có giá trị nhỏ nhất trong d ngày trước, nó sẽ trả về 0. Nếu ngày hôm qua có giá trị nhỏ nhất trong d ngày trước, nó sẽ trả về 1.
10ts_arg_min(x, d)Trả về chỉ số tương đối của giá trị nhỏ nhất trong chuỗi thời gian trong d ngày trước. Nếu ngày hiện tại có giá trị nhỏ nhất trong d ngày trước, nó sẽ trả về 0. Nếu ngày hôm qua có giá trị nhỏ nhất trong d ngày trước, nó sẽ trả về 1.
11ts_av_diff(x, d)Trả về x – giá trị trung bình của x trong d ngày trước, nhưng xử lý cẩn thận với NaN. Điều này có nghĩa là NaN sẽ bị bỏ qua trong quá trình tính toán trung bình.
12ts_backfill(x,lookback = d, k=1, ignore=”NAN”)Quá trình backfill là quá trình thay thế các giá trị NAN hoặc 0 bằng giá trị có ý nghĩa (tức là giá trị không phải NaN đầu tiên).
13ts_co_kurtosis(y, x, d)Trả về cokurtosis của y và x trong d ngày trước.
14ts_corr(x, y, d)Trả về hệ số tương quan của x và y trong d ngày trước
15ts_co_skewness(y, x, d)Trả về coskewness của y và x trong d ngày trước.
16ts_count_nans(x ,d)Trả về số lượng giá trị NaN trong x trong d ngày trước
17ts_covariance(y, x, d)Trả về hiệp phương sai của y và x trong d ngày trước
18ts_decay_exp_window(x, d, factor = f)Trả về suy giảm mũi tên của x với hệ số làm mịn trong d ngày trước.
19ts_decay_linear(x, d, dense = false)Trả về sự suy giảm tuyến tính trên x cho các ngày gần đây trong khoảng thời gian d. Tham số dense=false có nghĩa rằng toán tử hoạt động ở chế độ dày đặc và chúng ta xem xét giá trị NaN như 0. Trong chế độ dày đặc, chúng ta không làm như vậy
20ts_delay(x, d)Trả về giá trị x cách đây d ngày
21ts_delta(x, d)Trả về x – ts_delay(x, d)
22ts_ir(x, d)Tỉ lệ thông tin trả về ts_mean(x, d) / ts_std_dev(x, d)
23ts_kurtosis(x, d)Trả về độ xiên của x cho d ngày trước
24ts_max(x, d)Trả về giá trị lớn nhất của x trong d ngày trước
25ts_max_diff(x, d)Trả về x – ts_max(x, d)
26ts_mean(x, d)Trả về giá trị trung bình của x trong d ngày trước
27ts_median(x, d)Trả về giá trị trung vị của x trong d ngày trước
28ts_min(x, d)Trả về giá trị nhỏ nhất của x trong d ngày trước
29ts_min_diff(x, d)Trả về x – ts_min(x, d)
30ts_min_max_cps(x, d, f = 2)Trả về (ts_min(x, d) + ts_max(x, d)) – f * x. Nếu không được chỉ định, mặc định là f = 2
31ts_min_max_diff(x, d, f = 0.5)Trả về x – f * (ts_min(x, d) + ts_max(x, d)). Nếu không được chỉ định, mặc định là f = 0.5
32ts_moment(x, d, k=0)Trả về K-th moment tâm của x trong d ngày trước
33ts_partial_corr(x, y, z, d)Trả về tương quan bộ phận của x, y, z trong d ngày trước
34ts_percentage(x, d, percentage=0.5)Trả về giá trị phân vị của x trong d ngày trước
35ts_poly_regression(y, x, d, k = 1)Trả về y – Ey, trong đó Ey = x + x^2 + … + x^k trong d ngày; k phải được chỉ định dưới dạng đối số từ khóa
36ts_product(x, d)Trả về tích của x trong d ngày trước
37ts_rank(x, d, constant = 0)Xếp hạng các giá trị của x cho mỗi công cụ trong d ngày trước, sau đó trả về xếp hạng của giá trị hiện tại + hằng số. Nếu không được chỉ định, mặc định là hằng số = 0.
38ts_regression(y, x, d, lag = 0, rettype = 0)Trả về các tham số liên quan đến hàm hồi quy.
39ts_returns (x, d, mode = 1)Trả về sự thay đổi tương đối trong giá trị x.
40ts_scale(x, d, constant = 0)Trả về (x – ts_min(x, d)) / (ts_max(x, d) – ts_min(x, d)) + hằng số
41ts_skewness(x, d)Trả về độ lệch của x cho những ngày gần đây trong khoảng thời gian d.” Trong tài chính, “skewness” là một thước đo cho biết độ lệch của phân phối dữ liệu so với phân phối chuẩn (phân phối có độ lệch bằng 0). Điều này cho biết liệu dữ liệu có phân phối lệch về phía trái (negative skewness) hoặc phía phải (positive skewness) so với phân phối chuẩn không
42ts_std_dev(x, d)Trả về độ lệch chuẩn của x trong d ngày trước
43ts_step(1), step(1)Trả về bộ đếm ngày
44ts_sum(x, d)Tổng giá trị của x trong d ngày trước
45ts_theilsen(x, y, d)Trình ước tính độ dốc Theil Sen của đầu vào cho n ngày trước.
46ts_triple_corr(x, y, z, d)Trả về tương quan tam giác của x, y, z trong d ngày trước
47ts_zscore(x, d)Z-score là một đo lường số học mô tả mối quan hệ giá trị đối tượng đến trung bình của một nhóm giá trị. Z-score được đo bằng đơn vị độ lệch chuẩn từ giá trị trung bình: (x – tsmean(x,d)) / tsstddev(x,d)
48ts_entropy(x,d)Đối với mỗi công cụ, chúng ta thu thập các giá trị của đầu vào trong n ngày trước và tính toán phân phối xác suất, sau đó tính entropie thông tin qua một biểu đồ tần suất như kết quả.
49ts_vector_neut(x,y,d)Trả về x- ts_vector_proj(x,y,d)
50ts_vector_proj(x,y,d)Trả về phép chiếu vector của x vào y trong không gian chuỗi thời gian. Chi tiết về đại số và hình học có thể được tìm thấy trên wiki.
51ts_rank_gmean_amean_diff(input1, input2, input3,…,d)Trả về trung bình hình học của ts_rank(input,d) của tất cả input – Trung bình hình học của ts_rank(input,d) của tất cả input. Điều này tương tự như toán tử rank_gmean_amean_diff nhưng trong không gian chuỗi thời gian.
52ts_quantile(x,d, driver=”gaussian”)Nó tính ts_rank và áp dụng một hàm mật độ tích luỹ nghịch đảo cho giá trị của nó từ phân phối nguồn (tùy chọn). Các giá trị có thể là “gaussian”, “uniform”, “cauchy” trong đó “gaussian” là giá trị mặc định.

4. Nhóm toán tử phân tích không gian Cross Sectional Operators

Những toán tử này chủ yếu được sử dụng để biến đổi dữ liệu và tính toán các chỉ số hoặc xếp hạng trong lĩnh vực tài chính.

Chúng có vai trò quan trọng trong quá trình xử lý và phân tích dữ liệu thị trường, giúp các nhà đầu tư và nhà phân tích tạo ra các chỉ số và thông tin quan trọng để đưa ra quyết định đầu tư và giao dịch hiệu quả.

STTTên HàmMiêu Tả Chi Tiết
1normalize(x, useStd = false, limit = 0.0)Tính trung bình của tất cả các giá trị alpha hợp lệ cho một ngày cụ thể, sau đó trừ đi giá trị trung bình đó khỏi mỗi phần tử.
2one_side(x , side = long )Dịch tất cả các công cụ lên hoặc xuống để Alpha trở thành chỉ dài hoặc chỉ ngắn (nếu side = short).
3quantile(x, driver = gaussian, sigma = 1.0)Xếp hạng các giá trị nguyên thô, dịch vectơ Alpha đã xếp hạng, áp dụng phân phối (gaussian, cauchy, uniform). Nếu driver là uniform, nó chỉ trừ mỗi giá trị Alpha đi với giá trị trung bình của tất cả giá trị Alpha trong vectơ Alpha.
4rank(x, rate=2)Xếp hạng đầu vào trong tất cả các công cụ và trả về một số được phân phối đều giữa 0.0 và 1.0. Đối với sắp xếp chính xác, sử dụng rate là 0.
5rank_by_side(x, rate=2,scale=1)Xếp hạng riêng lẻ các đầu vào dương và âm và định mức theo sách lệnh. Đối với việc sắp xếp chính xác, sử dụng rate=0.
6generalized_rank(open, m=1)Ý tưởng là sự khác biệt giữa các giá trị công cụ được nâng lên mũ m được cộng vào sự xếp hạng của công cụ có giá trị lớn hơn và trừ đi từ xếp hạng của công cụ có giá trị nhỏ hơn.
7regression_neut(y, x)Thực hiện hồi quy chéo trên các cổ phiếu với Y là mục tiêu và X là biến độc lập.
8regression_proj(y, x)Thực hiện hồi quy chéo trên các cổ phiếu với Y là mục tiêu và X là biến độc lập.
9scale(x, scale=1, longscale=1, shortscale=1)Chia tỷ lệ đầu vào đến booksize. Chúng ta cũng có thể chia tỷ lệ cho các vị trí dài và vị trí ngắn thành các tỷ lệ riêng biệt bằng cách đề cập đến các tham số bổ sung cho toán tử.
10scale_down(x,constant=0)Chia tỷ lệ tất cả các giá trị trong mỗi ngày theo tỷ lệ giữa 0 và 1 sao cho giá trị tối thiểu tương ứng với 0 và giá trị tối đa tương ứng với 1. Hằng số là giá trị được trừ ra khỏi kết quả cuối cùng.
11truncate(x,maxPercent=0.01)Toán tử cắt bỏ tất cả các giá trị của x để maxPercent. Ở đây, maxPercent được biểu thị dưới dạng thập phân.
12vector_neut(x, y)Đối với các vectơ x và y đã cho, nó tìm một vectơ x* mới sao cho x* vuông góc với y.
13vector_proj(x, y)Trả về phép chiếu vectơ của x lên y. Chi tiết toán học và hình học có thể được tìm
14winsorize(x, std=4)Winsorize x để đảm bảo rằng tất cả các giá trị trong x nằm giữa các giới hạn thấp và cao, được chỉ định là bội số của std.
15zscore(x)Z-score là một đo lường số học mô tả mối quan hệ giữa giá trị và trung bình của một nhóm giá trị. Z-score được đo bằng đơn vị độ lệch tiêu chuẩn từ trung bình: (x – tsmean(x,d)) / tsstddev(x,d).
16rank_gmean_amean_diff(input1, input2, input3,…)Toán tử trả về sự khác biệt giữa trung bình hình học và trung bình hình học của xếp hạng chéo của các đầu vào.

5. Các toán tử Vector

STTTên HàmMiêu Tả Chi Tiết
1vec_avg(x)Tính trung bình (Mean) của vector field x.
2vec_choose(x, k)Chọn phần tử thứ k (được đánh số từ 0) từ mỗi vector field trong x.
3vec_count(x)Đếm số phần tử trong vector field x.
4vec_ir(x)Tính tỷ lệ thông tin (Information Ratio) của vector field x (trung bình / độ lệch chuẩn).
5vec_kurtosis(x)Tính độ nhọn (Kurtosis) của vector field x. Trong tài chính, “kurtosis” là một khái niệm thống kê dùng để đo lường độ nhọn của một phân phối xác suất hoặc một tập dữ liệu. Kurtosis đo lường mức độ mà một phân phối xác suất có đuôi dày hơn (kurtosis dương) hoặc đuôi mỏng hơn (kurtosis âm) so với phân phối chuẩn (phân phối Gaussian hoặc phân phối chuẩn).
6vec_max(x)Tìm giá trị lớn nhất trong vector field x.
7vec_min(x)Tìm giá trị nhỏ nhất trong vector field x.
8vec_norm(x)Tính tổng giá trị tuyệt đối của các phần tử trong vector field x.
9vec_percentage(x, p)Tính phân vị (Percentile) của vector field x theo giá trị p.
10vec_powersum(x, c)Tính tổng của lũy thừa bậc c của các phần tử trong vector field x.
11vec_range(x)Tính sự chênh lệch giữa giá trị lớn nhất và giá trị nhỏ nhất trong vector field x.
12vec_skewness(x)Tính độ lệch (Skewness) của vector field x.
13vec_stddev(x)Tính độ lệch chuẩn (Standard Deviation) của vector field x.
14vec_sum(x)Tính tổng của các phần tử trong vector field x.

6. Nhóm toán tử BRAIN Expression cho chuyển đổi

Những toán tử này thường được sử dụng để biến đổi hoặc xử lý giá trị đầu vào tùy theo mục đích của chiến lược giao dịch hoặc phân tích dữ liệu tài chính.

STTTên hàmMiêu tả chi tiết
1arc_cos(x)Trả về giá trị arc cos (ngược của cos) của x nếu -1 <= x <= 1, ngược lại trả về NaN.
2arc_sin(x)Trả về giá trị arc sin (ngược của sin) của x nếu -1 <= x <= 1, ngược lại trả về NaN.
3arc_tan(x)Thực hiện phép ngược của hàm tan cho giá trị x.
4bucket(rank(x), range=”0, 1, 0.1″ or buckets = “2,5,6,7,10”)Chuyển đổi giá trị dạng số thành chỉ mục cho các nhóm do người dùng chỉ định. Hữu ích để tạo các giá trị nhóm để sử dụng trong các toán tử nhóm khác.
5clamp(x, lower = 0, upper = 0, inverse = False, mask = “)Giới hạn giá trị đầu vào trong khoảng giữa giới hạn dưới và giới hạn trên trong chế độ mặc định (inverse = false). Ngược lại, khi inverse = true, giá trị nằm trong khoảng sẽ được thay thế bằng giá trị mask, trong khi giá trị ngoài khoảng sẽ được giữ nguyên.
6filter(x, h = “1, 2, 3, 4″, t=”0.5”)Dùng để lọc giá trị và cho phép tạo các bộ lọc như dao động tuyến tính hoặc suy giảm mũ.
7keep(x, f, period = 5)Toán tử này xuất giá trị x khi f thay đổi và tiếp tục làm điều đó trong “period” ngày sau khi f dừng thay đổi. Sau “period” ngày kể từ lần thay đổi cuối cùng của f, sẽ trả về NaN.
8left_tail(x, maximum = 0)Trả về NaN cho mọi giá trị lớn hơn maximum. Giá trị maximum nên là hằng số.
9pasteurize(x)Đặt giá trị của x thành NaN nếu x là INF hoặc nếu công cụ cơ sở không thuộc về Alpha universe.
10right_tail(x, minimum = 0)Trả về NaN cho mọi giá trị nhỏ hơn minimum. Giá trị minimum nên là hằng số.
11sigmoid(x)Trả về giá trị của hàm sigmoid cho x: 1 / (1 + exp(-x)).
12tanh(x)Trả về giá trị của hàm tanh (tangent hyperbolic) cho x.
13tail(x, lower = 0, upper = 0, newval = 0)Nếu (x > lower VÀ x < upper) thì trả về newval, ngược lại trả về x. Giá trị lower, upper, và newval nên là hằng số.
14trade_when(x, y, z)Được sử dụng để thay đổi giá trị Alpha chỉ trong trường hợp được chỉ định và giữ nguyên giá trị Alpha trong các trường hợp khác. Cũng cho phép đóng các vị trí Alpha (gán giá trị NaN) trong trường hợp cụ thể.

7. Nhóm toán tử BRAIN Expression cho gom nhóm

Nhóm Group Operators trong tài chính thường được sử dụng để thực hiện các phân tích đối tượng tập trung vào các nhóm cụ thể, chẳng hạn như các ngành công nghiệp, lĩnh vực, hoặc các đặc điểm phân loại khác.

Các toán tử này cho phép tính toán và xử lý dữ liệu theo từng nhóm, điều này có ích trong việc tạo ra và kiểm soát chiến lược đầu tư, phân tích hiệu suất theo ngành, và nhiều ứng dụng khác trong lĩnh vực tài chính.

STTTên HàmMiêu tả Chi Tiết
1group_backfill(x, group, d, std = 4.0)Nếu một giá trị cụ thể cho một ngày cụ thể và công cụ là NaN, từ tập các công cụ trong cùng một nhóm, tính giá trị trung bình được cắt bỏ của tất cả các giá trị không phải là NaN trong vòng d ngày gần đây. Xem chi tiết
2group_coalesce(original_group, group2, group3,…)Tái xếp các cổ phiếu còn lại dựa trên group2 và tiếp theo nếu original_group không bao gồm tất cả các cổ phiếu trong universe mục tiêu. Xem chi tiết
3group_count(x, group)Cho số công cụ trong cùng một nhóm (ví dụ: ngành) có giá trị hợp lệ của x. Ví dụ, x=1 cho biết số công cụ trong mỗi nhóm (không quan trọng liệu bất kỳ trường cụ thể nào có dữ liệu hợp lệ hay không). Xem chi tiết
4group_extra(x, weight, group)Thay thế các giá trị NaN bằng giá trị trung bình tương ứng của nhóm. Xem chi tiết
5group_max(x, group)Giá trị lớn nhất của x cho tất cả các công cụ trong cùng một nhóm. Xem chi tiết
6group_mean(x, weight, group)Tất cả các phần tử trong nhóm bằng giá trị trung bình của nhóm. Trung bình = tổng (dữ liệu * trọng số) / tổng (trọng số) trong mỗi nhóm. Xem chi tiết
7group_median(x, group)Tất cả các phần tử trong nhóm bằng giá trị trung vị của nhóm. Xem chi tiết
8group_min(x, group)Tất cả các phần tử trong nhóm bằng giá trị tối thiểu của nhóm. Xem chi tiết
9group_neutralize(x, group)Trung hòa Alpha đối với các nhóm. Các nhóm này có thể là phân ngành, ngành, lĩnh vực, quốc gia hoặc một hằng số. Xem chi tiết
10group_normalize(x, group, constantCheck=False, tolerance=0.01, scale=1)Chuẩn hóa đầu vào sao cho tổng tuyệt đối của mỗi nhóm là 1. Xem chi tiết
11group_percentage(x, group, percentage=0.5)Tất cả các phần tử trong nhóm bằng giá trị qua phần trăm của nhóm. Phần trăm = 0.5 nghĩa là giá trị bằng giá trị trung vị của nhóm. Xem chi tiết
12group_vector_proj(x,y,g)Tương tự như vector_proj(x, y) nhưng x chiếu lên y cho mỗi nhóm có thể là bất kỳ bộ phân loại nào như phân ngành, ngành, lĩnh vực, v.v. Xem chi tiết
13group_rank(x, group)Mỗi phần tử trong một nhóm được gán xếp hạng tương ứng trong nhóm này. Xem chi tiết
14group_scale(x, group)Chuẩn hóa giá trị trong một nhóm để nằm giữa 0 và 1. (x – groupmin) / (groupmax – groupmin). Xem chi tiết
15group_std_dev(x, group)Tất cả các phần tử trong nhóm bằng độ lệch chuẩn của nhóm. Xem chi tiết
16group_sum(x, group)Tổng x cho tất cả các công cụ trong cùng một nhóm. Xem chi tiết
17group_vector_neut(x,y,g)Tương tự như vector_neut(x, y) nhưng x được trung hòa đối với y cho từng nhóm g, có thể là bất kỳ phân loại nào như dòng phân ngành con, ngành, lĩnh vực, v.v.
18group_zscore(x, group)Tính toán group Z-score – đo lường số học mô tả mối quan hệ của một giá trị đối với giá trị trung bình của một nhóm giá trị. Z-score được đo bằng đơn vị độ lệch chuẩn từ giá trị trung bình: zscore = (dữ liệu – trung bình) / độ lệch chuẩn của x cho mỗi công cụ trong nhóm của nó. Xem chi tiết

8. Các toán tử khác

STTTên HàmMiêu Tả Chi Tiết
1convert(x, mode)Chuyển đổi giữa đô la và số lượng cổ phiếu. Khi mode là “dollar2share”, nó chuyển đổi từ đô la sang cổ phiếu; khi mode là “share2dollar”, nó chuyển đổi từ cổ phiếu sang đô la.
2inst_pnl(x)Tạo ra lợi nhuận/giảm trong giá trị cổ phiếu trên mỗi công cụ cụ thể.