日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python回测量化交易策略收益率

發布時間:2025/3/11 python 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python回测量化交易策略收益率 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本篇我們將對比經典量化回測框架pyalgotrade與ailabx,二者同時實現均線策略。

“積木式”實現策略示例

“買入并持有”策略: buy_and_hold = Strategy([ RunOnce(),

PrintBar(),SelectAll(),WeighEqually(),

])

“均線交叉策略”:

long_expr = 'cross_up(ma(close,5),ma(close,10))'

flat_expr = 'cross_down(ma(close,5),ma(close,10))'

ma_cross = Strategy([

SelectByExpr(long_expr=long_expr,flat_expr=flat_expr),WeighEqually(),

])

另外,傳統量化平臺本質上是用戶思路的自動化,“自動化”只是量化的初級階段。

“智能化”才是量化的核心與終級目標。

基于機器學習、深度學習、強化學習等人工智能前沿工具,機器自動發現數據中的模式,并優化相應的策略,是這個我們這個平臺的核心目標。

開發環境與安裝部署

anaconda python3.6

直接git或者下載源碼包,安裝相關依賴,然后運行main.py即可。

git clone?https://github.com/ailabx/ailabx.git

cd ailabx

pip install requirements.txt

python main.py

?

先看pyalgotrade的代碼實現:

from pyalgotrade import strategy from pyalgotrade.technical import ma from pyalgotrade.technical import cross from pyalgotrade.tools import quandlclass SMACrossOver(strategy.BacktestingStrategy):def __init__(self, feed, instrument, smaPeriod):super(SMACrossOver, self).__init__(feed)self.__instrument = instrumentself.__position = None# We'll use adjusted close values instead of regular close values.self.setUseAdjustedValues(True)self.__prices = feed[instrument].getPriceDataSeries()self.__sma = ma.SMA(self.__prices, smaPeriod)def getSMA(self):return self.__smadef onEnterOk(self, position):execInfo = position.getEntryOrder().getExecutionInfo()self.info("BUY at %.2f" % (execInfo.getPrice()))def onEnterCanceled(self, position):self.__position = Nonedef onExitOk(self, position):execInfo = position.getExitOrder().getExecutionInfo()self.info("SELL at $%.2f" % (execInfo.getPrice()))self.__position = Nonedef onBars(self, bars):# If a position was not opened, check if we should enter a long position.if self.__position is None:if cross.cross_above(self.__prices, self.__sma) > 0:shares = int(self.getBroker().getCash() * 0.9 / bars[self.__instrument].getPrice())# Enter a buy market order. The order is good till canceled.self.__position = self.enterLong(self.__instrument, shares, True)# Check if we have to exit the position.elif not self.__position.exitActive() and cross.cross_below(self.__prices, self.__sma) > 0:self.__position.exitMarket()from pyalgotrade import plotter from pyalgotrade.barfeed import quandlfeed from pyalgotrade.stratanalyzer import returns #import sma_crossoverdata = quandl.build_feed("WIKI", ['ORCL'], 2000, 2000, ".") # Load the bar feed from the CSV file feed = quandlfeed.Feed() feed.addBarsFromCSV("orcl", "WIKI-ORCL-2000-quandl.csv")# Evaluate the strategy with the feed's bars. myStrategy = SMACrossOver(feed, "orcl", 20)# Attach a returns analyzers to the strategy. returnsAnalyzer = returns.Returns() myStrategy.attachAnalyzer(returnsAnalyzer)# Attach the plotter to the strategy. plt = plotter.StrategyPlotter(myStrategy) # Include the SMA in the instrument's subplot to get it displayed along with the closing prices. plt.getInstrumentSubplot("orcl").addDataSeries("SMA", myStrategy.getSMA()) # Plot the simple returns on each bar. plt.getOrCreateSubplot("returns").addDataSeries("Simple returns", returnsAnalyzer.getReturns())# Run the strategy. myStrategy.run() myStrategy.info("Final portfolio value: $%.2f" % myStrategy.getResult())from pyalgotrade.stratanalyzer import returns, sharpe, drawdown, trades sharpe_ratio = sharpe.SharpeRatio() myStrategy.attachAnalyzer(sharpe_ratio)#print('sharpe:',sharpe_ratio.getSharpeRatio(0))# Plot the strategy. plt.plot()

再來看ailax積木式框架的實現:

