NovaMarket
← 全部策略

横截面动量

Hyperliquid趋势市永续(可杠杆/做空)较高风险

在标的池里按区间收益排名,做多最强 top-N(等权),定期换仓

战绩

收益
+16.4%
夏普
3.28
最大回撤
1.8%
管理规模
$0
创建时间
2026-07-12
使用人次
0
使用池子
0
结算天数
0

适用市况

趋势市单边上涨或下跌、方向持续的行情
  • 行情有明确方向、突破后延续时表现最好
  • 反复震荡、假突破频繁时会被来回止损
不确定行情会怎么走?看看市场中性策略 →

回测(确定性模拟器)

参数: lookback / top_n / rebalance / slice

合成多标的池横截面选股模拟(8 个标的)——非未来收益承诺。

核心代码

GitHub 源码
"""横截面动量选股(Cross-sectional momentum)—— 嵌入式筛选器。

思路:在一个标的池里按 lookback 区间收益做横截面排名,做多最强的 top_n 个(等名义额),每 rebalance
步重排一次、退出跌出榜单的标的。经典 cross-sectional momentum 因子——不预测单一标的方向,而是"买强汰弱"。
本 demo 直接在 on_tick 里持有一个 Screener 并调用 select(),演示"把选股嵌入策略代码"的用法。

适用性:instrument="perp"、venues=["HYPERLIQUID"]。回测需多标的 universe feed(source="universe")。
"""
from __future__ import annotations

from ..base import StrategyBase
from ..context import StrategyContext
from ..registry import register
from ..screener import Screener


@register("横截面动量")
class XSectMomentum(StrategyBase):
    description = "横截面动量选股:按区间收益排名做多最强 top_n(等权),定期换仓、退出跌出榜的标的。"
    params = {"lookback": 30, "top_n": 2, "rebalance": 20, "slice": 8000.0}
    venues = ["HYPERLIQUID"]
    symbols: list = []
    instrument = "perp"

    def __init__(self, lookback: int = 30, top_n: int = 2, rebalance: int = 20,
                 slice: float = 8000.0) -> None:
        self.screener = Screener("momentum", lookback=int(lookback), top_n=int(top_n), direction="top")
        self.rebalance = int(rebalance)
        self.slice = float(slice)
        self._t = 0
        self._active: set[str] = set()

    async def on_tick(self, ctx: StrategyContext) -> None:
        if self._t % max(1, self.rebalance) == 0:
            new = set(await self.screener.select(ctx))
            for s in self._active - new:
                await ctx.target(s, 0.0)  # 退出跌出榜单的标的
            self._active = new
        for s in self._active:
            px = await ctx.price(s)
            if px > 0:
                qty = self.slice / px
                await ctx.target(s, qty, band=qty * 0.1)
        self._t += 1

完整 SDK 与全部策略以 MIT 协议开源,可直接回测、paper 试跑或二次开发。

运行此策略的池子

暂无池子运行此策略——成为第一个发起者。