Metadata-Version: 2.4
Name: silars
Version: 2026.7.15.0
Summary: Silars - Alpha lens and backtesting library
License-Expression: MIT
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Operating System :: OS Independent
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: LICENSES/Apache-2.0.txt
License-File: THIRD_PARTY_NOTICES.md
Requires-Dist: ipython>=9.5.0
Requires-Dist: lidb>=2026.7.13.0
Requires-Dist: logair
Requires-Dist: numpy>=2.3.1
Requires-Dist: pandas>=2.3.1
Requires-Dist: plotly>=6.3.0
Requires-Dist: matplotlib
Requires-Dist: polars
Requires-Dist: pyecharts
Requires-Dist: scikit-learn
Requires-Dist: scipy
Requires-Dist: mlflow>=3.8.1
Requires-Dist: polars-ds>=0.10.5
Requires-Dist: cvxpy>=1.8.1
Requires-Dist: ecos>=2.0.14
Requires-Dist: atrs
Requires-Dist: tqdm
Requires-Dist: ygo
Dynamic: license-file

# Silars

Silars 是基于 Polars 的因子分析与回测工具库，提供数据预处理、组合权重、策略和回测入口。

## 安装

Silars 需要 Python 3.12 或更高版本；CI 持续验证 Python 3.12 和 3.13。

```bash
pip install silars
```

使用 uv：

```bash
uv add silars
```

## 最小示例

下面按每个 `(date, time)` 截面选择得分最高的两个资产，并生成等权组合：

```python
from copy import deepcopy

import polars as pl

from silars.alphalens import top_k

scores = pl.DataFrame(
    {
        "date": ["2026-01-02"] * 3,
        "time": ["09:31:00"] * 3,
        "asset": ["A", "B", "C"],
        "score": [0.2, 0.8, 0.5],
    }
)

selector = deepcopy(top_k).set_params(num=2)
weights = selector.transform(scores)
print(weights.select("date", "time", "asset", "target_weight"))
```

## 主要入口

- `Preprocessor` 及预处理函数：因子清洗、标准化和中性化。
- `top_k`、`qcut`、`MFE`：组合权重生成。
- `Strategy`、`FactorStrategy`：策略编排。
- `BacktestEngine`、`bt`：回测。
- `Zoo`、`zoo`：因子数据工作区。

这些入口均从 `silars.alphalens` 导入。

## 许可证

Silars 使用 MIT License。`silars/empyrical` 包含 Apache-2.0 许可的第三方代码，详见
`THIRD_PARTY_NOTICES.md` 和 `LICENSES/Apache-2.0.txt`。