''' @author: 魏佳斌 @license: (C) Copyright 2018-2025, ailabx.com.@contact: 86820609@qq.com @file: test_trading_env.py @time: 2018-10-17 10:29 @desc:''' import unittest,os from quant.engine.trading_env import TradingEnv from quant.engine.datafeed import DataFeed from quant.engine.algos import *class TestTradingEnv(unittest.TestCase):def test_run_step(self):path = os.path.abspath(os.path.join(os.getcwd(), "../../data"))feed = DataFeed(data_path=path)feed.download_or_get_data(['ORCL',], 2000, 2000)long_expr = 'cross_up(close,ma(close,20))'flat_expr = 'cross_down(close,ma(close,20))'ma_cross = Strategy([SelectByExpr(long_expr=long_expr,flat_expr=flat_expr),WeighEqually(),Constraint({'max_weight':0.9})],name='均線交叉策略')env = TradingEnv(strategy=ma_cross,feed=feed)env.run_strategy()stra_stats = env.get_statistics()stats = [stra_stats]from quant.engine.trading_env import EnvUtilsutils =EnvUtils(stats=stats)utils.show_stats()

客觀講,ailabx只是做了一些配置。規則是通過兩句表達式來給出,相當簡潔:

long_expr = 'cross_up(close,ma(close,20))' flat_expr = 'cross_down(close,ma(close,20))'m

項目在github上開源,歡迎star。

代碼在github上開源ailabx

總結

以上是生活随笔為你收集整理的python回测量化交易策略收益率的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 想要xx视频 | 玩弄丰满少妇xxxxx性多毛 | 黄色网页免费在线观看 | 91免费影片 | 福利精品视频 | 91碰在线视频 | 日本黄色www| 国产精品区一区二区三 | 99综合网| 无码人妻一区二区三区一 | 日韩欧美大片在线观看 | 国产超碰自拍 | 国产suv精品一区二区68 | av黄色在线免费观看 | 亚洲国产精品一 | 国产精品免费一区 | 哺乳期喷奶水丰满少妇 | 国产精品国产三级国产播12软件 | 黄色同人网站 | 亚洲AV无码国产精品国产剧情 | 日韩一级av毛片 | 在线亚洲+欧美+日本专区 | 亚洲国产欧美一区 | 亚洲国产精品成人综合 | 射黄视频 | 久久看看 | 国产精品国产精品 | 日韩a级片在线观看 | 欧美日韩人妻精品一区 | 九九九在线观看 | 精品国产一二三区 | 校园春色 亚洲色图 | 亚洲欧美日韩精品久久亚洲区 | 天堂av在线电影 | 中文字幕日韩经典 | 日本免费视频 | 久久爱综合网 | 欧美区视频 | 污视频在线观看免费 | 视频二区 | 艳妇乳肉豪妇荡乳 | 中文资源在线播放 | 亚洲伦理影院 | 爽爽窝窝午夜精品一区二区 | 午夜免费看 | 无码专区久久综合久中文字幕 | 色很久 | 一级片aaaaa 国产又黄又粗又猛又爽 | 超爽视频| 亚洲精品乱码久久久久久麻豆不卡 | 国产精品欧美久久久久天天影视 | 亚洲色图50p | 中文字幕一区二区三区免费 | 日本一区二区免费高清视频 | 成人av教育 | 色网站视频 | 亚洲精品视频在线免费 | 久久蜜桃av一区二区天堂 | 五月天中文字幕在线 | 欧美在线色视频 | 精品久久久久久久中文字幕 | 丁香花完整视频在线观看 | 在线成年人视频 | 国产视频分类 | 天堂网中文在线观看 | 日产亚洲一区二区三区 | 国产精品亚洲天堂 | a级片在线视频 | 黄视频网站免费看 | 手机在线看片福利 | 六月丁香激情综合 | 国产精品国产三级国产Av车上的 | 国产人人射 | 九热这里只有精品 | 丰满人妻一区二区三区在线 | 亚洲卡一 | 久久91精品国产91久久小草 | 激情四射网站 | 国产二区精品 | 女生被草| 肉番在线观看 | 亚洲AV无码一区二区三区性 | 五月天视频网 | 一色道久久88加勒比一 | 日韩亚洲影院 | 麻豆精品在线观看 | 自拍偷拍电影 | 欧美wwwxxxx | 国产精品黄色网 | 欧美一线高本道 | 国产超碰97| 香蕉视频污视频 | 超碰在线成人 | 人妻一区二区视频 | 麻豆网站视频 | 欧美福利网址 | 强行糟蹋人妻hd中文 | 茄子视频懂你更多在线观看 | 中文字幕一区二区三区久久久 |