Py学习  »  Python

沪深300成份股的因子计算,基于polars的方案,附python代码

七年实现财富自由 • 2 周前 • 55 次点击  
原创内容第976篇,专注AGI+,AI量化投资、个人成长与财富自由。
昨天的文章:沪深300成份股,300支600个csv文件,polars加载仅需0.45秒,附python脚本
咱们对比了pandas,polars和duckdb加载分析大量csv的效率,无论在数据集比较小,还是比较大的情况下,polars的性能最好。
有同学给我留言说,duckdb与parquet更合适。这里就不测试了。
因为duckdb之前我还遇到过,如果有一个文件列匹配不上,整体查询会失败的情况。
另外还有一个更重要的原因,就是咱们因子表达式引擎,也是基于polars开发的,因此,polars就是咱们数据加载和因子计算的基础框架。
今天咱们就来实现因子表达式引擎
无论是规则型策略,还是多因子策略,我们都会在基础数据(基础因子)的基础上去计算衍生因子,这时候,需要一个因子表达式是非常方便的。
首先load_bar_df函数,我们需要指定数据源,就是csv所在的目录,这里的目录可以是一个或多个。目录下的文件名是symbol.csv,我们指定要加载的列和行(日期范围),polars读取所有数据合成pl.dataframe。
然后,我们调用因子表达式引擎,多进程的方式计算因子:
from multiprocessing import freeze_support
from dataset.template import AlphaDatasetfrom load_bar_df import load_all_data_polars
if __name__ == '__main__':    freeze_support()    df = load_all_data_polars(        data_sources=["../data/csi300/history""../data/csi300/inc"],        # symbols=symbols,        start_date="2012-01-01",        end_date="2025-12-31",        columns=["date""symbol""open""high""low""close""volume"]    )
    print(df)
    dataset = AlphaDataset()    dataset.add_feature('ts_delay_20''ts_delay(close,20)')    dataset.add_feature('ts_delay_2''ts_delay(close,2)')
    dataset.prepare_data(df)    print(dataset.raw_df.to_pandas())
代码在如下位置:
后续股票策略也会开发成如下的向导模式:

代码和数据下载:AI量化实验室——2025量化投资的星辰大海

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

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

点击 “查看原文”,直接访问策略集合

扩展  •  历史文章   

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

机器学习驱动的策略开发通过流程 | 普通人阶层跃迁的可能路径?

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

三秒钟创建一个年化28%,夏普比1.25的策略(python系统已开放源代码下载)

6年年化收益46%,最大回撤率为16%的策略(附python代码)

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