QauntOS 學習筆記(一)Lesson2

最近又接觸了一個好玩的平臺----QuantOS,因為創始人漁陽是《亂世華爾街》的作者,幾年前被這本書深深吸引,讓我感受到了不一樣的2007年金融危機,對作者一直很是好感。

最近他和他的小夥伴們做了一個量化平臺QuantOS。官網 www.quantos.org

只要註冊,就能學習裡面的代碼。如果是初學者的話,建議報名網站裏的《量化小學》課程。

作為一名迷弟,我自然是報名學習,並且開始動手玩了。

順便記錄下一些筆記,方便與其他同學一起交流學習。

本篇是對Lesson2的代碼梳理和學習。

重新調整格式,增加註釋,方便理解。

嘗試調整不同參數,進行總結。

如有侵權請指出,立即改正。

Lesson2 的原代碼結果:

對600519.SH 貴州茅臺,600036.SH 招商銀行,601318.SH 平安銀行,000651.SZ 格力電器這四個股票等權重,定期調倉,調倉週期為周。

長期持有,沒有止損和賣出,時間週期為20170201-20171001。

結果為:

年化收益44.77%,夏普比率3.45

接下來,我們分析下代碼。順便對參數進行簡單調整,看看會有什麼樣的結果:

增加回測時間長度:20100101-20180801

增加調倉頻率週期:month,day

調整手續費率:為0.0012,因為理論上還有印花稅0.001。

將以上結果進行對比分析,看看會有什麼不同

第一步,當然是,配置所有環境。

本人在學習過程中發現一件很有趣的問題

jaqs有兩大模塊data和trade

data模塊中主要是包含了數據下載的類

trade模塊中包含了交易回測的各種類

jaqs.trade.analyze則是用於回測結果的分析和報告生成。

第二步,撰寫各種函數。

1、寫一個從quantos獲取股票數據的函數 test_save_dataview()

注意:作者的源代碼中,props裏並沒有設置參數benchmark,而是使用瞭如下代碼,進行設置,好處是,以後更方便地設置自己的benchmark,壞處是對dv的數據結構要有更多的理解。

res, _ = ds.daily(benchmark, start_date=dv.start_date, end_date=dv.end_date)

# 只選中兩列,交易日期和收盤價

dv._data_benchmark = res.set_index(trade_date).loc[:, [close]]

2、寫一個對獲取的數據進行分析的函數 test_alpha_strategy_dataview()

這個函數會的作用,是根據你的交易信號,生成每日下單信息。

3. 對生成完的下單信息,進行分析,計算收益率,生成報告,定義函數test_backtest_analyze()

這個函數,基本上都是使用quantos自帶的類,進行完成,無腦複製就行。

第三步,設置參數。

第四步、開始運行:

第五步、結果分析:

調倉週期為day,回測時間20100101-20180801:

調倉週期為week,回測時間20100101-20180801:

調倉週期為month,回測時間20100101-20180801:

結論,即使時間長度放寬到20100101-20180801,收益率依然非常穩定,不過夏普比率從3.45下降到了1.35,maxdrawdown發生在2015年股災期間。

對比day, week, month三種調倉週期。week的收益率最高,但其實並沒有太大的差距,如果個人投資者的話,建議還是以月調倉,長線為王,因為手續費可以省下非常多哦。

後續還可以研究的方向:

調整股票標的,看看會有什麼樣的結果。

以上只是對QuantOS上《量化小學》第二課的內容進行學習和理解,以及一些動手小實驗。想獲得源代碼的話,只要註冊QuantOS就可以啦~

如果你連最基本的數據和,python都沒有充分掌握的話,可以考慮學習以下二維碼的課程,簡單易上手。

推薦閱讀:

相關文章