精品课程

回測+問題

由bq2wgfv4创建,最终由bq2wgfv4 被浏览 6 用户

\

回測

夏普值(Sharpe Ratio)

夏普值= (R_p - R_f ) / sigma_p

R_p 投资组合平均收益
R_f 无风险利率(如国债)
sigma_p 收益的波动率(标准差)


回測: 2020-01-01 - 2025-12-29


Original


m6:

expr:

c_pct_rank(total_market_cap) as score


expr_filters:

--turn>0.05

net_profit_ttm > 0

pe_ttm > 0



m4

倉位 score_field: score ASC

score_field="""score""", or score_field="""score ASC”””,

(小市值)



m4

持倉股票數量 hold_count: 60

(Change to 60 from 10)



持倉股票數量 hold_count:80

(Performance dropped)



m5

rebalance_period_days = 5

(Changed to 5 from 3)



rebalance_period_days: 10 days (performance dropped)

\

問題

下列代碼似乎沒有作用。如何起作用?

SELECT -- 在这里输入因子表达式 -- DAI SQL 算子/函数: https://bigquant.com/wiki/doc/dai-PLSbc1SbZX#h-%E5%87%BD%E6%95%B0 -- 数据&字段: 数据文档 https://bigquant.com/data/home

-- 计算收益率:这里示例使用常见的“收益率 = 当前 / 过去 - 1”
--m_lag(close, 90) / close AS return_90,
--m_lag(close, 30) / close AS return_30,
close / m_lag(close, 90) - 1 AS return_90,
close / m_lag(close, 30) - 1 AS return_30,
close / m_lag(close, 1) - 1  AS return_1,
-- 下划线开始命名的列是中间变量, 不会在最终结果输出 (e.g. _rank_return_90)

c_pct_rank(return_90)  AS pct_rank_return_90,
c_pct_rank(return_30) AS pct_rank_return_30,

c_rank(volume) AS rank_volume,

-- 日期和股票代码
date, instrument

FROM -- 预计算因子 cn_stock_bar1d https://bigquant.com/data/datasources/cn_stock_bar1d cn_stock_factors -- SQL 模式不会自动join输入数据源, 可以根据需要自由灵活的使用 -- JOIN input_1 USING(date, instrument) WHERE -- WHERE 过滤, 在窗口等计算算子之前执行 -- 剔除ST股票 st_status = 0

QUALIFY -- QUALIFY 过滤, 在窗口等计算算子之后执行, 比如 m_lag(close, 3) AS close_3, 对于 close_3 的过滤需要放到这里 -- 去掉有空值的行 --COLUMNS(*) IS NOT NULL AND return_90 IS NOT NULL AND return_30 IS NOT NULL

--c_pct_rank = 0.0:在当天全市场里几乎最小
--c_pct_rank = 0.5:大概在当天中位数
--c_pct_rank = 0.9:超过当天约 90% 的股票(处在前 10%)
--c_pct_rank = 1.0:当天几乎最大
AND pct_rank_return_90 > 0.2   -- 90日收益率当天前20%
AND pct_rank_return_30 > 0.9   -- 30日收益率在当天前10%(短期很强)

-- 按日期和股票代码排序, 从小到大 ORDER BY date, instrument

标签

量化投资
{link}