WorldQuant 部分函数解释说明

WorldQuant 部分函数解释说明

Arithmetic

  1. abs
    x的绝对值
  2. add(x, y, filter = false), x + y
    添加所有输入(至少需要2个输入)。如果filter=true,则在添加之前将所有输入NaN过滤为0
  3. densify(x)
    如果x中唯一值的数量为n,则将这些值映射到0和(n-1)之间。数量级不需要保留。
  4. divide(x, y), x / y
    x除以y
  5. inverse(x)
    1 / x
  6. log(x):对数; max(x, y, …):最大值; min(x, y …):最小值; multiply(x ,y, … , filter=false):乘以; power(x, y):x ^ y; reverse(x): -x;
  7. sign(x)
    当x>0,sign(x)=1;
    当x=0,sign(x)=0;
    当x<0, sign(x)=-1;
    当x=NaN,sign(x)=NaN;
  8. signed_power(x, y)
    x提高到y的幂,使得最终结果保留x的符号。
    If x = 3, y = 2 ⇒ abs(x) = 3 ⇒ abs(x) ^ y = 9 and sign(x) = +1 ⇒ sign(x) * (abs(x) ^ y) = signed_power(x, y) = 9
  9. subtract(x, y, filter=false), x - y
    x-y。如果filter=true,则将之前将所有输入NaN过滤为0

Logical

  1. and(input1, input2)
    逻辑AND运算符,如果两个操作数都为真,则返回真,否则返回假
  2. if_else(event, input1, input2)
    如果提供的事件条件event为真,则将返回input1。如果提供的事件条件为false,则将返回input2。
  3. is_nan(input)
    判断是否为NaN
  4. not(x)
    取反,如果x=true,则返回false

Time Series

  1. days_from_last_change(x)
    自上次更改x以来的天数
  2. hump(x, hump = 0.01)
    限制投入变化的数量和幅度。
    如果今天的值与昨天的值相比只有微小变化(不超过阈值),则驼峰运算符的输出与昨天保持不变。如果变化大于限制,则输出为昨天的值加上变化方向的限制。
  3. kth_element(x, d, k)
    通过查看回溯天数d返回输入的第K个值。如果k=1,此运算符可用于回填缺失的数据
  4. last_diff_value(x, d)
    返回过去d天中不等于当前x值的最后一个x值
  5. ts_arg_max(x, d)
    返回过去d天时间序列中最大值的相对指数。如果当前日期具有过去d天的最大值,则返回0。如果前一天具有过去d天的最大值,则返回1。
    例如:d=6,过去6天的值为[6,2,8,5,9,4],第一个元素为今天的值,则最大值为9,并且在今天之前4天存在。因此,ts_arg_max(x,d)=4
  6. ts_arg_min(x, d)
    返回过去d天时间序列中最小值的相对索引;如果当前日期具有过去d天的最小值,则返回0;如果前一天具有过去d天的最小值,则返回1。
  7. ts_mean(x, d)
    返回过去d天x的平均值。
  8. ts_av_diff(x,d)
    如果d=6,过去6天的值为[6,2,8,5,9,NaN],则ts_mean(x,d)=6,因为NaN在平均值计算中被忽略了。因此,ts_av_diff(x,d)=6-6=0
  9. ts_backfill(x,lookback = d, k=1, ignore=“NAN”)
    如果数据字段x的输入值为非NaN,则输出为x
    如果数据字段x=NaN,则输出过去252天内x的最新可用且非NaN的值
  10. ts_corr(x, y, d)
    返回过去d天x和y的相关性
  11. ts_count_nans(x ,d)
    返回过去d天内x中NaN值的数量
  12. ts_covariance(y, x, d)
    返回过去d天y和x的协方差
    在实际计算中,协方差通常通过以下公式计算:
    [ \text{Cov}(X, Y) = \frac{1}{n-1} \sum_{i=1}^{n} (X_i - \bar{X})(Y_i - \bar{Y}) ]
  13. ts_decay_linear(x, d, dense = false)
    返回过去d天x的线性衰减。dense =false表示运算符在稀疏模式下工作,我们将NaN视为0。在密集模式下会。
  14. ts_delay(x, d)
    返回d天前x值
  15. ts_delta(x, d)
    返回x - ts_delay(x,d)
  16. ts_product(x, d)
    返回过去d天x的乘积
  17. ts_rank(x, d, constant = 0)
    对过去d天内每个仪器的x值进行排名,然后返回当前值+常数的排名。如果未指定,默认情况下,常量=0。
  18. ts_quantile(x,d, driver=“gaussian” )
    它计算ts_rank,并将驱动器分布的逆累积密度函数应用于其值。
    driver:gaussian,uniform,cauchy
  19. ts_regression(y, x, d, lag = 0, rettype = 0)
    从过去d个交易日的数据中,使用x估算y时,从方程中返回β系数。
    列如:得到d天内回报率和分析师评级之间的关系,返回线性回归系数,如果系数的排名(rank)较高说明过去预测得比较准确
  20. ts_scale(x, d, constant = 0)
    返回_x-ts_min(x,d))/(ts_max(x,d)-ts_min[x,d])+常数。
  21. ts_std_dev(x, d)
    返回过去d天x的标准偏差
  22. ts_step(1), step(1)
    返回天数计数器
  23. ts_sum(x, d)
    过去d天x的总和
  24. ts_zscore(x, d)
    描述了一个值与一组值的平均值之间的关系。ts_zscore分数是根据平均值的标准偏差来衡量的:(x-tsmean(x,d))/tsstddev(x,d)。此运算符可能有助于减少异常值和下降。

