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.2-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4d2eca36d961935c2dbff83882b8fa37a4ff2bbfee6c30e08ea06abf50b253c4 |
|
MD5 | 25f29615ceb4de23b00dc2f933467ced |
|
BLAKE2b-256 | 02b97d8823b5e6beecd727643080b31d45bbf47daeab1470429dc13c2354644c |
Hashes for finlab-0.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e7ba0f9d675f2a6f62b99e2314d1636aa35cf509200237dbc0f1cd61e3567920 |
|
MD5 | 748247187a5bda0a1771f60f32a8bdf3 |
|
BLAKE2b-256 | e4a294f0e2c4d516337aacb4fd3d3f57c8a6e55fa837637ac99af8236cefcf3e |
Hashes for finlab-0.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d3506075f614f440f911e44dabcba843a1088031f909c7c0f5c6f2b6fd05fb41 |
|
MD5 | 5ef950604b3a29f20d8537bebee57368 |
|
BLAKE2b-256 | dfb90511dcf60ce134b008c20bbcb3208c743a8ecc83f81d5d449ea20ce2e87d |
Hashes for finlab-0.5.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 49851ab420526eed1fbde195f41d63a8893f8d02fe3aa70107e72e410a5fae82 |
|
MD5 | ee9fd4b375f46982a823f06137e4c1a4 |
|
BLAKE2b-256 | 327cddf12da91a5240e39ae9a12b4ffcfea0c033b1f71a0d1f38138d495a6235 |
Hashes for finlab-0.5.2-cp311-cp311-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0636c2d076be1e83749e66c0df03285228089fe23456897924064c1048c2ec08 |
|
MD5 | a19a60c01f913440e5a9810ad0a5dd75 |
|
BLAKE2b-256 | d70b007f557c5e5e16a42089a51fa3a5dc8859c18389453d60adfd826f71586a |
Hashes for finlab-0.5.2-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5d67e20cca5ab3b375878ad0e9629b3866f82f296766b0778054b0550349e77e |
|
MD5 | c899a9a9a2900f422a360ba95f430123 |
|
BLAKE2b-256 | 3c880adb42883bd8c90986b1827e7bab3240aec4c7d4c2f2399973afaf0a51bf |
Hashes for finlab-0.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a6190764b5d22d8b3eb4d910ac4961e748a6c9c5d4b53803d76c596e272e49f2 |
|
MD5 | d2a0be4d65f81f799afdcc4db7c52d8f |
|
BLAKE2b-256 | 31a1a05876cd3eddf4cc25d300c1570a2baa5bbdf020dbdcce373c2ee572867b |
Hashes for finlab-0.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 118dbdaebadb6031f2cee5eb414f4d419947885d54ca88ad5511acb3e518d29d |
|
MD5 | 5bfd5cc665fb6a1dbcea69eaf2fc2549 |
|
BLAKE2b-256 | e70bcdf61f031ab480f51bf80b528e74e250d38161221912575d3432790f09b4 |
Hashes for finlab-0.5.2-cp310-cp310-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 081cafd7a0f34d1e11c9fd2d2991536f3d8a15238d3e8086a3ecfbbdd8753258 |
|
MD5 | 36f8e8c23ffdc156b432798be671541c |
|
BLAKE2b-256 | a63d7961d46ab079f4c0be02e7ad15e25bedd8f520fdf8557d96cf4a9b6e3d67 |
Hashes for finlab-0.5.2-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e9b82ce31f261a76dfc0a71d1e6f359130ddb67088098ec5b095405d3dc51dcd |
|
MD5 | a851285ae786dc9a1c23472ffecf20f0 |
|
BLAKE2b-256 | 3e2ba0277883b1e2dd433c7bb6c70a861fdd5c3d314ae9ece15c5ae427cd7656 |
Hashes for finlab-0.5.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d827bf925315b2af71d495154ef7744c59f3b61c975d00837c03821b8d561cf |
|
MD5 | 2de30204133674193a1a56fb629dcf31 |
|
BLAKE2b-256 | 0d197876b03390e7983ccf7e43586a6082a90c499336dab4d8ea4ab480027a9b |
Hashes for finlab-0.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8b0d702f087523a40a6fd13ee8fbe4cd7795975c31c558e47b887368cdf4bac6 |
|
MD5 | 89c5b52933c83f9087e5a26e555050e2 |
|
BLAKE2b-256 | 5ab507952db1b942071142b1a0f4b32fe79d3e9c549c02d43dc1229fb20cf000 |
Hashes for finlab-0.5.2-cp39-cp39-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a15cd437ce4cad1bcc53e4618c51a3f16ad0b13cfb547cbe67c075b2308b1bf5 |
|
MD5 | 05114b993528befb8529f6af3f8f1683 |
|
BLAKE2b-256 | 033358990a06623be168937231ad24cfd64bf70030af81d498fe38fcc2f42d5a |
Hashes for finlab-0.5.2-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b31b236631a52730b8324044367d386faa02980f00f4fe255858ea110a01423c |
|
MD5 | 68f33dae566341234b223fa0b8973ef9 |
|
BLAKE2b-256 | db1ef411add32e5468e895b8a63055fbca1356662d38c49d0e27232be6a0014a |
Hashes for finlab-0.5.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | df73d99f61f4d6a9c325433f0802d2d0190611acc648db9780d861cca2603b0b |
|
MD5 | 5b9a08faaf7834b2b332baf23ce9930a |
|
BLAKE2b-256 | 0e610ead8dd73a046b1e067eee30599eed5500c2308c97542cc4c1760bafd034 |
Hashes for finlab-0.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b2982cb7d9d1829f0e4625bcd49f98b94d6d969258e0af3654debb1541eabfb |
|
MD5 | 4ba066285da3678213822db7694d6812 |
|
BLAKE2b-256 | b577e64de2dc07f17bd39ff84a00343553ea35c4506253a5807b0bd889a3ea40 |
Hashes for finlab-0.5.2-cp38-cp38-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f6002194f611f9bfae7f53d4b9ddfaa4e5f9eb3140170b4fdd579ab55054f7a4 |
|
MD5 | 7478a170cc80e079e379f5091d261324 |
|
BLAKE2b-256 | 33602f48ceccba6c2c1629ef89d87af425e77caa4a8bbc944d831920f6ee6f93 |
Hashes for finlab-0.5.2-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 77f7cd473e92aefab8a00a1ea624113e39e0430d91d396062fe45aaa8379822a |
|
MD5 | cdb3f8587056c7611ffed24691a310cf |
|
BLAKE2b-256 | 79e17ed6bf4df51a5f77651d4fa14731dd3114e634cf51410018bfa0d201d93e |
Hashes for finlab-0.5.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ab8d21817a31ea648ffc733597fca119de80f646424d7e5b62f7ddb21fd95de |
|
MD5 | c4a2b84ab8b914c14d00f5cac8f3dbbd |
|
BLAKE2b-256 | 453abca178e3d59bd61257ee3dcdf5f6f2f6334d3b56ed67b0f449785b1e55af |
Hashes for finlab-0.5.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 831645a53a79a273479df43f6f84b49d57f1d6bf00c81cdee47929fc73eb2a75 |
|
MD5 | 4b8d43e77a9b7bcebd71248da4d0d799 |
|
BLAKE2b-256 | a8a9d0896403a7228b731ba9c30379ae97a32c5b50f537262c24ed83cb7a4a9c |
Hashes for finlab-0.5.2-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 16b49469d5b846447136c7207b31cca63d77f766cfd1657381a079409faca62e |
|
MD5 | ae2f662348d0754952c73c52a5556c7d |
|
BLAKE2b-256 | 15a0a11a503547cc393488070c43855a5188cc738c4de094ae9594bb66cbe546 |
Hashes for finlab-0.5.2-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9abce374695ce1f6457794d75633b2c8bc3197b7032e6d8da29c5f1ec9cbce3d |
|
MD5 | 7a488d00024c7ac93d511629ee54a376 |
|
BLAKE2b-256 | 0214e6c53cf74395852f1b61a80f660dcb7e38f15d844cafddc8b41261604ba7 |
Hashes for finlab-0.5.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | abbeb870430eb5eeb782e59686d662fb574830cbbe60cc9a8762fe3ac7438e18 |
|
MD5 | eda691e1148a6715dc21aa9376e754da |
|
BLAKE2b-256 | 41d8dbee11b6d46186147dbb19b29bc5dbf4d470ce73601a5bdd84dacbc50496 |
Hashes for finlab-0.5.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6a18e7edc8a5e94f700aba88e1b4248be676d4a9c1b101a0bde4346048f1937e |
|
MD5 | af61bf57ccbd12af97b43b32ab7cb64c |
|
BLAKE2b-256 | 1cfaf78a3214e2ca7d805a357d8589ef88910763bcd06fc68340ad5ada18f395 |
Hashes for finlab-0.5.2-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a7d46ad1481af4a959b764455503656ac19c6d5aa44bd5da905051f485a30d5a |
|
MD5 | 43134070876f5602ca1e6d650fc1c5ca |
|
BLAKE2b-256 | 0e089f8d8a5d45fbf72e5f0b06339eb6ef2c91c55b5ce16ad0994fc75f71b95a |