一般狹義的金融市場特指有價證券(股票、債券)發行和流通的場所。python
股票、債券是用來資本流通的金融產品,廣義上的金融市場還包含貨幣市場,其中表明性的是期貨市場等。算法
其實無論是資本市場,仍是貨幣市場,都是能夠提供給投資者投資的地方,其中貨幣市場以期貨爲表明的適合短時間投資,而以股票表明的證券市場適合長期投資!編程
常見機構:銀行、投資銀行(證券公司)、保險公司、基金等數組
有價證券:是虛擬資本的一種形式,它自己沒價值,但有價格。框架
發行市場:又稱爲處理新發行證券的金融市場,籌集資金的公司、政府或公共部門經過發行新的股票和債券來進行融資。機器學習
流通市場:又稱二級市場,是指已經發行的證券進行轉讓、交易的市場。函數
咱們經過一張圖來理解一下:學習
關於投資的幾個類別,通常咱們將天使、VC、PE三個部分統稱爲私募(Private Equity),指的是沒有在證券交易所公開上市交易的資產。網站
一、公司規模ui
天使投資主要投資早期創業公司;
VC投資中期高速發展型創業公司;
PE介入即將上市或被兼併收購的成熟企業。
二、資金規模
天使投資:500萬如下 VC投資:千萬 PE:千萬級別以上
證券公司:
注:政府、公司等發行股票、債券目的爲了進行融資、發展等
股票,是股份公司簽發的證實股東所持股份的憑證,表明了股東對股份公司淨資產的全部權。
普通股
普通股是指在公司的經營管理和盈利及財產的分配上享有普通權利的股份,表明知足全部債權償付要求及優先股東的收益權與求償權要求後對企業盈利和剩餘財產的索取權。普通股構成公司資本的基礎,是股票的一種基本形式。現上海和深圳證券交易所上進行交易的股票都是普通股。
普通股股東
(1)公司決策參與權。普通股股東有權參與股東大會,並有建議權、表決權和選舉權,也能夠委託他人表明其行使其股東權利。
(2)利潤分配權。普通股股東有權從公司利潤分配中獲得股息。普通股的股息是不固定的,由公司贏利情況及其分配政策決定。普通股股東必須在優先股股東取得固定股息以後纔有權享受股息分配權。
(3)優先認股權。若是公司須要擴張而增發普通股股票時,現有普通股股東有權按其持股比例,以低於市價的某一特訂價格優先購買必定數量的新發行股票,從而保持其對企業全部權的原有比例。
(4)剩餘資產分配權。當公司破產或清算時,若公司的資產在償還欠債後還有剩餘,其剩餘部分按先優先股股東、後普通股股東的順序進行分配。
優先股
優先股相對於普通股。優先股在利潤分成及剩餘財產分配的權利方面優先於普通股。
(1)優先分配權。在公司分配利潤時,擁有優先股票的股東比持有普通股票的股東,分配在先,可是享受固定金額的股利,即優先股的股利是相對固定的。
(2)優先求償權。若公司清算,分配剩餘財產時,優先股在普通股以前分配。注:當公司決定連續幾年不分配股利時,優先股股東能夠進入股東大會來表達他們的意見,保護他們本身的權利。
在進行股票投資的時候,咱們會使用價值投資方式。選擇公司前景好、業績好的一些公司
T+1制度
自1995年1月1日起,爲了保證股票市場的穩定,防止過分投機,股市實行「T+1」交易制度,當日買進的股票,要到下一個交易日才能賣出。同時,對資金仍然實行「T+0」,即當日回籠的資金立刻可使用。
T+1是一種股票交易制度,即當日買進的股票,要到下一個交易日才能賣出。
「T+1"中"T"指的是交易登記日,"T+1"指的是交易登記日的次日。
咱們能夠看到這樣的符號:
股票代碼用數字表示股票的不一樣含義。股票代碼除了區分各類股票,也有其潛在的意義,好比600*是上交所上市的股票代碼,6006是最先上市的股票,一個公司的股票代碼跟車牌號差很少,可以顯示出這個公司的實力以及知名度
一、滬市A股票買賣的代碼是以600、601或603打頭(在上海證券交易所上市的全是主板)
二、深市A股票買賣的代碼是以000打頭,其中中小板代碼以002打頭,創業板股票代碼以300打頭
股票價格(Stock Price)又叫股票行市,是指股票在證券市場上買賣的價格。股票在流通市場上的價格,纔是徹底意義上的股票的市場價格
股票初始發行價格=市盈率還原值×40%+股息還原率×20%+每股淨值×20%+預計當年股息與一年期存款利率還原值×20%,影響股票價格的因素有不少,如企業因素、盈利狀況、淨資產、市場、行業等
(一)、集合競價階段:9:15 — 9:25
一、9:15 — 9:19能夠申報和撤單;9:20 — 9:25 能夠申報,不能夠撤單。
二、深圳交易所14:57 — 15:00實行集合競價,能夠申報,不能夠撤單。
(二)、連續競價階段
一、上海交易所:9:30 — 11:30;13:00 — 15:00
二、深圳交易所:9:30 — 11:30;13:00 — 14:56:59
(三)成交原則
價格優先,時間優先
一、印花稅:1‰(賣的時候才收取,此爲國家稅收,全國統一)。 二、過戶費:深圳交易所無此項費用,上海交易所收費標準(按成交金額的0.02‰人民幣 [2] )。 三、交易佣金:最高收費爲3‰,最低收費5元。各家劵商收費不一,開戶前可諮詢清楚。 例子: 假設你買入10000股,每股票價格爲10元,以此爲例,對其買入成本計算: 買入股票所用金額:10元/股×10000股=100000元; 過戶費:0.02‰×100000=2元(滬市股票計算,深市爲0); 交易佣金:100000×3‰=300元(按最高標準計算,正常狀況下都小於這個值); 買入總成本:100000元+300元+2元=100302元(買入10000股,每股10元,所需總資金) 多少每股賣出纔不賠錢? 可按以下公式計算:(買入總成本+賣出過戶費)÷(1-印花稅率-交易佣金率)÷股票數量=(100310元+10元)÷(1-0.001-0.003)÷10000=10.07228916元 =10.07元(四捨五入)。 若以10.08每股賣出價格計算: 股票金額:10.08元/股×10000股=100800元; 印花稅:100800元×1‰=100.8元; 過戶費:0.002%×100800元≈2元; 交易佣金:100800元×3‰=302.4元; 賣出後收入:100800元-100.8元-2元-302.4元=100394.8元; 最終實際盈利爲:賣出後收入-買入總成本=100394.8-100302=92.8元;
即便在國內對於A股來講,目前總共有3000多隻股票。而且數字可能隨着時間會不斷改變,如何更好的管理這些上市公司?實現怎樣的制度去區分公司的規模大小?
在選擇購買股票的時候,有時候會根據劃分依據去選擇特定指數、行業、板塊下的股票!!!
概念股概念股是與業績股相對而言的。業績股須要有良好的業績支撐。概念股則是依靠某一種題材好比資產重組概念,三通概念等支撐價格。行業:
指數:
股票在流通市場上的價格,纔是徹底意義上的股票的市場價格,通常稱爲股票市價或股票行市。股票市價表現爲開盤價、收盤價、最高價、最低價等形式。其中收盤價最重要,是分析股市行情時採用的基本數據。
K線圖這種圖表源處於日本德川幕府時代,被當時日本米市的商人用來記錄米市的行情與價格波動,後因其細膩獨到的標畫方式而被引入到股市及期貨市場。
K線的計算週期可將其分爲日K線,周K線,月K線,年K線
不少網站提供了日線、周K線、月K線等週期數據,可是最原始的只有日K線的數據。咱們須要本身去生成計算不一樣頻率的數據
周K線是指以週一的開盤價,週五的收盤價,全周最高價和全周最低價來畫的K線圖
大部分周線的指標是這個日線指標在這一週最後一個交易日的值。好比周線的’close’應該等於這一週最後一天日線數據的‘close’,可是有的指標是例外,好比周線的’high’應該等於這一週全部日線‘high’中的最大值
接下來咱們仍是使用以前stock_day當中的某個股票的行情數據
stock_day = pd.read_csv("./data/stock_day/stock_day.csv") stock_day = stock_day.sort_index() # 對每日交易數據進行重採樣 (頻率轉換) stock_day.index # 一、必須將時間索引類型編程Pandas默認的類型 stock_day.index = pd.to_datetime(stock_day.index) # 二、進行頻率轉換日K---周K,首先讓全部指標都爲最後一天的價格 period_week_data = stock_day.resample('W').last() # 分別對於開盤、收盤、最高價、最低價進行處理 period_week_data['open'] = stock_day['open'].resample('W').first() # 處理最高價和最低價 period_week_data['high'] = stock_day['high'].resample('W').max() # 最低價 period_week_data['low'] = stock_day['low'].resample('W').min() # 成交量 這一週的天天成交量的和 period_week_data['volume'] = stock_day['volume'].resample('W').sum()
period_week_data.dropna(axis=0)
咱們能夠將計算出來的周K和原先的日K畫圖顯示出來
金融數據繪製須要使用mpl_finance框架, 經過pip 安裝便可
from mpl_finance import candlestick_ochl import matplotlib.pyplot as plt # 先畫日K線 fig, axes = plt.subplots(nrows=1, ncols=1, figsize=(20, 8), dpi=80) # 準備數據, array數組 stock_day['index'] = [i for i in range(stock_day.shape[0])] day_k = stock_day[['index', 'open', 'close', 'high', 'low']] candlestick_ochl(axes, day_k.values, width=0.2, colorup='r', colordown='g') plt.show() # 周K線圖數據顯示出來 period_week_data['index'] = [i for i in range(period_week_data.shape[0])] week_k = period_week_data[['index', 'open', 'close', 'high', 'low']] candlestick_ochl(axes, week_k.values, width=0.2, colorup='r', colordown='g') plt.show()
上市公司會時不時的發生現金分成、送股等一系列股本變更,這會形成股價的非正常變化,致使咱們不能直接經過股價來計算股票的漲跌幅。這種數據咱們也稱之爲除權數據。
因此咱們要對這種數據作處理,也稱之爲復權數據。怎麼進行復權呢?
簡單的一種方式: 原始數據: 1號:100 2號:50 3號:53 4號:51 復權後: 100 / 50 = 2 比例 1號:100 2號:100 3號:106 4號:102
主要用於基本面分析,主要側重於從股票的基本面因素,如企業經營能力,財務情況,行業背景等對公司進行研究與分析,試圖從公司角度找出股票的「內在價值」,從而與股票市場價值進行比較,挑選出最具投資價值的股票。
量化主要就屬於這樣的一個分析方式
時間序列是一組按照時間發生前後順序進行排列的數據點序列。一般一組時間序列的時間間隔爲一恆定值(如1秒,5分鐘,12小時,7天,1年),所以時間序列能夠做爲離散時間數據進行分析處理。
例如:某監控系統的折線圖表,顯示了請求次數和響應時間隨時間的變化趨勢
# pd將時間數據轉換成pandas時間類型 # 一、填入時間的字符串,格式有幾種, "2018-01-01" ,」01/02/2018「 pd.to_datetime("01/02/2017")
# 傳入時間的列表 pd.to_datetime(["2017-01-01", "2017-02-01", "2017-03-01"]) # 或者 date = [datetime(2018, 3, 1), datetime(2018, 3, 2), datetime(2018, 3, 3), datetime(2018, 3, 4), datetime(2018, 3, 5)] date = pd.to_datetime(date) # 若是其中有空值 date = [datetime(2018, 3, 1), datetime(2018, 3, 2), np.nan, datetime(2018, 3, 4), datetime(2018, 3, 5)] date = pd.to_datetime(date) # 結果會變成NaT類型 DatetimeIndex(['2018-03-01', '2018-03-02', 'NaT', '2018-03-04', '2018-03-05'], dtype='datetime64[ns]', freq=None)
# DateTimeIndex pd.to_datetime(date) DatetimeIndex(['2018-03-01', '2018-03-02', '2018-03-03', '2018-03-04', '2018-03-05'], dtype='datetime64[ns]', freq=None) pd.to_datetime(date).values array(['2018-03-01T00:00:00.000000000', '2018-03-02T00:00:00.000000000', '2018-03-03T00:00:00.000000000', '2018-03-04T00:00:00.000000000', '2018-03-05T00:00:00.000000000'], dtype='datetime64[ns]')
咱們也能夠經過DatetimeIndex來轉換
pd.DatetimeIndex(date)
# 最基礎的pandas的時間序列結構,以時間爲索引的,Series序列結構 # 以時間爲索引的DataFrame結構 series_date = pd.Series(3.0, index=date) pd.to_datetime(series_date) pd.DatetimeIndex(series_date)
pandas時間序列series的index必須是DatetimeIndex
time.year time.month time.weekday
# 生成指定的時間序列 # 一、生成2017-01-02~2017-12-30,生成頻率爲1天, 不跳過週六週日 pd.date_range("2017-01-02", "2017-12-30", freq="D") # 二、生成2017-01-02~2017-12-30,生成頻率爲1天, 跳過週六週日, 可以用在金融的數據,日線的數據 pd.date_range("2017-01-02", "2017-12-30", freq="B") # 三、只知道開始時間日期,我也知道總共天數多少,生成序列, 從"2016-01-01", 共504天,跳過週末 pd.date_range("2016-01-01", periods=504, freq="B") # 四、生成按照小時排列的時間序列數據 pd.date_range("2017-01-02", "2017-12-30", freq='H') # 五、按照3H去進行生成 pd.date_range("2017-01-02", "2017-12-30", freq='3H') # 六、按照1H30分鐘去進行生成時間序列 pd.date_range("2017-01-02", "2017-12-30", freq='1H30min') # 七、按照每個月最後一天 pd.date_range("2017-01-02", "2017-12-30", freq='BM') # 八、按照每月的第幾個星期幾 pd.date_range("2017-01-02", "2017-12-30", freq='WOM-3FRI')
對於時間序列類型,有特有的分析方法。一樣股票自己也是一種時間序列類型,咱們就以股票的數據來進行時間序列的分析
時間序列分析( time series analysis)方法,強調的是經過對一個區域進行必定時間段內的連續觀察計算,提取相關特徵,並分析其變化過程。
時間序列分析主要有肯定性變化分析
主要用在時間序列的數組變換, 不一樣做用的函數將它們統稱爲移動窗口函數
那麼會有各類觀察窗口的方法,其中最經常使用的就是移動平均法
不一樣的移動平均線方法不同
簡單移動平均線(SMA),又稱「算數移動平均線」,是指特按期間的收盤價進行平均化好比說,5日的均線SMA=(C1+ C2 + C3 + C4 + C5) / 5
例子:
拿到股票數據,畫出K線圖
# 拿到股票K線數據 stock_day = pd.read_csv("./data/stock_day/stock_day.csv") stock_day = stock_day.sort_index() stock_day["index"] = [i for i in range(stock_day.shape[0])] arr = stock_day[['index', 'open', 'close', 'high', 'low']] values = arr.values[:200] # 畫出K線圖 fig, axes = plt.subplots(nrows=1, ncols=1, figsize=(20, 8), dpi=80) candlestick_ochl(axes, values, width=0.2, colorup='r', colordown='g')
pandas.rolling_mean(arg, window, min_periods=None, freq=None, center=False, how=None, **kwargs) Moving mean.
Parameters:
# 直接對天天的收盤價進行求平均值, 簡單移動平局線(SMA) # 分別加上短時間、中期、長期局均線 pd.rolling_mean(stock_day["close"][:200], window=5).plot() pd.rolling_mean(stock_day["close"][:200], window=10).plot() pd.rolling_mean(stock_day["close"][:200], window=20).plot() pd.rolling_mean(stock_day["close"][:200], window=30).plot() pd.rolling_mean(stock_day["close"][:200], window=60).plot() pd.rolling_mean(stock_day["close"][:200], window=120).plot()
加權移動平均線 (WMA)將過去某特定時間內的價格取其平均值,它的比重以平均線的長度設定,愈近期的收市價,對市況影響愈重要。
正因加權移動平均線強調將愈近期的價格比重提高,故此當市況倒退時,加權移動平均線比起其它平均線更容易預測價格波動。可是咱們仍是不會輕易使用加權,應爲他的比重過大!!!!
是因應移動平均線被視爲落後指標的缺失而發展出來的,爲解決一旦價格已脫離均線差值擴大,而平均線未能當即反應,EWMA能夠減小相似缺點。
pd.ewma(com=None, span=one)
# 畫出指數平滑移動平均線 pd.ewma(stock_day['close'][:200], span=10).plot() pd.ewma(stock_day['close'][:200], span=30).plot() pd.ewma(stock_day['close'][:200], span=60).plot()
# 求出指定窗口大小的收盤價標準差和方差 pd.rolling_var(stock_day['close'][:200], window=10).plot() pd.rolling_std(stock_day['close'][:200], window=10).plot()
frame = data[['open','volume', 'ma20', 'p_change', 'turnover']] pd.scatter_matrix(frame, figsize=(20, 8))
從中咱們能夠簡單看到成交量(volume)和換手率(turnover)有很是明顯的線性關係,由於換手率的定義就是:成交量除以發行總股數。
經過一些圖或者相關性分析能夠找到強相關的一些指標,在機器學習、量化方向中會詳細介紹
相關係數:後面會介紹,目前咱們只需知道他是反應兩個序列之間的關係便可
ma_list = [5, 20 ,60] for ma in ma_list: data['MA' + str(ma)] = pd.rolling_mean(data.close, ma) for ma in ma_list: data['EMA' + str(ma)] = pd.ewma(data.close, span=ma) data.to_csv("EWMA.csv")
移動平均線常常會做爲技術分析的基礎理論,從中衍生出各類技術指標策略。後面將會介紹簡單的基於均線的策略。