社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

这是一个公开策略,年化142% | polars因子引擎升级完成(python代码+策略下载)

七年实现财富自由 • 1 月前 • 66 次点击  
原创内容第864篇,专注智能量化投资、个人成长与财富自由。
策略执行引擎已经完成了更换,目前看运行正常。
下线了几个指标,部分策略使用了该指标会自动下线。
这是一个公开策略,年化142%。
可以直接查看策略参数:
因子计算代码如下:
import numpy as npimport pandas as pdimport polars as plfrom alpha.dataset.utility import DataProxyfrom .ts_function import ts_slope, ts_rsquare, ts_delaydef to_pd_series(feature: DataProxy) -> pd.Series:    """Convert to pandas.Series data structure"""    return feature.df.to_pandas().set_index(["date""symbol"])["data"]def to_pl_dataframe(series: pd.Series) -> pl.DataFrame:    """Convert to polars.DataFrame data structure"""    return pl.from_pandas(series.reset_index().rename(columns={0"data"}))def trend_score(feature: DataProxy, window: int) -> DataProxy:    return ts_slope(feature,window) * ts_rsquare(feature,window)def roc(feature: DataProxy, window: int) -> DataProxy:    """计算给定窗口期的变动率(Rate of Change)"""    df: pl.DataFrame = feature.df.select(        pl.col("date"),        pl.col("symbol"),        # ROC 公式: (当前值 - N周期前值) / N周期前值        (            (pl.col("data") - pl.col("data").shift(window).over("symbol"))            / pl.col("data").shift(window).over("symbol")        ).alias("data")  # 结果命名为 data,保持结构一致    )    return DataProxy(df)import numpy as npimport polars as pldef ATR(feature_high: DataProxy, feature_low: DataProxy, feature_close: DataProxy, window: int) -> DataProxy:    """    Calculate ATR (Average True Range) using Polars.    Parameters:    feature_high (DataProxy): DataProxy containing 'date', 'symbol', and 'data' columns for high prices.    feature_low (DataProxy): DataProxy containing 'date', 'symbol', and 'data' columns for low prices.    feature_close (DataProxy): DataProxy containing 'date', 'symbol', and 'data' columns for close prices.    window (int): The window size for calculating ATR.    Returns:    DataProxy: DataProxy containing 'date', 'symbol', and 'atr' columns.    """    # 合并高点、低点和收盘价数据    merged = feature_high.df.join(feature_low.df, on=["date""symbol"]).join(feature_close.df, on=["date""symbol"])    merged = merged.rename({"data""high""data""low""data""close"})    # 计算 True Range (TR)    merged = merged.with_columns(        pl.col("high").cast(pl.Float64).alias("high"),        pl.col("low").cast(pl.Float64).alias("low"),        pl.col("close").cast(pl.Float64).alias("close"),    )    # 计算 TR 的三个组成部分    tr1 = (merged["high"] - merged["low"]).alias("tr1")    tr2 = (merged["high"] - merged["close"].shift(1)).


    
abs().alias("tr2")    tr3 = (merged["low"] - merged["close"].shift(1)).abs().alias("tr3")    # 合并 TR 的三个部分并取最大值    merged = merged.with_columns(        pl.concat_list([tr1, tr2, tr3]).arr.max().alias("tr")    )    # 使用 rolling_map 计算 ATR    atr = merged.with_columns(        pl.col("tr")        .rolling_map(lambda s: s.mean(), window)        .over("symbol")        .alias("atr")    )    return DataProxy(atr.select(pl.col("date"), pl.col("symbol"), pl.col("atr")))def RSRS(high: pl.DataFrame, low: pl.DataFrame, window: int) -> pl.DataFrame:    """Calculate RSRS (Relative Strength Slope) indicator"""    # 合并高点和低点数据,按日期和symbol对齐    combined = (        high.select(pl.col("date"), pl.col("symbol"), pl.col("data").alias("high"))        .join(            low.select(pl.col("date"), pl.col("symbol"), pl.col("data").alias("low")),            on=["date""symbol"]        )    )    # 计算高点和低点的回归斜率    rsrs = combined.with_columns(        pl.col("high")        .rolling_map(            lambda s: 0.0 if len(s) < window else np.polyfit(np.arange(window), s[-window:], 1)[0],            window,            min_periods=window        )        .over("symbol")        .alias("high_slope"),        pl.col("low")        .rolling_map(            lambda s: 0.0 if len(s) < window else np.polyfit(np.arange(window), s[-window:], 1)[0],            window,            min_periods=window        )        .over("symbol")        .alias("low_slope")    )    # 计算RSRS指标(高点斜率与低点斜率的比值)    rsrs = rsrs.with_columns(        (pl.col("high_slope") / pl.col("low_slope")).alias("rsrs")    )    return rsrs.select(pl.col("date"), pl.col("symbol"), pl.col("rsrs"))
系统代码下载地址:AI量化实验室——2025量化投资的星辰大海
吾日三省吾身
焦虑感,屈从与对抗,均是输入能量,在强化焦虑状态。
总纲: 视而不见,少想多做;顺其自然,为所当为。
视而不见的前提,是需要识别,识别出什么是“纸老虎”。
“随大流”,就是想一想,你熟悉的某个人,遇到类似的情况会如何处理?
多数的人,遇到这种情况,会如何的处理。这就是“随大流”就好。其实我们并不特殊。
然后就是转移注意力转移注意力——永远有效,永远效率最高
根源是性格,多是后天形成的,可以改变。
比如——内心的不安全感!
两句话: 
凡事不要做可怕的预测,什么时候真有问题了,到那个时间再说。——我们小心行事之人,能犯大错的概率很低。
有些事情,细节与表现与预期不符合预期,或者一些突发的状况。有些就是细节没有是下意识执行的,并没有太深的印象——就是你非得回忆,那确实无法“核实”。——但没有任何的失控,甚至有不好的结果的一点点表现。
不要把困难想得太多,到什么山上唱什么歌。——船到桥头自然直。
核心逻辑就是我们如此这般细心,谨慎之人,大概率不会犯多大的错误,即使偶尔的小错误,或者说错一些话,也并没有多大的影响。
代码和数据下载:AI量化实验室——2025量化投资的星辰大海

AI量化实验室 星球,已经运行三年多,1600+会员。

aitrader代码,因子表达式引擎、遗传算法(Deap)因子挖掘引等,支持vnpy,qlib,backtrader和bt引擎,内置多个年化30%+的策略,每周五迭代一次,代码和数据在星球全部开源。

扩展  •  历史文章   

EarnMore(赚得更多)基于RL的投资组合管理框架:一致的股票表示,可定制股票池管理。(附论文+代码)

年化收益200%+的策略集 | 实时板块资金热力图 「aitrader 5.0系统代码发布」

年化19.66%,回撤12%的稳健策略|manus的启发:基于大模型多智能体的智能投研系统(python代码+数据)

年化30.24%,最大回撤19%,综合动量多因子评分策略再升级(python代码+数据)

年化18%-39.3%的策略集 | backtrader通过xtquant连接qmt实战

stock-pandas,一个易用的talib的替代开源库。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/181373
 
66 次点击