一些因子的来源和原理

对公司经营状况的预估(基本数据)

fundamental datasets

  • 运营盈利: 只对大型公司有效
    • 盈利/支出
      • -rank(ebit/capex)
        • 投入更多到运营盈利上的公司不怎么样
        • 0.3*group_rank(ebit/assets,subindustry)- 0.7*group_neutralize(ts_mean(ebit,210)/ts_mean(capex,210),subindustry)
        • -rank((ebit+assets)/capex)
    • 资产估值/盈利
      • alpha = -group_rank(fnd2_ebitdm, industry)-group_rank(fnd2_ebitfr, industry); group_rank(fn_assets_fair_val_a,industry)>0.5?alpha*2 : alpha
        • fnd2_ebitdm domestic ebit, fnd2_ebitfr foreign ebit
        • fn_assets_fair_val_a 资产估值
  • 留存收益: 未分配给股东的利润
    • rank(ts_delta(retained_earnings / sharesout, 66))
      • 留存收益/股本=每股留存收益: 不受公司规模影响
    • -ts_rank(retained_earnings,250)
      • 留存收益比历史减少, 可能是分红给股东了
  • 营业收入:
    • ts_rank(operating_income,252)
      • 营业收入越高越好,
      • 结合相对股价看(operating_income/close), 如果营业收入增长而股价未能跟上,可能意味着市场尚未充分定价公司改善的前景
      • 结合市值(operating_income/cap)
    • ts_rank(fnd6_fopo/debt_lt,252)
      • 和长期负债的比值
  • 负债
    • 短期债务: 限制同行业比较
      • zscore(cash_st/debt_st)
        • 现金流越高, 还债能力越强
    • 负债公允价值(Fair Value of Liabilities),公司负债在市场上的当前价值
      • -ts_rank(fn_liab_fair_val_l1_a,252)
      • 时间改成半年120
    • liabilities/assets, debt/assets
      • 高杠杆可能带来高回报
  • 收入
    • 税前收入, 销售数量(sales)
      • quantile(ts_rank(pretax_income,250))
        • 税前收入越靠前的公司越好
    • 递延收入: 订阅型业务, 长期合约, 预付款业务
      • slope = ts_regression(fnd6_newqv1300_drcq,ts_step(1),252,rettype=2); rank(slope)
      • 计算dr(deferred revenue)的斜率, 增长说明需求增加, 可能股票会涨
    • 外汇收入: 做多
      • ts_mean(fn_oth_income_loss_fx_transaction_and_tax_translation_adj_a,252)

对外部事件的响应

  • 新闻影响
    • ts_backfill(vec_avg(nws12_prez_4l),504)
      • 新闻发布后股价提升4%的时间
      • ts_backfill(vec_sum(nws12_prez_57p),600)
      • alpha=ts_backfill(vec_avg(nws12_prez_4l),504); trade_when(volume>adv20,alpha,-1)
      • signed_power(ts_backfill(vec_avg(nws12_prez_4l),504)*(1+rank(volume)),2)
    • (ts_arg_max(ts_backfill(news_session_range, 20), 60))
      • 新闻后的波动范围(high-low)越大, 应该做多?? 一个季度内, 到达最大波动范围的最近时间. 越长说明波动衰减的正常. 不会极端的受到
      • 需要用随时间变化快的decay, 和trade_when控制换手率
    • news_tot_ticks 市场上所有交易品种一天内变价次数之和
  • 新闻情绪
  • 社媒: 对volume做neuntralize
    • -scl12_buzz
      • 讨论多的认为是负面情绪
    • ts_std_dev(ts_backfill(snt_social_value,60),60)
      • 在一段时间内有关注是好事, 注意区分不同类型的股票
      • 优化: C60=correlation_last_60_days_spy;Alpha=zscore(ts_std_dev(ts_backfill(snt_social_value, 60),60));trade_when (C60<0.4,Alpha, C60>0.6)
        • 做zscore 变换
        • 和标普指数(SPY) 相关性不能太高(关键)
    • -ts_mean(pv13_ustomergraphrank_hub_rank,504)
      • hub 公司在网络中的中心度, 越低说明对其他合作伙伴依赖越少, 更稳定, 注意区分不同类型的股票
  • volatility(波动率)
    • (implied_volatility_call_120/parkinson_volatility_120)^0.1
      • 历史波动率: daily return的标准差
      • Implied Volatility(隐含波动率): 通过期权定价模型计算
      • Parkinson波动率: 通过价格区间(high-low/close)计算
    • trade_when(pcr_oi_270 < 1, (implied_volatility_call_270-implied_volatility_put_270), -1)
      • pcr_oi_270 (put-call-ratio)未平仓合约数, 小于1 的话(call>put)说明市场看涨
      • 可以根据历史波动率分组, 提升subuniverse-test, 很有效

对市场表现的预估(量价数据)

Price-volume datasets

0阶数据 一阶数据 二阶数据
open returns:
close增长的比例
fear:
ts_mean(abs(returns - market_return)/(abs(returns)+abs(market_return)),20)
close vwap(volume weighted avg price) Illiquidity: abs(returns)/volume
high adv20(avg days volume 20) volatility
low turnover:
volume/sharesout

turn20:
 
volume    
     

常用数据

  • 开盘价, 收盘价,
  • vwap(volume weighted avg price) 当天的平均
  • adv20(avg days volume 20, 过去20天的平均volume)
    • 一个常用的条件是trade_when(volume > adv20, alpha, -1) 表示流动性突然变高
  • 成交量: 根据市值(cap)分组, 不同波动时期区别对待
    • alpha = (1/volume);group = bucket(rank(cap),range ='0.25,1,0.25');group_rank(alpha,group);
      • 成交量太活跃不是好事
  • 5日回归: -rank(close-ts_mean(close,5))
  • turnover

  • 相关性
    • -ts_corr(ts_backfill(fscore_momentum,66),ts_backfill(fscore_value,66),756)
      • 估值(市盈率(P/E)、市净率(P/B)等财务指标来估算)和动量(股票价格变化率计算)的相关性高, 说明股票价格和价值分离?
  • 风险
    • SR = systematic_risk_last_60_days;USR = unsystematic_risk_last_60_days;zscore(USR + SR)
      • 总风险, 高风险是好的?
      • 去掉和指数相关性高的股票? trade_when(correlation_last_60_days_spy > 0.6, zscore(systematic_risk_last_60_days + unsystematic_risk_last_60_days),-1)
    • market_ret = ts_product(1+group_mean(returns,1,market),250)-1;rfr = vec_avg(fnd6_newqeventv110_optrfrq);expected_return = rfr+beta_last_360_days_spy*(market_ret-rfr);actual_return = ts_product(returns+1,250)-1;actual_return-expected_return
      • CAPM(Capital Asset Pricing Model): rfr 是risk free rate + beta * (return - rfr)
      • 如果股票的CAMP-adjusted return是正数, 说明是好事

参考资料

[1] https://platform.worldquantbrain.com/learn/documentation

[2] Kakushadze, Zura. “101 Formulaic Alphas.” SSRN Scholarly Paper. Rochester, NY: Social Science Research Network, December 9, 2015. https://doi.org/10.2139/ssrn.2701346. Alpha101 主要用到量价数据

[3] Wang, Ying, Bohui Zhang, and Xiaoneng Zhu. “The Momentum of News.” SSRN Scholarly Paper. Rochester, NY: Social Science Research Network, October 16, 2018. https://doi.org/10.2139/ssrn.3267337. 新闻动量和基本面相关