“没有一个alpha,一开始就是alpha”
“开始量化,最好是十年前,其次是现在”
“如果没有天赋,那就一直重复”
“看似不起眼的数学,会在将来的某一天,突然让你看到坚持的意义”
“一切都很好,我听到自己,向上的声音”
“市场会惩罚,模糊的愿望,奖励清晰的请求”
“你正在寻找的因子,此刻也在寻找你”
PandaFactor 提供了一系列高性能的量化算子,用于金融数据分析、技术指标计算和因子构建,并且提供了一系列的可视化图表。
编写方法主要分为两种方式:
- Python方式(适合有一定编程基础的小伙伴)(易维护,推荐)
- 公式方式(适合无编程基础的小伙伴)
基本语法
class CustomFactor(Factor):
def calculate(self, factors):
return result
重点要求,必须继承Factor,必须实现calculate方法,calculate返回值必须是Series格式,列为value,索引列为['symbol','date']构成的多级索引。
factors包含了基础的量价信息,例如:"close"、"open"、“volume”等,可通过factors['close']方式获取。
class ComplexFactor(Factor):
def calculate(self, factors):
close = factors['close']
volume = factors['volume']
high = factors['high']
low = factors['low']
# 计算20日收益率
returns = (close / DELAY(close, 20)) - 1
# 计算20日波动率
volatility = STDDEV((close / DELAY(close, 1)) - 1, 20)
# 计算价格区间
price_range = (high - low) / close
# 计算成交量比率
volume_ratio = volume / DELAY(volume, 1)
# 计算20日成交量均值
volume_ma = SUM(volume, 20) / 20
# 计算动量信号
momentum = RANK(returns)
# 计算波动率信号
vol_signal = IF(volatility > DELAY(volatility, 1), 1, -1)
# 合成最终因子
result = momentum * vol_signal * SCALE(volume_ratio / volume_ma)
return result
基本语法
"函数1(函数2(基础因子), 参数) 运算符 函数3(基础因子)"
若是公式比较复杂,可以考虑设置中间变量,分多行编写,系统将读取最后一行作为因子值。
# 计算20日收益率排名
RANK((CLOSE / DELAY(CLOSE, 20)) - 1)
# 计算价格和成交量的相关性
CORRELATION(CLOSE, VOLUME, 20)
# 复杂因子示例
RANK((CLOSE / DELAY(CLOSE, 20)) - 1) *
STDDEV((CLOSE / DELAY(CLOSE, 1)) - 1, 20) *
IF(CLOSE > DELAY(CLOSE, 1), 1, -1)
-
若您为个人交易者,想要快速本地的使用该因子模块,我们准备了一份初始数据库,解压即可运行,因为文件较大,请联系小助理领取,下载解压后,直接执行bin/db_start.bat即可启动数据库。
-
若您为团队或者机构使用者,可以下载系统源码,在本地部署供团队使用。需要提前准备MongoDB,并且修改panda_common的config.yaml的文件与其对应。
目前系统内置了近五年的基础数据,供用户使用。后续的数据更新将在每晚8点自动清洗执行(需要保证程序在期间正常运行),我们计划对接以下数据源:
数据源 | 支持情况 |
---|---|
Tushare | 测试中 |
RiceQuant | 测试中 |
Tqsdk | 测试中 |
QMT | 测试中 |
Wind | 对接中 |
Choice | 对接中 |
若您有相关数据源需求,请务必联系我们,我们会尽快为您接入。
近期更新因子持久化功能,让计算好的因子直接保存,自动更新,极速提取。
panda_factor/
├── panda_common/ # 公共函数&工具类
│ └── config.yaml # 配置文件
├── panda_data # 数据模块,提取数据与因子
├── panda_data_hub/ # 自动更新
│ └── __main__.py # 自动更新任务启动入口
├── panda_factor # 因子计算与分析
├── panda_llm # 大模型接入,支持OpenAI协议,兼容Deepseek
├── panda_server/ # 服务器接口
│ └── __main__.py # 接口服务启动入口
├── panda_web/ # 服务器前端页面
├── requirements.txt # 依赖列表
└── README.md # 项目说明文
请将panda_common、panda_data、panda_data_hub、panda_factor、panda_llm、panda_server这几个文件夹右键标记为Mark Directiory as Sources root
请在含有Python解释器的终端中进入各个子模块目录下面,执行:
pip install -e .
项目本身只是帮助大家生产和更新因子,避免大家在数据清洗、自动化构建上花太多时间。 可通过以下代码,将生产的因子整合到自己的系统或者策略中:
import panda_data
panda_data.init()
factor = panda_data.get_factor_by_name(factor_name="VH03cc651", start_date='20240320',end_date='20250325')
欢迎贡献代码、提出 Issue 或 PR:
Fork 本项目
新建功能分支 git checkout -b feature/AmazingFeature
提交更改 git commit -m 'Add some AmazingFeature'
推送分支 git push origin feature/AmazingFeature
发起 Pull Request
感谢量化李不白的粉丝们对我们的支持
感谢所有开源社区的贡献者
本项目采用 GPLV3 许可证