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.5-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d5aa91bab2de7571935144d3a003c92fe977e1119d5a6498e7af7e2328418f7d |
|
MD5 | 14a8b543d8bb549d2d2499873dfc36b4 |
|
BLAKE2b-256 | 142a453fa2c00b58e522ed97c7b0beb9367fee9f7066252090d993071987fcd0 |
Hashes for finlab-0.5.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b7699008736fee61b7e54a7ab88e4ffcbb72003cad0b0e922a92911de6bd2026 |
|
MD5 | d2140af4f9bf3ca149e60d6737aa9e98 |
|
BLAKE2b-256 | 78dba8b41b1db00db01d28950ba1a76cf78a86f2eee31b5484224b9d6b1ced65 |
Hashes for finlab-0.5.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8667b82c54170044dd798ff056d4233d98d35cac8cbe43f3331c70177b698d55 |
|
MD5 | fb4503a01f0545d62dc6f2941068dc65 |
|
BLAKE2b-256 | 9b26e94aaefbcacb332d397db9dcabd1a9e060637811a08fe99f8d9018834e2c |
Hashes for finlab-0.5.5-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 36f7303f83150293b5e9606f28119d8b42f4083bf6a313ed6115c58814eb625b |
|
MD5 | 165c9306f464cf875595cd7cb76ae197 |
|
BLAKE2b-256 | 706dd9c5c1ed02faa55dd772fc54da3d1290900568886539bb7aa9c5977ab4dd |
Hashes for finlab-0.5.5-cp311-cp311-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f81b4b1133010aaec004eab66894cd7d62753553bd8a8c99cb4d6ec8ee13efdd |
|
MD5 | 975fd63fbd74d63fa710963be521792a |
|
BLAKE2b-256 | 84a5a99a4e77eba8b73897ee41c2379cea767e0ba80e0acff62a50ee6747a06d |
Hashes for finlab-0.5.5-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb15b909bded9911b2307b31eb96a09f5150ac3e58616f9633fea4d9b04d993a |
|
MD5 | 44156924bfcd2bf253bdf4e2523e9505 |
|
BLAKE2b-256 | 565b5e0bacd694130613c3fa9e27493065e11199795ef317ed16368e7a8b4ee5 |
Hashes for finlab-0.5.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe86434995f629d8466a93a962cdd82214205dc866b2cdf5756e0ce8adc65118 |
|
MD5 | b240c5b188bd860f6fc35cebfd19c045 |
|
BLAKE2b-256 | 329c65673136ff5284fc71fad2b6a524f9017f1e7a4497d10c5c65347420d93e |
Hashes for finlab-0.5.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eff9487ea4bc26151d8c0110ed80871bc7bd50210491f28ae7dc6bcbae2317c5 |
|
MD5 | 7b4860d58f35f257e9d9e1e102decc18 |
|
BLAKE2b-256 | 0eaac751122d6e131a372a0af371187e890dd499fe36dda7d0852aaf88546521 |
Hashes for finlab-0.5.5-cp310-cp310-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9a7c3d74b068a5c5f7069f2ce914a54c9176b1900de49fb509d5a8af27f1f876 |
|
MD5 | 30a48778d0d377759955ff4af5f2b2d6 |
|
BLAKE2b-256 | 75b401ea2aeb2364d3331b8cf651b9fd6010575f6842a754e21d6f4fed536882 |
Hashes for finlab-0.5.5-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d096d50c5a9bcee5104ece44ad9b0ac3753f0d298f8cf90fea9fb97621a0c73d |
|
MD5 | ffc19ca837ff85acc15838f91582fef5 |
|
BLAKE2b-256 | 31705d736e453abb4a24912f56648e766d20c4211af4113993e514d47fe955ee |
Hashes for finlab-0.5.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5f682538564c66857dffba1348a7e06f46516137880aef5b36b23ec89883a652 |
|
MD5 | 055c896ddc6a53a8fc7cdc32abdb0375 |
|
BLAKE2b-256 | de1e2e8798a1beb9de4b7efc0613659ea11955ae22c627d291f0d5fc0ef9dbc8 |
Hashes for finlab-0.5.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7380bad3e1c1d15cdb44af56c208b313c20127310818276533d0d2023e850b21 |
|
MD5 | 8aaf43284271e5bc851f49c3558d2933 |
|
BLAKE2b-256 | 7bd9f7b90c068ae7eb0c76451d9f77052b1875154b14fc452c067b7ad09f9342 |
Hashes for finlab-0.5.5-cp39-cp39-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8b828300474e433686a55ecf6ce4ab0ef739a98bac307388369ece8beafac159 |
|
MD5 | bcfc14a62732c0fba1fc63b1f9a8baad |
|
BLAKE2b-256 | 204b949d34410ab085b0bb9da4ce1315f3629b8857db9f189d512db0d127fb1d |
Hashes for finlab-0.5.5-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c6a155fce23f8b5cc73d326cac4c065409d1c09f16fb9420094f766ceda9c49 |
|
MD5 | 2a9b4a326c5788ad8a10e1f4992b0923 |
|
BLAKE2b-256 | 65f1671c6c9569365ac77ac124ef8bcc458f758f835784521ea9e7f0c255e227 |
Hashes for finlab-0.5.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1dea2cb02b660f8d9920601f0ae3bf46a7630d762d9a098d8efd15ba486d9217 |
|
MD5 | 39298269eef7d5c9f817b603463b55aa |
|
BLAKE2b-256 | a5817f19e82967986065ae004676451e639ff0291d72664bd08e6a43c8c55988 |
Hashes for finlab-0.5.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d29d5fe5fb897ac66282d6d50e0d0004df5a239b0ac80ed8eb5ef043a5cdbcef |
|
MD5 | 15e4f75268ff149618e7fb3eafc52f36 |
|
BLAKE2b-256 | 9e0b5b5facf4919622956f89c1cfed4e19473c59ecbe7be275e2a9b44689c5cd |
Hashes for finlab-0.5.5-cp38-cp38-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 63462599f593462985bd33aa5dc5bd7443979ccedd908490407f66cc6757d1b8 |
|
MD5 | 66436eb43c614ed3b265eba16ad2a79f |
|
BLAKE2b-256 | 3b5a5e216b3c974215b5aabb0c54a5e0fe4759df44d742aa8c0413b07adc2f1a |
Hashes for finlab-0.5.5-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 045e9f988e428e36e303ffdd4571bbe0082c3f4b82372ac4b3ba310091b4428b |
|
MD5 | de4a5741a262414008283b2ab648fee1 |
|
BLAKE2b-256 | 03aae60f963b2f6e70f250fa96ad8c6adae9d62c7c5e6820feb81f08bb4ebcd7 |
Hashes for finlab-0.5.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1201cc54cc493d0024ef43740c18974fa7e154c38d87e1bf6a29956516346e2b |
|
MD5 | 89b688280e8b8947d92e2a50bc617bf9 |
|
BLAKE2b-256 | bdb337417113e4cfbf2a12d186cb845cb8d0a84f1d196667c4851d59eedc218a |
Hashes for finlab-0.5.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f9e3ef3a968216ab04b12ff2345dc03efc4376b47fc65b30a7f015f27546ea30 |
|
MD5 | d1841e4222537166a5078b419f99a57c |
|
BLAKE2b-256 | 076462b2a0fc5ff290c713ecf0b8071b9b49c464d1c9a9af6df027304e5e4feb |
Hashes for finlab-0.5.5-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 55e8b2d3c9e3f7446fbc9e2306e749be986d854ef1e1b6a667ffec74c4cbba4c |
|
MD5 | 4829d53336abff8d932484db617070ee |
|
BLAKE2b-256 | 422fbaa54d8a5176232aa75b812a2b1a4e4284dce536de75058eaf62f64acdcc |
Hashes for finlab-0.5.5-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f127daf7c3b0b70fa3fba920f6990bdc29146d074114c26ed393ce82cdf41458 |
|
MD5 | c8b8069501e388fbf3e7a894aa614c93 |
|
BLAKE2b-256 | ce6b1f7470bdbf2d8976bbfe7f54ec966992c30486fbffb4165c412ee8d149e6 |
Hashes for finlab-0.5.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a231ce8ad0731a0a65ad1e03dba8e9493b1f726407438fdb718ca32d614ab49 |
|
MD5 | f72bf59736a7d3764d68e2868a5a346b |
|
BLAKE2b-256 | fc5625df92e52067a1db91a8d815b66d52d0b430e4eaa249064e9690b3d53c7f |
Hashes for finlab-0.5.5-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6c3513b0c616e419e038089159bccdb7890e0c9f15608fa50a0c2a9f0132978f |
|
MD5 | ad2e9658451d07fb3dfe4849e5814ef9 |
|
BLAKE2b-256 | 3f5803f4da0fb3466e8b77df7c9ac58774e9c1aa89b378752be28c7db4321eb4 |
Hashes for finlab-0.5.5-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 947b9e5525599451a046d6f93646336417fb85e3823fb08ebf9a50514b4a1116 |
|
MD5 | d6ab8c1f5b38662225403023b699ddc3 |
|
BLAKE2b-256 | f97bec38dc26b6c8f0fb95ce914ca431a98e501f8bd643538847bd121a60bd0d |