Cross Sectional

  1. normalize(x, useStd = false, limit = 0.0)
    计算某个日期的所有有效alpha值的平均值,然后从每个元素中减去该平均值
    此运算符计算某个日期的所有有效alpha值的平均值,然后从每个元素中减去该平均值。如果useStd=true,则运算符计算结果值的标准偏差,并将每个归一化元素除以它。如果limit不等于0.0,则运算符将结果α值(在-limit到+limit之间)。
    例子:
    如果在某个日期,某个输入x的仪器值为[3,5,6,2],平均值=4,标准偏差=1.82
    normalize(x,useStd=false,limit=0.0)=[3-4,5-4,6-4,2-4]=[-1,1,2,-2]
    normalize(x,useStd=true,limit=0.0)=[-1/1.82,1/1.82,2/1.82,-2/1.82]=[-0.55,0.55,1.1,-1.1]
  2. quantile(x, driver = gaussian, sigma = 1.0)
    对原始向量进行排序,移动排序后的阿尔法向量。driver:gaussian,uniform,cauchy
  3. rank(x, rate=2)
    在所有仪器中对输入进行排名,并返回一个在0.0和1.0之间均匀分布的数字
  4. scale(x, scale=1, longscale=1, shortscale=1)
    将输入缩放标准尺寸。
    例:scale(returns, scale=4); scale (returns, scale= 1) + scale (close, scale=20); scale (returns, longscale=4, shortscale=3)
  5. winsorize(x, std=4)
    x以确保x中的所有值都在下限和上限之间,上限被指定为std的倍数。
  6. zscore(x)
    zscore是一种数值测量方法,描述了一个值与一组值的平均值之间的关系。zscore是根据平均值的标准偏差来衡量的

Vector

  1. vec_avg(x)
    取x的平均值
  2. vec_sum(x)
    x之和

Transformational

  1. bucket(rank(x), range=“0, 1, 0.1” or buckets = “2,5,6,7,10”)
    将浮点值转换为用户指定bucket的索引。Bucket可用于创建组值,这些值可以作为输入传递给组运算符。
    buckets = “2,5,6,7,10” [-1,3,6,8,12] 变为 [0,1,2,4,5],解释:-1小于2,则为0,3在2和5之间则为1,6在5和6之间则为2,8在7和10之间则为4,12大于10则为5,如果有13也为5.
    range=“0.1, 1, 0.1” [0.05,0.5,0.9]变为[0,4,8]
  2. trade_when(x, y, z)
    用于仅在指定条件下更改Alpha值,并在其他情况下保持Alpha值。它还允许在指定条件下关闭Alpha位置(分配NaN值)
    如果触发器z>0,则Alpha=NaN。
    如果触发器x>0,则Alpha=AlphaExp;
    否则,Alpha=previousAlpha

Group

  1. group_backfill(x, group, d, std = 4.0) *
    如果某个日期和仪器的某个值是NaN,则从同一组仪器中计算过去d天内所有非NaN值的winsorized平均值
    如果d=4,并且组中有3个仪器(i1,i2,i3),其过去4天的值为x[i1]=[4,2,5,5],x[i2]=[7,NaN,2,9],x[i]=[NaN,-4,2,NaN],其中第一个元素是最新的,那么如果我们想回填x,我们只需要回填x[i3]的第一个元素,因为其他所有仪器的第一个元件都是非NaN的

  2. group_mean(x, weight, group)
    组中的所有元素都等于平均值

  3. group_neutralize(x, group)
    如果10个仪器在某个日期的字段x值为[3,2,6,5,8,9,1,4,8,0],前5个仪器属于一组,后5个属于另一组,则第一组的平均值=(3+2+6+5+8)/5=4.8,第二组的平均数=(9+1+4+8+0)/5=4.4。从各组仪器中减去平均值得到[3-4.8、2-4.8、6-4.8、5-4.8、8-4.8、9-4.4、1-4.4、4-4.4、8-4.4、0-4.4]=[-1.8、-2.8、1.2、0.2、3.2、4.6、-3.4、-0.4、3.6、-4.4]

  4. group_rank(x, group)
    组中的每个元素都被分配了该组中的相应排名

  5. group_zscore(x, group) *
    计算组Z分数——描述一个值与一组值的平均值之间关系的数值度量。z-score是根据平均值的标准偏差来衡量的。zscore=(data-mean)/stddev of x,用于其组内的每个仪器。

