Analyzing stock has never been easier.
Project description
hide:
- navigation
快速上手
安裝
在任意平台上,皆可安裝 FinLab Package,我們支援 Windows、MacOS、Linux,並且甚至是 Pyodide! 以新手來說,推薦的使用方式是直接在 Google Colab,來使用。 Google Colab 可以線上產生一個執行 Python 的環境,使用者不需額外在本機安裝任何程式,即可開始使用。
=== ":octicons-code-16: FinLab 實驗室"
打開選股策略頁面 https://ai.finlab.tw/strategies 並點選「建立策略」即可開始使用。
=== ":octicons-code-16: Google Colab" ``` py # 打開 Colab: https://colab.research.google.com/ 新增筆記本 # 在 Colab 中任意 Cell 中執行
!pip install finlab > log.txt
# 即可
```
=== ":octicons-code-16: 本機 Python" ``` py # 在 anacnoda prompt 中執行
pip install finlab
```
!!! tip annotate "可能存在相容性問題"
用「pip install finlab」方法安裝,可能會造成 Package 不相容的問題,假如您希望得到更穩定的版本,請參考「Docker」安裝。
=== ":octicons-code-16: Docker 安裝"
* 前往 Docker 官方網站:https://www.docker.com/products/docker-desktop。
* 在下載頁面中,按一下「Download Docker Desktop」按鈕。
* 完成下載後,執行安裝程式並按照提示進行安裝。
### 2. 下載 FinLab 的 Jupyter 映像檔
在安裝 Docker 完成後,請按照以下步驟從 Docker Hub 下載 FinLab 的 Jupyter 映像檔:
開啟終端機或命令提示字元。
輸入以下命令以下載 FinLab 的 Jupyter 映像檔:
```bash
docker pull finlab/jupyter-finlab
```
此命令將會從 Docker Hub 下載映像檔,請耐心等待下載完成。
### 3. 執行映像檔並連接到 8888:8888 的 IP 位址
下載完成後,您可以使用以下命令執行映像檔:
```bash
docker run -p 8888:8888 finlab/jupyter-finlab
```
此命令將會啟動一個容器並將容器內部的 8888 埠口映射到您的本機 8888 埠口。請耐心等待容器啟動完成,終端機中將會顯示一個 URL,例如:
```bash
http://127.0.0.1:8888/?token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```
請複製該 URL,稍後您將使用它來連接到 JupyterLab。
### 4. 使用 JupyterLab 和 FinLab 套件
現在您已經成功啟動了 JupyterLab,請按照以下步驟進一步使用 JupyterLab 和 FinLab 套件:
在瀏覽器中打開剛剛複製的 URL。這將會顯示 JupyterLab 的介面。
在 JupyterLab 的介面中,您可以創建新的 Jupyter Notebook 。
在 Notebook 中,您可以使用 FinLab 提供的功能和套件。FinLab 是一個針對金融數據分析和策略回測的 Python 套件,詳細的使用方法請參考 FinLab 的官方文件。
</div>
下載資料
輸入以下程式碼,即可下載資料。可以查詢有哪些歷史資料可以下載。
from finlab import data
data.get('price:收盤價')
date | 0015 | 0050 | 0051 | 0052 | 0053 |
---|---|---|---|---|---|
2007-04-23 | 9.54 | 57.85 | 32.83 | 38.4 | nan |
2007-04-24 | 9.54 | 58.1 | 32.99 | 38.65 | nan |
2007-04-25 | 9.52 | 57.6 | 32.8 | 38.59 | nan |
2007-04-26 | 9.59 | 57.7 | 32.8 | 38.6 | nan |
2007-04-27 | 9.55 | 57.5 | 32.72 | 38.4 | nan |
撰寫策略
可以用非常簡單的 Pandas
語法來撰寫策略邏輯,以創新高的策略來說,可以用以下的寫法:
from finlab import data
close = data.get('price:收盤價')
# 創三百個交易日新高
position = close >= close.rolling(300).max()
position
date | 0015 | 0050 | 0051 | 0052 | 0053 |
---|---|---|---|---|---|
2007-04-23 00:00:00 | False | False | False | False | False |
2007-04-24 00:00:00 | False | False | False | False | False |
2007-04-25 00:00:00 | False | False | False | False | False |
2007-04-26 00:00:00 | False | False | False | True | False |
2007-04-27 00:00:00 | False | False | False | False | False |
這邊的 position
是一個 False/True 的查詢表,當數值為 True ,代表該股票在當天有創新高,而數字 False 則代表沒有創新高。由於創新高的股票很少,上面的範例中,只有少數股票的數值會是 True。
假設我們希望每個月底,搜尋上表中數值為 True 的股票並且買入持有一個月,可以用以下的語法:
回測績效
from finlab import backtest
report = backtest.sim(position, resample='M')
report.display()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for finlab-0.5.1-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1a810d128d4441b566b6cade44464816639ff6a95be407f2da76e87360fe844d |
|
MD5 | e39d4a570efce16be09e3b16535e8461 |
|
BLAKE2b-256 | de26b4a4c4d120ef99858018a7f031791c3c0676e3ae704206f8472b2ba24948 |
Hashes for finlab-0.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d22cb3a63057671f17d3bda25cba6ee99a04ebf2e3f8a91bdb7d504355d42208 |
|
MD5 | d0ac55b9dfc57639ceaf0a525eb720fe |
|
BLAKE2b-256 | ecc0d6911ab6440731fe96b00f19722c456aeea3049b28b9a1ea9e1d9a793d8b |
Hashes for finlab-0.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 60688fe0a74a9563fa45953516ceff7f4dfe7b4934251b47d0896bdbbc49752f |
|
MD5 | 40f6e4f62a9ac9140e3fee2488e14c8a |
|
BLAKE2b-256 | ec66917fb013250a6240b8c2db3a3cd39fc992ac0cb5a59e55d736d8e1f52b77 |
Hashes for finlab-0.5.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aea1b703e5c1a2a0f58d55a8fda1c5df9b6c7dc7a0b09e08c783df9febd9e1bc |
|
MD5 | d52204c21169a51a3181715cee692968 |
|
BLAKE2b-256 | 12b25790535255145e823818aa42b614c38661a542d746c671af58b5c27b73db |
Hashes for finlab-0.5.1-cp311-cp311-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c7d78c7d19d999829fbfa333d283166dc1d2a3ab9621d4ff1bbdbdd58cdc64ae |
|
MD5 | d0eb91db25995e162d34fe0c28ad107f |
|
BLAKE2b-256 | 4f22f2557c254fc422693a102d656a762b313862e96b8acb148d2d3a94feec12 |
Hashes for finlab-0.5.1-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8542dcfbf1ca679f3253ea57d5e344461f8725e15024b46305763810caeb8e66 |
|
MD5 | 07eb7e020fe08f57090c3199fe1abe01 |
|
BLAKE2b-256 | a19d15a19d0b6ce4265c917a039e54898b0a4bba39109ab3d2640473b2069e9a |
Hashes for finlab-0.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e89f04ce9f16947e8bb2e9a7edf73b2186b80f18ec52ac0794f5fdf1ba0a9c4d |
|
MD5 | db6c8a03c3db01e02b29053d8bd608ef |
|
BLAKE2b-256 | e244e82551bdf3570cedf7f1bfd303c2f520b4d489204bd9da753a005d865368 |
Hashes for finlab-0.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1934a9f52fb7df6e872ab6d0f190b09d1dec4ce4e5adfb07c3f123828d9c8ae5 |
|
MD5 | 0edbf5de909b5631755373e67d5baaac |
|
BLAKE2b-256 | 102e4ee5d4c0cd79d242b598d1e79d4f1a40e3898b3d4f51232076bdec2fbb44 |
Hashes for finlab-0.5.1-cp310-cp310-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9628c3977f4c483ad2a3f5f99178021b4918707c4aca0c9cb524021656e8a669 |
|
MD5 | 299c020ff226afb2faccad24012d5764 |
|
BLAKE2b-256 | 0727a745e2c4d1d5b7c76a561209fbd5cf39cb1b524a07af0a0c5aace1f4c5d6 |
Hashes for finlab-0.5.1-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5d35cc9b006ff5a599ecce93bb258dc47318cb18476ed78dcbd7f18be28ce4fd |
|
MD5 | 33a9cb19faebac75b831af7b08206997 |
|
BLAKE2b-256 | 3314d4c36b770e19e3e4b0efc187f1c8fa34ac12c01add53fcfc2672c3f95c58 |
Hashes for finlab-0.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d2e1551cf41622bd6b4665ff2b7e97d4eba869c4992dbc319d86a60e9b4fe9f0 |
|
MD5 | 6b4003042d1a07df50332db9ebbe67d8 |
|
BLAKE2b-256 | fd6562818603dc86fea02fe60288c3128c77e658bb31c067df326aa7cd38f180 |
Hashes for finlab-0.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a9c906ce508d3a03d268b7ae6c487cc9c251a82316bcf333d9a6070f4efb0602 |
|
MD5 | 05be98ab8078ffef62a3adb2655c784b |
|
BLAKE2b-256 | 70d6c7480d7afee3e361fc7307726240ac977d0982559204023b1673c69a8455 |
Hashes for finlab-0.5.1-cp39-cp39-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7b5111fdac0b4d40d8681e00a68e532dd037c112942f44f3ac7984d116c38142 |
|
MD5 | f2679dddb44acf0cccd9181540211dae |
|
BLAKE2b-256 | 1893163d526f29bc1be9b71067c4ce32a1ab3983be523a326180c5ac7a976fa7 |
Hashes for finlab-0.5.1-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f7de5c5fc85952350d510a078cc9c95f6917e08f1c9af154331a93b7cfcb9159 |
|
MD5 | fd7ae67e3311b9e66da17a78cd1d6966 |
|
BLAKE2b-256 | dd75667082a0357a977eed85e3951d5c959a1e5ba51c987dbf5b49c407bef83a |
Hashes for finlab-0.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 83df71da75f823c16d049ecbe698a64b747be77e457ae49e4055a17fe5ffec08 |
|
MD5 | fc27ff20ee7129b0da51d181a0cc3638 |
|
BLAKE2b-256 | fdbf4cf996ec952709dd7a637f7a40ca5ea5b01eb39743ed759e857a56668371 |
Hashes for finlab-0.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4c63910a62d654d784128c74a913ee79b2a5f8dc624bd3b74353a7a66197cb26 |
|
MD5 | b25d28c93ee3c875da5515f78409214c |
|
BLAKE2b-256 | a31847672519d2f61a3a8a8a29b59c107664620ad9fb28899fdd0685c8eaf245 |
Hashes for finlab-0.5.1-cp38-cp38-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ebfc6e9a61186782947afd833d844db79592080d3e7ed9adb26c60055d0ac3d |
|
MD5 | 833b826a12e3d365e57458092d221802 |
|
BLAKE2b-256 | 8e0577483e10c3e15059b1a3103ea7ed2b1e769748911faabfe56747f2246d27 |
Hashes for finlab-0.5.1-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9b621466afef38f10c34af72df430254ab21d30594b9d35e5aa51859a004d400 |
|
MD5 | 698ff177222b222fedc403ae7b9b5dcc |
|
BLAKE2b-256 | f6a135a2452c9401cc26a78613995ef161b16d4910ef3dfd99c83ab8b86d8103 |
Hashes for finlab-0.5.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 17956562a6893d9cbf68fb7f17537ae0ef51852154a133faa3898966c9b8d142 |
|
MD5 | 47d5926bdd1e3c2d9e2346b23adf2542 |
|
BLAKE2b-256 | 954c82eb7bbfa617c1f770ce241c6fc5a5bf0d2ef8adcf311aace1407af72139 |
Hashes for finlab-0.5.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e15ce93211b16e8998c075f1e6423f19059b0bff5019f8a8f64e62b7acc34a18 |
|
MD5 | 4a887020a0ac25af9a405d0433355090 |
|
BLAKE2b-256 | eaad126c68c85f4105c3eb06d94ad611d61ca233dae6ac48c12f4bfc0e4ea237 |
Hashes for finlab-0.5.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1124d313abf7baa2225c156a21a4e0fe5e203a349086447799f25a9b032c2a2c |
|
MD5 | d8ccb0e8d98966583cb436b27632ce86 |
|
BLAKE2b-256 | a7e1c4f6ebd76310da179acd2be52d8422e507d265ea992d5905e75236c28af5 |
Hashes for finlab-0.5.1-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5866b371b09fc1faa5babbb57f024cd68f2f2590d444f9f5e75580dedd64b51 |
|
MD5 | 2504eea8d7da2aeba8220efdf27b039a |
|
BLAKE2b-256 | b419c0cfe00f51efed4b92b3bfbfad0601221b9031483deb8500e94b5233a1cd |
Hashes for finlab-0.5.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eb16c9b458e92f7dcff0773fe60dbf95c8abcb070966f3a5f8730e8e2a63ce22 |
|
MD5 | 73442692a911f8e13f2138a001485e74 |
|
BLAKE2b-256 | c3ce26e193671a493050e1ecf015b64a7bb85657095e5305558f486aadb8fb4c |
Hashes for finlab-0.5.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ada28b8da7a90a0d83261bc5e54488e6c0f2dc28a2c535f022d1201cfeb88d93 |
|
MD5 | 8633d548bec4c8bb80d6a4ec64a6244f |
|
BLAKE2b-256 | c387f8e83516bd24b5ce3c427ad6b676cff1b5d4ca41f553e9d59d436b82c3ee |
Hashes for finlab-0.5.1-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5edc2d889f4bdefe120ca8766e1afdc1c8d54c47da4f540d843d7e06b1eabbb3 |
|
MD5 | 95cb20307b2d6efc283f559bfefa894f |
|
BLAKE2b-256 | af5e8a00f064b5a79860dc28ace3dac0653680388196524ce9ccd7363f104d64 |