数据回测教程:初学者的实用指南
姒傝堪
鍦ㄩ噾铻嶉鍩燂紝鏁版嵁鍥炴祴鏄竴绉嶈瘎浼版姇璧勭瓥鐣ヨ〃鐜扮殑鏈夋晥鎵嬫銆傞€氳繃瀵瑰巻鍙叉暟鎹繘琛屾ā鎷燂紝璇勪及绛栫暐鐨勬湁鏁堟€с€侀闄╁強棰勬湡鏀剁泭銆傝繖涓€杩囩▼涓嶄粎甯姪鎴戜滑鐞嗚В绛栫暐鍦ㄤ笉鍚屽競鍦烘潯浠朵笅鐨勫弽搴旓紝杩樿兘鎻ず娼滃湪鐨勯闄╁拰鏈轰細锛屾槸绛栫暐寮€鍙戜笌楠岃瘉杩囩▼涓殑鏍稿績鐜妭銆?/p>涓€銆佸畾涔変笌鐩殑
鏁版嵁鍥炴祴鐨勬牳蹇冨湪浜庡埄鐢ㄥ巻鍙叉暟鎹潵娴嬭瘯鍜岃瘎浼版姇璧勭瓥鐣ョ殑琛ㄧ幇銆傞€氳繃妯℃嫙鐪熷疄甯傚満鏉′欢锛屾姇璧勮€呭彲浠ョ洿瑙傚湴浜嗚В绛栫暐鍦ㄤ笉鍚屽競鍦哄懆鏈熶笅鐨勫弽搴旓紝鍖呮嫭鏀剁泭銆侀闄╀互鍙婂簲瀵瑰競鍦哄彉鍖栫殑鑳藉姏銆傝繖涓€鏂规硶涓烘垜浠彁渚涗簡涓€涓瑙傜殑璇勪及宸ュ叿锛屽府鍔╂垜浠獙璇佺瓥鐣ョ殑鏈夋晥鎬э紝棰勬祴鏈潵鐨勮〃鐜帮紝璇嗗埆娼滃湪椋庨櫓锛屽苟瀵圭瓥鐣ヨ繘琛屼紭鍖栧拰璋冩暣銆?/p>浜屻€佹暟鎹洖娴嬬殑閲嶈鎬у拰浼樺娍
1. 楠岃瘉绛栫暐鏈夋晥鎬э細閫氳繃鍘嗗彶鏁版嵁鍒ゆ柇绛栫暐鍦ㄥ疄闄呭競鍦轰腑鐨勮〃鐜般€?/p>
2. 棰勬祴鏈潵琛ㄧ幇锛氶€氳繃鍒嗘瀽杩囧幓鐨勮〃鐜帮紝鎺ㄦ祴鏈潵鐨勫彲鑳借蛋鍔裤€?/p>
3. 椋庨櫓绠$悊锛氳瘑鍒瓥鐣ョ殑娼滃湪椋庨櫓锛岀壒鍒槸鍦ㄦ瀬绔競鍦烘潯浠朵笅鐨勮〃鐜般€?/p>
4. 浼樺寲绛栫暐锛氭牴鎹洖娴嬬粨鏋滐紝鍙戠幇涓嶈冻骞跺绛栫暐杩涜璋冩暣銆?/p>涓夈€佸洖娴嬫暟鎹噯澶?/h3>
鏁版嵁鍑嗗鏄洖娴嬭繃绋嬩腑鑷冲叧閲嶈鐨勬楠わ紝鍏惰川閲忓拰瀹屾暣鎬х洿鎺ュ奖鍝嶅埌鍥炴祴鐨勭粨鏋溿€傞€夋嫨鍚堥€傜殑鏁版嵁婧愭槸棣栬浠诲姟锛屽寘鎷叕寮€鏁版嵁濡傝储缁忕綉绔欍€侀噾铻嶆暟鎹簱銆佸彂甯冪殑缁忔祹鏁版嵁浠ュ強涓撲笟閲戣瀺鏁版嵁鎻愪緵鍟嗙瓑銆傚湪杩涜鏁版嵁娓呮礂鍜岄澶勭悊鏃讹紝闇€瑕佽繍鐢ㄤ竴绯诲垪鎶€宸э紝濡傛暟鎹瓫閫夈€佺己澶卞€煎鐞嗐€佸紓甯稿€兼娴嬨€佹暟鎹爣鍑嗗寲浠ュ強鏃堕棿搴忓垪澶勭悊绛夈€?/p>鍥涖€佹暟鎹牸寮忔爣鍑嗗寲
涓轰簡纭繚鏁版嵁鐨勪竴鑷存€у拰鍙瘮鎬э紝闇€瑕佽繘琛屾暟鎹牸寮忕殑鏍囧噯鍖栥€傝繖鍖呮嫭鏁村悎涓嶅悓鏉ユ簮鐨勬暟鎹埌涓€涓粺涓€鐨勬暟鎹泦锛岀‘淇濇椂闂村崟浣嶅拰璐у竵鍗曚綅绛夌殑缁熶竴銆?/p>浜斻€佸熀纭€鍥炴祴宸ュ叿浠嬬粛
閫夋嫨鍚堥€傜殑鍥炴祴宸ュ叿鍙互绠€鍖栫瓥鐣ュ紑鍙戝拰楠岃瘉杩囩▼锛屾彁楂樻晥鐜囥€傚父鐢ㄧ殑鍥炴祴杞欢鍖呮嫭Python鍙婂叾鐩稿叧搴擄紙濡侭acktrader銆亃ipline绛夛級銆丷锛堝quantmod銆丳erformanceAnalytics绛夊寘锛変互鍙奙ATLAB锛團inancial Toolbox锛夈€傛惌寤哄紑鍙戠幆澧冮渶瑕佸畨瑁呯浉搴旂殑杞欢锛屽苟纭繚瀹夎蹇呰鐨勫洖娴嬪拰鏁版嵁鍒嗘瀽搴撱€?/p>鍏€佹墽琛屽洖娴嬫搷浣?/h3>
鍦ㄦ墽琛屽洖娴嬫搷浣滄椂锛岄鍏堥渶瑕佹槑纭瓥鐣ョ殑閫昏緫鍜屽弬鏁帮紝濡備拱鍏ュ崠鍑鸿鍒欍€佷氦鏄撹垂鐢ㄣ€佹粦鐐圭瓑銆傜劧鍚庯紝浣跨敤鍥炴祴搴撶殑API鎴栧嚱鏁扮紪鍐欑瓥鐣ヤ唬鐮侊紝瀹炵幇鑷姩鍖栦氦鏄撻€昏緫銆傝繖涓€杩囩▼灏嗗府鍔╂垜浠洿娣卞叆鍦颁簡瑙g瓥鐣ョ殑琛ㄧ幇锛屼负鏈潵鐨勬姇璧勫喅绛栨彁渚涙湁鍔涚殑鏀寔銆傚弬鏁拌缃笌鍥炴祴鍒濇帰
涓€銆佺瓥鐣ュ弬鏁拌缃柟娉?/h3>鍦ㄧ瓥鐣ユ祴璇曠殑鏃堕棿闀挎渤涓€夊彇涓€娈电壒瀹氱殑鏃堕棿鑼冨洿锛屾瘮濡備粠1990骞磋嚦浠娿€傜‘瀹氬洖娴嬫暟鎹殑棰戠巼锛屾槸姣忔棩銆佹瘡鍛ㄨ繕鏄瘡鏈堛€傝垂鐢ㄦ槸绛栫暐瀹炴柦涓笉鍙拷瑙嗙殑涓€鐜紝鍖呮嫭浜ゆ槗璐圭敤銆佹粦鐐规垚鏈瓑闈炲競鍦哄洜绱犻兘瑕佽€冭檻銆傞€夋嫨鍚堥€傜殑璇勪及鎸囨爣锛屽骞村寲鏀剁泭鐜囥€佸鏅瘮鐜囥€佹渶澶у洖鎾ょ瓑锛屼互渚垮绛栫暐杩涜鍏ㄦ柟浣嶇殑璇勪及銆?/p>浜屻€佸洖娴嬬粨鏋滅殑鍒濇鍒嗘瀽
鎶ュ憡绛栫暐鐨勬€讳綋琛ㄧ幇锛屽寘鎷敹鐩娿€侀闄╁拰鏀剁泭/椋庨櫓姣斻€傚垎鏋愮瓥鐣ュ湪涓嶅悓甯傚満鐜涓嬬殑琛ㄧ幇锛岃瘑鍒闄╃偣銆傛牴鎹洖娴嬬粨鏋滐紝鑰冭檻瀵圭瓥鐣ュ弬鏁拌繘琛岃皟鏁存垨浼樺寲锛屼互鎻愬崌绛栫暐鐨勬墽琛屾晥鏋溿€?/p>涓夈€佹寚鏍囦笌鏁堟灉璇勪及
璇︾粏璇勪及绛栫暐鐨勫勾鍖栨敹鐩婄巼銆佸鏅瘮鐜囥€佹渶澶у洖鎾ょ瓑鎸囨爣锛屼互閲忓寲绛栫暐琛ㄧ幇銆傛瘮杈冧笉鍚岀瓥鐣ョ殑椋庨櫓璋冩暣鍚庢敹鐩婏紝鎵惧嚭鏈€鍏锋湁鎬т环姣旂殑绛栫暐銆?/p>鍥涖€佷紭鍖栫瓥鐣ヤ互鏀硅繘琛ㄧ幇
浣跨敤缃戞牸鎼滅储銆侀仐浼犵畻娉曠瓑鏂规硶浼樺寲绛栫暐鍙傛暟锛屾彁鍗囩瓥鐣ョ殑鎵ц鏁堢巼銆傚紩鍏ュ姩鎬佽皟鏁存満鍒讹紝鏍规嵁甯傚満鍙樺寲瀹炴椂璋冩暣绛栫暐銆傜粨鍚堜笉鍚岀殑绛栫暐鎴栬祫浜э紝鏋勫缓澶氬厓鍖栨姇璧勭粍鍚堬紝闄嶄綆缁勫悎椋庨櫓銆?/p>浜斻€侀闄╃鐞嗕笌绛栫暐璋冩暣
璁剧疆姝㈡崯鍜屾鐩堢偣锛屾湁鏁堟帶鍒堕闄╂毚闇层€傚畾鏈熻瘎浼扮瓥鐣ヨ〃鐜帮紝鏍规嵁甯傚満鍙樺寲鍙婃椂璋冩暣绛栫暐銆?/p>鍏€佸疄鎴樻渚嬩笌缁忛獙鍒嗕韩
鍏稿瀷鍥炴祴妗堜緥瑙f瀽鈥斺€斾环鍊兼姇璧勭瓥鐣ヤ笌瓒嬪娍璺熻釜绛栫暐鍥炴祴
浠峰€兼姇璧勭瓥鐣ュ洖娴嬫渚嬫弿杩帮細鍒╃敤鍘嗗彶鑲$エ浠锋牸鏁版嵁锛岃瘎浼伴暱鏈熶环鍊兼姇璧勭瓥鐣ョ殑鏈夋晥鎬с€傞€氳繃浠g爜绀轰緥灞曠ず浠峰€兼姇璧勭瓥鐣ョ殑鍩烘湰妗嗘灦鍜屽洖娴嬭繃绋嬨€?/p>
浠g爜绀轰緥锛氭姇璧勯珮鎵嬬殑鎴愰暱涔嬭矾鈥斺€斾粠鏁版嵁鍥炴祴寮€濮?/p>涓€銆佹鍏ラ噾铻嶅競鍦虹殑蹇呯粡涔嬭矾锛氭暟鎹洖娴?/h3>
瀵煎叆蹇呭宸ュ叿锛?/p>
鍦ㄩ噾铻嶅競鍦虹殑寰侀€斾笂锛屾垜浠渶瑕佸己澶х殑姝﹀櫒搴撴潵鍔╂垜浠竴鑷備箣鍔涖€傝鎴戜滑瀵煎叆鎵€闇€鐨勫簱锛屼负鎺ヤ笅鏉ョ殑鎴樻枟鍋氬ソ鍑嗗銆?/p>
```python
import pandas as pd 鏁版嵁澶勭悊鐨勫埄鍣?/p>
from Backtrader import Cerebro, Strategy, FixedSizeOrder 鍥炴祴骞冲彴锛屾ā鎷熺湡瀹炰氦鏄撶幆澧?/p>
from FinanceDataReader import Reader 鏁版嵁鑾峰彇鐨勭鍣?/p>
```
鏁版嵁鑾峰彇锛?/p>
鎯宠浜嗚В甯傚満锛岄鍏堣鑾峰彇鏁版嵁銆傚鍚屾帰瀵诲疂钘忕殑鍦板浘锛屾暟鎹槸鎴戜滑杩涘叆甯傚満鐨勫叆鍦哄埜銆?/p>
```python
stock_data = Reader().read('AAPL', start_date='2000-01-01', end_date='2020-12-31', timeframe='D') 鑾峰彇鑻规灉鍏徃鑲$エ鏁版嵁
```
绛栫暐瀹氫箟锛?/p>
鎺ヤ笅鏉ワ紝鎴戜滑瑕佸畾涔夎嚜宸辩殑浜ゆ槗绛栫暐銆備竴涓畝鍗曠殑瓒嬪娍璺熼殢绛栫暐锛岃鎴戜滑璺熼殢甯傚満鐨勬浼愶紝鎹曟崏瓒嬪娍鐨勫熬宸淬€?/p>
```python
class TrendFollowingStrategy(Strategy):
def __init__(self):
self.trend = self.data.close[-1] 瀹氫箟瓒嬪娍
self.long_asset = self.data.close[-1 > 0] 鍒ゆ柇鏄惁鍋氬
def next(self): 姣忎竴鏈熺殑鍐崇瓥閫昏緫
if self.data.close[0] > self.trend: 濡傛灉褰撳墠浠锋牸楂樹簬瓒嬪娍绾匡紝鍒欎拱鍏?/p>
self.buy()
elif self.data.close[0] < self.trend: 濡傛灉褰撳墠浠锋牸浣庝簬瓒嬪娍绾匡紝鍒欏崠鍑?/p>
self.sell()
```
浜屻€佸疄鎴樻紨缁冿細鍥炴祴鎴戜滑鐨勭瓥鐣?/h3>璁剧疆鐜涓庡洖娴嬶細
鍦ㄦ垜浠殑铏氭嫙鎴樺満涓婏紝璁╂垜浠ā鎷熺湡瀹炵殑浜ゆ槗鐜鏉ユ祴璇曠瓥鐣ャ€傚垵濮嬪寲璧勯噾鍜屽洖娴嬪钩鍙般€?/p>
```python
cerebro = Cerebro() 鍒涘缓鍥炴祴骞冲彴瀹炰緥
cerebro.addstrategy(TrendFollowingStrategy) 娣诲姞鎴戜滑鐨勪氦鏄撶瓥鐣?/p>
cerebro.broker.setcash(100000) 璁剧疆鍒濆鎶曡祫閲戦
cerebro.adddata(stock_data['Close']) 娣诲姞鏁版嵁鍒板洖娴嬪钩鍙?/p>
cerebro.run() 寮€濮嬪洖娴嬩箣鏃?/p>
```
鎴戜滑鏉ョ湅鐪嬫垜浠殑鎴愭灉濡備綍锛歚print('Final portfolio value:', cerebro.broker.getvalue())`銆傝繖灏嗗憡璇夋垜浠渶缁堢殑璧勪骇浠峰€笺€?璁╂垜浠湡寰呬竴涓編濂界殑缁撴灉鍚э紒 馃殌 馃殌 馃殌 馃専 馃専 馃専 鉁?鉁?鉁?銆傗€嬧€?鉁斺湐鉁斺€嬧€?馃専鈥嬧€嬧湪鈥嬧€嬨€?涓夈€佹垚闀夸箣璺殑鎸戞垬涓庤В鍐崇瓥鐣?浣滀负涓€涓柊鎵嬶紝浣犲繀鐒朵細閬囧埌涓€浜涙寫鎴樸€備絾涓嶈鎷呭績锛岃鎴戜滑涓€璧烽潰瀵瑰苟瑙e喅瀹冧滑锛?甯歌鎸戞垬鍖呮嫭锛?鏁版嵁鑾峰彇鍥伴毦锛氬埄鐢ㄥ紑婧愭暟鎹簮鎴栫涓夋柟API绠€鍖栨暟鎹幏鍙栬繃绋嬨€?绛栫暐璁捐澶嶆潅锛氫粠绠€鍗曠瓥鐣ュ紑濮嬶紝閫愭澧炲姞澶嶆潅鎬с€?鍥炴祴缁撴灉涓嶇悊鎯筹細鍒嗘瀽鍘熷洜锛屽彲鑳芥秹鍙婃暟鎹棶棰樸€佺瓥鐣ヤ笉瓒崇瓑銆?瑙e喅杩欎簺鎸戞垬鐨勬渶浣虫柟寮忔槸閫氳繃涓嶆柇瀛︿範鍜屽疄璺垫潵鎻愰珮浣犵殑鎶€鑳藉拰鐭ヨ瘑銆?鍥涖€佽繘闃朵箣璺?鎴戜滑涓€璧锋帰璁ㄤ簡鍒濆鑰呯殑鎸戞垬锛岄偅涔堣繘闃朵箣璺張灏嗗浣曞憿锛?瀛︿範璧勬簮涓庡疄璺垫搷浣滅浉缁撳悎鏄垚鍔熺殑鍏抽敭锛佷綘鍙互鍒╃敤鍦ㄧ嚎璇剧▼銆佷功绫嶅拰璁哄潧鏉ユ寔缁涔犻噾铻嶇悊璁哄拰瀹炶返鐭ヨ瘑銆備笉鏂繘琛屽洖娴嬪拰瀹炵洏鎿嶄綔浠ョН绱粡楠屻€傚姞鍏ラ噾铻嶈鍧涙垨绀剧兢涓庝粬浜哄垎浜粡楠屽拰瑙佽В涔熸槸涓€涓緢濂界殑閫夋嫨銆?閫氳繃閬靛惊涓婅堪寤鸿锛屼綘灏嗚兘澶熷湪閲戣瀺甯傚満鐨勫緛閫斾笂瓒婅蛋瓒婅繙锛岃秺璧拌秺绋筹紒浣犲皢瀛︿細璇勪及鍜屼紭鍖栨姇璧勭瓥鐣ワ紝鎻愰珮鎶曡祫鍐崇瓥鐨勭瀛︽€у拰鏈夋晥鎬с€傝鎴戜滑涓€璧疯繋鎺ユ湭鏉ョ殑鎸戞垬鍚э紒鍔犳补锛侌煉煉煉?/p>
- 上一篇:Python 随机数
- 下一篇:返回列表
版权声明:《数据回测教程:初学者的实用指南》来自【石家庄人才网】收集整理于网络,不代表本站立场,所有图片文章版权属于原作者,如有侵略,联系删除。
https://www.ymil.cn/baibaoxiang/27753.html