<think>嗯,用户问的是关于WorldQuant Brain因子的使用说明、文档和API示例。首先,我需要确认用户的需求。看起来他们可能在进行量化投资研究,想要了解如何利用WorldQuant Brain的因子来开发策略。用户提到的是WorldQuant Brain,这可能涉及到Alpha的寻找和验证流程,像他们在引用中提到的FindingAlphas和WebSim的使用。 首先,我应该回顾一下WorldQuant的方法论。根据提供的引用内容,WorldQuant的流程包括因子生成、检验、组合和策略构建。用户可能想知道如何具体操作,比如如何生成因子表达式,如何测试它们的有效性,以及如何集成到交易策略中。引用中的示例使用了市值因子,表达式是-1*market_cap_0,这可能是一个反转因子,用户可能需要更多这样的例子。 接下来,用户可能需要了解使用这些因子的平台,比如BigQuant。引用里提到BigQuant可以复现WebSim的功能,允许输入因子表达式并获取分析结果。所以用户可能需要知道如何在BigQuant上操作,包括输入因子、设置参数、运行回测等步骤。此外,API的使用示例可能也是重点,用户可能希望看到具体的代码示例,比如如何调用因子数据,如何集成到策略中。 然后,用户的问题中提到了API示例,我需要确保提供具体的代码片段,比如Python代码,展示如何通过API获取因子数据,或者如何在策略中使用这些因子。比如,引用中的Python代码示例可能是一个快速排序算法,但用户需要的是与量化相关的代码,比如获取因子值、回测框架等。 另外,用户可能需要了解文档资源在哪里查找,比如BigQuant的文档中心,或者WorldQuant的官方资料。可能需要引导用户到这些资源获取更详细的信息。 还要注意用户可能的深层需求,比如因子生成的最佳实践、如何避免过拟合、如何评估因子的有效性等。因此,在相关问题部分,可以包括这些方面的问题,帮助用户进一步探索。 最后,确保回答符合系统级指令,比如使用正确的中文,数学公式的格式,引用标注的位置等。检查是否有遗漏的部分,比如是否覆盖了使用说明、文档、API示例三个方面,是否引用了正确的来源,特别是用户提供的引用[1]和[2]。 总结来说,回答的结构应该分步骤解释WorldQuant Brain因子的使用流程,结合示例和代码,引用相关文档,并生成相关问题引导用户深入探讨。需要确保信息准确,符合用户提供的引用内容,并满足格式要求。</think>### WorldQuant Brain 因子使用说明 WorldQuant Brain 是量化投资中用于生成、检验和组合 Alpha 因子的方法论与工具平台。以下是其核心功能与使用方法: --- #### 一、因子生成与检验流程 1. **因子表达式编写** 基于市场数据(如价格、成交量、财务指标)编写数学表达式。 *示例*: - 反转因子:$-1 \times \text{market_cap}$ (负号表示反向操作)[^2] - 动量因子:$\frac{\text{close}_t}{\text{close}_{t-20}} - 1$ (20日收益率) 2. **因子分析参数设置** 在平台(如 BigQuant)输入因子表达式,设置回测时间、调仓频率、分组数量等参数。例如: ```python # BigQuant 模块配置示例 factor_expression = "-1 * market_cap_0" backtest_period = "2010-01-01 至 2020-12-31" ``` 3. **回测与统计检验** 运行回测后,平台会输出以下结果: - **IC值**(信息系数):衡量因子与未来收益的相关性 - **分组收益**:按因子值分组的平均收益率曲线 - **夏普比率**:风险调整后收益指标[^1] --- #### 二、API 与文档资源 1. **官方文档** - WorldQuant 官方读本 *Finding Alphas* 提供因子生成方法论[^1] - BigQuant 平台的[因子研究文档](https://bigquant.com/docs)(包含表达式语法、API 接口) 2. **API 调用示例** ```python # 获取因子历史数据(Python 示例) from bigquant import get_factor_data factor_data = get_factor_data( expression="rank(volume_0) - rank(close_0)", start_date="2020-01-01", end_date="2023-01-01" ) ``` 3. **策略集成** 将有效因子组合为多因子模型,并嵌入交易策略: ```python # 多因子加权示例 combined_alpha = 0.6 * factor1 + 0.4 * factor2 ``` --- #### 三、注意事项 - **避免过拟合**:通过交叉验证(如分时段回测)检验因子鲁棒性 - **交易成本**:需在回测中扣除手续费和滑点 - **风险控制**:设置最大回撤阈值或行业中性约束[^2] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值