久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

pyalgotrade量化回測(cè)框架簡(jiǎn)單試用

 AI量化實(shí)驗(yàn)室 2023-10-12 發(fā)布于北京

持續(xù)行動(dòng)1期 40/100,,“AI技術(shù)應(yīng)用于量化投資研資”之可轉(zhuǎn)債投資,。

今天要講一個(gè)量化的傳統(tǒng)“科目”——回測(cè),。

很多人一提及量化,第一個(gè)想到的就是回測(cè)系統(tǒng),,寫一個(gè)strategy,,搞兩個(gè)技術(shù)指標(biāo)跑起來看看。

前面的時(shí)間我們一直在聊數(shù)據(jù),,因?yàn)?strong>數(shù)據(jù)和因子才是量化的靈魂,,回測(cè)系統(tǒng)僅是工具,而且成熟的開源項(xiàng)目大把,,還是很多帶數(shù)據(jù)源的類似quantopian的平臺(tái),。

我打算分享4個(gè)量化回測(cè)引擎:pyalgotrade, backtrader ,,我自研的以及qlib內(nèi)置的,。

特別說明一下,qlib內(nèi)置的回測(cè)系統(tǒng),,適合機(jī)器模型驅(qū)動(dòng)的,,當(dāng)然你非得改造成傳統(tǒng)事件驅(qū)動(dòng)的,自己實(shí)現(xiàn)也可以,。我會(huì)考慮把我自己的回測(cè)系統(tǒng),,往qlib的框架里靠一靠,如果有必要的話,。

今天先看一個(gè)簡(jiǎn)單的:pyalgotrade,。

安裝很簡(jiǎn)單:pip install PyAlgoTrade

它的版本停留在0.2,后面應(yīng)該不維護(hù)了,,但基本也夠用了,。

https://github.com/gbeced/pyalgotrade

文檔地址:

http://gbeced./pyalgotrade/

https://pyalgotrade-docs-zh-cn./zh_CN/latest/tutorial.html

有人改進(jìn)了國(guó)內(nèi)市場(chǎng)的版本,開源地址如下:

https://github.com/Yam-cn/pyalgotrade-cn

01 hello pyalgotrade

from pyalgotrade import strategy
from pyalgotrade.barfeed import yahoofeed


class MyStrategy(strategy.BacktestingStrategy):
def __init__(self, feed, instrument):
super(MyStrategy, self).__init__(feed)
self.__instrument = instrument

def onBars(self, bars):
bar = bars[self.__instrument]
self.info(bar.getClose())


# Load the yahoo feed from the CSV file
feed = yahoofeed.Feed()
feed.addBarsFromCSV("orcl", "orcl-2000.csv")

# Evaluate the strategy with the feed's bars.
myStrategy = MyStrategy(feed, "orcl")
myStrategy.run()
  1. 聲明一個(gè)新的策略,。

  2. 只有 onBars 方法是必須要定義的,,此方法會(huì)在每次推送 bar 數(shù)據(jù)時(shí)執(zhí)行。

  3. 從 CSV 文件加載數(shù)據(jù),。

  4. 基于 feed 提供的 bar 數(shù)據(jù)運(yùn)行策略,。

這個(gè)csv通過yahoofinance已經(jīng)不好使了,我們使用自己的格式下載來回即可,。

我們使用茅臺(tái)的股票數(shù)據(jù),。

pyalgotrade的數(shù)據(jù)column是大寫字母開頭,而且必須有復(fù)權(quán)價(jià),。

把收盤價(jià)打印出來:

plt = plotter.StrategyPlotter(myStrategy)


myStrategy.run()
# Evaluate the strategy with the feed.
print("Final portfolio value: $%.2f" % myStrategy.getBroker().getEquity())

plt.plot()

02 參數(shù)優(yōu)化

如下是本地參數(shù)集回測(cè)的代碼,。

import itertools
from pyalgotrade.optimizer import local
from pyalgotrade.barfeed import yahoofeed
import rsi2


def parameters_generator():
instrument = ["dia"]
entrySMA = range(150, 251)
exitSMA = range(5, 16)
rsiPeriod = range(2, 11)
overBoughtThreshold = range(75, 96)
overSoldThreshold = range(5, 26)
return itertools.product(instrument, entrySMA, exitSMA, rsiPeriod, overBoughtThreshold, overSoldThreshold)


# The if __name__ == '__main__' part is necessary if running on Windows.
if __name__ == '__main__':
# Load the feed from the CSV files.
feed = yahoofeed.Feed()
feed.addBarsFromCSV("dia", "dia-2009.csv")
feed.addBarsFromCSV("dia", "dia-2010.csv")
feed.addBarsFromCSV("dia", "dia-2011.csv")

local.run(rsi2.RSI2, feed, parameters_generator())

pyalgotrade怎么說呢,麻雀雖小,無臟俱全,。

尤其是寫傳統(tǒng)技術(shù)面相關(guān)的策略,,比如均線,MACD,,動(dòng)量這種策略,,特別合適。交易的股票支數(shù)不多,,因子不太,,買賣規(guī)則清晰

03 多支股票輪動(dòng)

這個(gè)場(chǎng)景是我們最需要的,。

另外我們的數(shù)據(jù)格式是dataframe計(jì)算好了指標(biāo),。但pyalgotrade只能從csv添加,這個(gè)就比較麻煩了,。

它的買賣狀態(tài)的可視化部分的代碼我們可以參考下,。

backtrader同樣存在這樣的缺陷,傳統(tǒng)這些量化框架,,都更加適合技術(shù)分析的量化,,加載的數(shù)據(jù)量比較少,因子比較少,。

后續(xù)我們來講講自主研發(fā)的量化框架,。

飛狐,科技公司CTO,,用AI技術(shù)做量化投資,;以投資視角觀歷史,解時(shí)事,;專注個(gè)人成長(zhǎng)與財(cái)富自由,。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多