前言 本文摘自清華大學出版《深入淺出Python量化交易實戰》一書的讀書筆記,這裡把作者用KNN模式做的交易策略,換成了邏輯回歸模型,試 試看策略的業績會有怎樣的變化。 二話不說,上梯子,導庫拉數據: Python學習交流Q群:906715085### import pandas as pd imp ...
前言
本文摘自清華大學出版《深入淺出Python量化交易實戰》一書的讀書筆記,這裡把作者用KNN模式做的交易策略,換成了邏輯回歸模型,試
試看策略的業績會有怎樣的變化。
二話不說,上梯子,導庫拉數據:
Python學習交流Q群:906715085### import pandas as pd import pandas_datareader.data as web import numpy as np from datetime import datetime
數據甭多了,來個3年的:
end = datetime.date.today() start = end - datetime.timedelta( days = 365*3)
我大A股,最牛X的股票,要說是茅臺,沒人反對吧?那咱搞茅臺的行情數據:
owB = web.DataReader('600519.ss', 'yahoo', start, end) cowB.head()
拉下來本仙就驚了,2019年1月的時候,大茅臺才600多塊錢啊!不過估計當時讓本仙買,本仙也不敢。那時候我大A股過百的股票也沒多少
吧!
然後我按照書里的方法,做下特征工程:
cowB['open-close'] = cowB['Open'] - cowB ['Close'] cowB['high-low'] = cowB['High'] - cowB ['Low'] cowB['target'] = np.where(cowB['Close'].shift(-1) > cowB ['Close'],1,-1) cowB = cowB.dropna() cowB.tail()
然後就多了幾列,target裡面,1表示次日上漲,-1表示次日下跌:
下麵要搞模型了:
x = cowB[['open-close','high-low']] y = cowB['target']
拆成x和y,然後請出scikit-learn:
from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression
然後把數據集拆分成訓練集和測試集:
x_train, x_test, y_train, y_test =
train_test_split(x, y,
train_size = 0.8)
看看邏輯回歸表現如何:
Python學習交流Q群:906715085### lr = LogisticRegression() lr.fit(x_train, y_train) print(lr.score(x_train, y_train)) print(lr.score(x_test, y_test))
結果發現,還沒有書里KNN的分數高:
0.54388984509466440.5136986301369864
邏輯回歸在訓練集裡面的準確率是54.39%,與書里KNN的準確率基本持平;但是測試集里只有51.37%,比書里的KNN模型低了差不多3個
百分點。
折騰了一圈,結果並不滿意。按說邏輯回歸在分類任務上的表現,應該優於KNN才對啊。難道是本仙的數據噪音太大了?還是說其實這種預
測本身意義就不大呢?
最後,再為大家分享如何用Python進行炒股的倉位控制!