在《Python實戰-構建基於股票的量化交易系統》小冊子中,咱們以股票爲交易標的講解量化交易的學習,主要緣由是股票的風險和收益介於期貨和基金之間。期貨一方面加了槓桿,另外一方面走勢變化很是迅速,稍有不慎有可能血本無歸,這不太適合大衆參與。基金由專業團隊打理,雖然收益最小,但風險也是最小的,求穩的話買基金也是個不錯的選擇。python
提及股票,A股市場自設立至今經歷了屢次牛熊轉換,筆者身邊也有不少朋友在牛市賺了不少錢,但最終「退潮」的時候仍是虧回去了。以前看到一則新聞上說中國的股民有1.2億多,統計股民的行爲發現他們天天平均看盤2小時,整年平均買19只股,平均2天一次交易,能夠看出大多數股民交易頻繁,對買賣點思考並不嚴謹。微信
本專欄將量化交易技術應用股票交易中,並非傳授打敗市場、一晚上暴富的本領,而是想讓同窗們經過量化交易管理虧盈的機率,可以更理性的將股票投資做爲理財的一個手段,而不是以賭博的心態參與其中。那麼本小節,筆者結合一個簡單的市場模型來介紹下爲何在沒有機率優點的前提下參與交易會虧錢。dom
假設咱們投資的市場是一個具有短線交易特徵的市場,能夠不分晝夜的不停交易,並且還不須要交手續費。那麼咱們的初始資金是1000元,每次隨機的買9個股票,若是有一半以上的股票漲了的話,咱們暫定賺1元,不然一半以上的股票跌了,咱們就虧一元。因爲咱們是隨機買的,那麼贏錢的機率爲50%。咱們邀請50我的參與1000局看下效果:
代碼以下:
def simpmarket(win_rate, play_cnt=1000, stock_num=9, commission=0.01):
學習
money = np.zeros(play_cnt) money[0] = 1000 binomial = np.random.binomial(stock_num, win_rate, play_cnt) print(binomial) for i in range(1, play_cnt): if binomial[i] > stock_num//2: money[i] = money[i-1] + 1 else: money[i] = money[i-1] - 1 money[i] -= commission if money[i] <= 0: break return money
[plt.plot(np.arange(1000), simpmarket(0.5, play_cnt=1000, stock_num=9, commission = 0))
for _ in np.arange(0, 50)]spa
結果還不錯,虧錢的人和賺錢的人基本一半一半,符合零和遊戲的特徵。不過市場要經營是須要有收入的,那麼就須要對交易收取手續費,爲了更直觀的比較出手續費對交易的影響,咱們假定每次交易的手續費爲0.1元。咱們邀請50我的參與1000局看下效果:
和遊戲,沒有一我的是賺錢的,你們都虧錢了,當局數再增大之後的結局必定是血本無歸。市場是必定會有手續費的,那咱們就這麼心甘情願的當韭菜嗎?若是咱們想盈利的話就只能期待每局上漲的機率大於50%時才參與,不然不參與就不會虧錢了,而且每局贏的錢要比虧的錢多。其實這些需求映射到量化交易之中就是策略回測、倉位管理、止盈止損這些功能。那麼咱們改變機率這個因子,將它放大到55%,咱們邀請50我的參與1000局看下效果:
看來結果還不錯,只要增長盈利的機率,就能夠在市場中得到收益,這就是量化交易的魅力——管理機率==理性交易。更多的量化交易內容歡迎你們訂閱專欄閱讀!!code
更多python量化交易內容互動請加微信公衆號:PythonQT-YuanXiao
歡迎訂閱量化交易課程: 連接描述