社区所有版块导航
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

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

七年实现财富自由 • 1 年前 • 391 次点击  
原创内容第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