Python股票数据分析——策略、收益率计算
技術分析指標 移動平均值、波動率、交易量
基于歷史價格信息的技術分析是金融專業人士和感興趣的業余人士感興趣的典型任務。在維基百科上可以找到如下定義:
在金融學中,技術分析是通過對過去市場數據(主要是價格和成交量)的研究預測價格方向的證券分析方法。
在下面的段落中,我們將重點放在用于事后驗證的過去市場數據的研究,而不是過多地關注使用我們的認識預測未來股價變動。我們的研究目標是標準普爾(S&P)500基準指數,這通常被認為是整個美國股票市場很油代表性的指標,因為指數中包含許多著名公司的股票,代表著高額的市場資本。而且,該指數還具有高流動性的期貨和期權市場。
我們將通過Yahoo的web數據接口來讀取歷史指數水平信息,并為一個基于趨勢信號的交易系統實現簡單的事后驗證。
import pandas as pd import numpy as np from pandas_datareader import data, wb stock_code = '^GSPC' start_date = "2000-11-01" end_date = "2019-03-30" sp500 = data.get_data_yahoo(stock_code, start_date, end_date) # 展示前5行 sp500.info()
data.get_data_yahoo已經通過互聯網線路連接到數據源,并讀取了從2000年的11-01交易日到結束日期2019-03-30的S&P指數事件序列數據,而且自動地用TimeStamp對象生成一個時間索引。
可以繪制收盤價的時間序列圖,如下:
我們要實現的趨勢策略基于兩個月(42個交易日)和一年(252個交易日)的趨勢(也就是兩種期間指數水平的移動平均數)。同樣,pandas可以高效地生成各個時間序列,并在一張圖上繪制3個相關的事件序列。首先是生成趨勢數據:
做多、做空策略
假設投資者可能做空、做多市場(指數)或者持幣觀望。投資者做多時形成市場收益(1),做空時形成負的市場收益(-1),持幣時不形成任何市場收益(0)。首先先計算每日的對數收益率:
sp500['Market'] = np.log(sp500['Close']/sp500['Close'].shift(1)) sp500['Stragety'] = sp500['Regime'].shift(1) * sp500['Market'] sp500[['Market', 'Stragety']].cumsum().apply(np.exp).plot(grid=True, figsize=(8, 5))
可以看到,在研究中忽略操作問題(比如交易執行)和相關市場的圍觀因素(例如交易成本)的話,在上證A股的收益率可以到7倍,但是在真實環境中還需要考慮市場的操作條件和買賣成本。
總結
以上是生活随笔為你收集整理的Python股票数据分析——策略、收益率计算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决git cherry-pick 出现
- 下一篇: websocket python爬虫_p