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.3-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2d8b4c95e14c51838f64f053459b947a7d33c6981671daa2fbde10024880c70d |
|
MD5 | ede33c9e6a14b6c23dbe7b813aef9bd9 |
|
BLAKE2b-256 | 1331c7f43c7eef687552ccc0c2df8cf0ea18fc12abea34bf8da96df9b431efff |
Hashes for finlab-0.5.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6dcb057da6039ffa2fb6d3b1761e2e2b41406114a33d7f6c589360863251a342 |
|
MD5 | 15bfe0db44be6e2756a6d252146fbdf9 |
|
BLAKE2b-256 | e5a780f205e1600839c5043b18bb5948e585771521e18270ef785f578ddcf754 |
Hashes for finlab-0.5.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 18cf34ff286e832e93d55ee38920da9bc5ae0114f8f89f12693dd3178378a576 |
|
MD5 | 13407548ce0b1c03e3d3f61edbd48c47 |
|
BLAKE2b-256 | 283121ff7724f000d92969c13df0fad961cd69005e8d329ef86ec1587963b2ca |
Hashes for finlab-0.5.3-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e4f8bf79c96c386936c43064922077b10d10caf4b9528071ef2a23f6ef90eaf4 |
|
MD5 | c3b66bf5f5a2fbdbc4c92e4cff9783ae |
|
BLAKE2b-256 | e7e0acb436d104d82288adc7a53016e31394ffcd713e1dbe69cf9f374608091f |
Hashes for finlab-0.5.3-cp311-cp311-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | da22cdef17e0c416316d4877025e6a5a0966063c17d461cb0431fcc4adc0066b |
|
MD5 | 85d49321c1fbfae3da7adf8fce687ca6 |
|
BLAKE2b-256 | b033619612fb6fbad3b4678b7104f61f58b316fa1c8c17f01b93bb196c158796 |
Hashes for finlab-0.5.3-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ddbc1c9e69e796080f5cb78dc792f12a91667957b47b3f1ae913647bb060bd7 |
|
MD5 | 654f6bc23128eee578a28a9cf083f0a2 |
|
BLAKE2b-256 | 781c48004650f33758cb1b9b653051ac8aad3a375698b51b5309e28383427f4b |
Hashes for finlab-0.5.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 91cd29c4d1e0d76250b69fe54d6a2cd99c9abc1c20f3dd8124b601c2f44a9ac2 |
|
MD5 | 5a86ae98476d3bbc65b0538452ea6005 |
|
BLAKE2b-256 | 1720ee330c21d83839f425b47463664722516f35729676cb446103b0d6392f49 |
Hashes for finlab-0.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bbec2dc7f642b5e2f2bab5545e64f7e6e80ab90c4db1f8e1251ef80974694341 |
|
MD5 | a778df3d26995d981d9b7e14c2f2db19 |
|
BLAKE2b-256 | c2eb69af4310124827d8e3deec5a65f047ad264ce2075f374d601fd3ce6ac634 |
Hashes for finlab-0.5.3-cp310-cp310-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5784fdecca13350b33df985ed60bdd27d48ffe7ad3b6170d1274dec164b6fd4f |
|
MD5 | 4581dfd3843222b643711a0a72e84e75 |
|
BLAKE2b-256 | 1d296f102969af3bde89a8a34757f1726441d5756cf8f1b5be6e9c8455f68216 |
Hashes for finlab-0.5.3-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa02b55f50eff98e97a8447c6f8be26425154d0510878788b4305a21239c1606 |
|
MD5 | a142c93bddf2e9ed6fcc59f3627b53cd |
|
BLAKE2b-256 | 7264c8ed073b0c8693d971ce03878a983ea878fa5e88ae378785ef73f2d7b3dc |
Hashes for finlab-0.5.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e887b4811c5af23070f4147af9af92204fb2a63e4d7791fa42f6dced4632c33d |
|
MD5 | 86ed023d6cbefae11368f430923c6adb |
|
BLAKE2b-256 | c95a5568d7e4c0c7f93f9e4622ae2007dafa1bdf7f72d9c29f78b4061f3d3aa2 |
Hashes for finlab-0.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b8f85b2e07e6a09f6ed02b1d8764daba3fba75d7da55ac638c3a124e2169fe40 |
|
MD5 | 3f7593c2890e72ea97113f206549d9cd |
|
BLAKE2b-256 | b59b61fccc93349e431acfacb31adcdd02bce6d133ab3b40a835b00a2b0cddb2 |
Hashes for finlab-0.5.3-cp39-cp39-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 740696936148a64380c4023a862f834e6bda206262c2d5762d1402416c7e87c1 |
|
MD5 | 7367aa478724cfcfb67b410efecf4f37 |
|
BLAKE2b-256 | 673056a5ac3371cdabcbb89c31783cc7ea0c252b997b968ae80a142f2d4ccd54 |
Hashes for finlab-0.5.3-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ad2d057462dc6a473280d717f712299f80e8ad0ff5f7aaf0595a1b216c2316f |
|
MD5 | 11f8a735f7220833624aee3b29746572 |
|
BLAKE2b-256 | ab2cc4e6815fc8fe85debfb6be79ef445715e8edcbfea4d0283d20cf4c5da59c |
Hashes for finlab-0.5.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dcedaaaea393f4fdf9ad0050212fe9d80d87ac12260abc085a116a8e8f0f7712 |
|
MD5 | 589c80ec4c5a67d51b5bd493df1974f4 |
|
BLAKE2b-256 | a3df04bcc03d0690ccca1716d487f198ca16ff01418872278a9b1310802e1567 |
Hashes for finlab-0.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ca981ca9510da9af34e181ef9b7d52bf627f5f22bc26536529998c3ac8973ea4 |
|
MD5 | ad8c503ab63b54a0f9d2a500e81c2eb0 |
|
BLAKE2b-256 | 0fb3ab37028702057041afba9cffcd8ec9663c70a0107ec1881662fd95131e22 |
Hashes for finlab-0.5.3-cp38-cp38-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28d39e6b0856e334a154df0f744ed54ee6c1ba50e4ac5700c2d16f0697523e1f |
|
MD5 | 2d5aef93d80d652f2f42485571696656 |
|
BLAKE2b-256 | 2310ad212e8fa52350a5b0fc6afaf34d47c3c5e9e28ce71ae643522fc40af2b8 |
Hashes for finlab-0.5.3-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb03e867493e9cecfe2f181b727a906debbb63182343b466a2fc39b8e74befbb |
|
MD5 | 68fe460a316a694999fb60d32007b7fb |
|
BLAKE2b-256 | c736259b1ba50f2ebc19502e2355031677f3476d0049de5fd68bc032627ce50e |
Hashes for finlab-0.5.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 93ac5219d14042144c95ce9424987414c76fefd3523e04e166f66014e6b840e2 |
|
MD5 | ef7efb46fede95d80f0cc8e78358fc8a |
|
BLAKE2b-256 | 76da96a435c548582e3e17303894dc19951254a47940b5874f0675a3008a4c71 |
Hashes for finlab-0.5.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9f9a28d3367ef0ce6c2924cfda1150bcf69763d4624aa63320067740116a7ed5 |
|
MD5 | 7762f60adea4ace3d3ac73319411d7a3 |
|
BLAKE2b-256 | 677934a3ea5e57675f8c04936917b54e54035c14fc1763efc9041aa7783fe53e |
Hashes for finlab-0.5.3-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a38bd64079237d74b2cfc0e0a03df2f88294e428df052cb0415533db145b5600 |
|
MD5 | f6fb8384367f9c692028ab2a61104a71 |
|
BLAKE2b-256 | fb43d4ef303074fd2063353fc1e7565d764f09912a239b0e52f55266ee6cea22 |
Hashes for finlab-0.5.3-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4c5e91040cb5481b32ed27a1ffba9a964b0387b424cbbec7b19135c209003e04 |
|
MD5 | 7b23686c08cf1677924e16991f20a118 |
|
BLAKE2b-256 | 48c63d88ce19bf85ea4c5be2531a9ba8cf5e289f89aae00733d75aa05a33900d |
Hashes for finlab-0.5.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c44c03cdec19e417ab5871da8816de20f05a4393455a0b3a948b591dd8a495b6 |
|
MD5 | acf6e93686b4b11acacb25e4f9a98ea1 |
|
BLAKE2b-256 | 4fa0f9fb4cbc834cbd289b3c7ae0e4fd98922d0afffcaac8c98de7f8186c5730 |
Hashes for finlab-0.5.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e7adc8b03d4e6aaabf56bd0b1724db5112f3b952f0ba3767fc505611da502476 |
|
MD5 | e3df35e0cf07cdec43f3c92aad62e8b3 |
|
BLAKE2b-256 | f6b333c7a281681a34a4976d39072af826178408618d5d575d4535db97a982fa |
Hashes for finlab-0.5.3-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 89c34b24e5396ed71fc2198c23bfbfd9b819608b0588f22fc8559c66ba87b084 |
|
MD5 | 28426223845ab7f8b89b8e0b25798cb3 |
|
BLAKE2b-256 | 2c72b5524a51029accf9e1e61908a195c88d6272a58b60e3bb7978fd7c0f6d3c |