±à¼ÍƼö: |
±¾ÎÄÖ÷Òª·ÖΪ3¸ö²¿·Ö£¬ÖðÒ»½²½âÏòÁ¿»¯»Ø²âµÄÉè¼ÆÔÔò¡¢¼Ü¹¹ÓëʵÏÖ,Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£ ±¾ÎÄÀ´×ÔÓÚÖªºõ£¬ÓÉAlice±à¼¡¢ÍƼö¡£ |
|
»ùÓÚScikit-learnµÄÏòÁ¿»¯»Ø²â¿ò¼Ü

»Ø²âÊǸöÀϵôÑÀµÄÎÊÌâÁË£¬¿ªÔ´ÉçÇøÒ²Óв»ÉÙÓÅÐãµÄ»Ø²â¿ò¼Ü£¬Èçzipline¡¢backtraderµÈ£¬ÄÇÎÒÃÇΪʲôҪ·ÅÆúËûÃǶøÑ¡ÔñÔìÂÖ×ÓÔÙÉè¼ÆÒ»Ì×ÄØ£¿
ÆäʵÎÒÃDz¢·Ç·ÅÆúÕâЩ¿ò¼Ü£¬Ö»ÊÇÔÚijЩ³¡ºÏÏ£¬ÎÒÃÇÐèÒª»Ø²âËٶȸü¿ì¡¢Êý¾Ý´¦ÀíÄÜÁ¦¸üÇ¿µÄÒ»¸ö¿ò¼Ü¡£ÎÒÃǽ«ÓúóÕß¿ìËÙÑéÖ¤Òò×Ó»ò²ßÂÔÂß¼µÄÓÐЧÐÔ£¬È»ºóÔÙÓÃǰÕß½øÐо«Ï¸»¯µÄ»Ø²â¡£¼ò¶øÑÔÖ®£¬Ç°Õß¡°¿ì¡±¶øºóÕß¡°Ï¸¡±£¬ÓÅÊÆ»¥²¹£¬Ìá¸ßÑо¿µÄЧÂÊ¡£
ÄÇôΪÁËʵÏÖ¡°¿ì¡±£¬ÎÒÃÇÐèÒª×öÐ©Ê²Ã´ÄØ£¿
ºÜ¼òµ¥£¬¸ÐлPythonÇ¿´óµÄÉú̬Ȧ£¬ÄãÐèÒª×öµÄ×îÖ÷ÒªµÄÊ£¬ÊǶÁÎĵµ¡¢µ÷°üºÍ×éºÏ¡£

ÎÄÕ½«·ÖΪ3¸ö²¿·Ö£¬ÖðÒ»½²½âÏòÁ¿»¯»Ø²âµÄÉè¼ÆÔÔò¡¢¼Ü¹¹ÓëʵÏÖ
Éè¼ÆÔÔò
¼Ü¹¹Éè¼Æ·½Ã棬ÓÐÁ½¸öÔÔò¡£
³ä·ÖÀûÓÃÏÖÓпªÔ´¿â£¬²»ÔìÂÖ×Ó
1.ÒµÎñÓÅÏÈ£¬²»¹ý¶ÈÉè¼Æ
2.Ö÷Á÷¿âÀú¾ÑéÖ¤£¬¿ÓÉÙ¡¢Ò²ÓÐÉçÇøµÄÖ§³Ö
ÒÔsklearnµÄ½Ó¿ÚΪ±ê×¼£¬¿É½«²ßÂÔÊÓΪËã·¨¶ÔÏó
1.Ç¿´óµÄÉçÇøÖ§³Ö£¬Google×ÊÖú
2.ºÏÀíµÄ½Ó¿ÚÉè¼Æ£¬·á¸»µÄ¼Ò×å¿â³ÉÔ±£¬½ôÌùPythonÉú̬£¬´Ósklearn-contribÖоͿɼûÒ»°ß
3.¿É²¢ÐÐÓ뼯ȺѵÁ·£¬ÓÈÆäÊʺÏÊý¾ÝÁ¿ÒªÇó¸ßµÄ²ßÂÔ
4.±ãÓÚ²¿Êð£¬Í³Ò»ÏßÉÏ¡¢ÏßϳÌÐò¿ò¼Ü
¶ÔÁË£¬´ò¸öÔ¤·ÀÕëÏȰɣºÆäʵÄã¿ÉÒÔÈÏΪ£¬ÎÒÔÚ¹ÄÀøÄã³ÉΪһ¸öµ÷°üÏÀ£¬ÒòΪÕâÆªÎÄÕµĺó°ë²¿·Ö£¬»ù±¾¶¼ÊÇÔÚµ÷Óø÷ÀàÖ÷Á÷¿âµÄ½Ó¿Ú¡£µ«ÒýÓÃǰÈ˵ϰÀ´Ëµ£º
´ÓÈ˵Ŀ͹ÛÈÏʶ¹æÂÉÀ´½²£¬ÄãÓ¦¸ÃÏȳÉΪһÃûµ÷°üÏÀ¡£ËüÓÐÖúÓÚÄãÅ׿ªÏ¸½ÚµÄ¼ÏËø£¬ÇåÎúµØÎªÒ»¸öÏÖʵĿ±ê´î½¨¿ò¼Ü¡£Äã¿ÉÒÔÌÚ³ö¸ü¶àµÄ¾«Á¦¼¯ÖÐÓÚ½â¾ö·½°¸µÄÉè¼Æ£¬¶ø²»ÊÇÔÚ»ù½¨ÉèÊ©ÉÏÍ£ÖͲ»Ç°¡£ÕâЩÏֳɵijÌÐò°ü£¬Äܹ»ÎªÄã¿ìËٵشÆð¿ÉÒÔÌṩ·´À¡µÄʵÑéÄ£ÐÍ£¬ÈÃÄãͨ¹ýʵ¼ùÀ´Æô·¢¸ü¶àµÄ˼·¡£
¡°Ë³·ç¶øºô£¬Éù·Ç¼Ó¼²Ò²£¬¶øÎÅÕßÕá±£¬È˵ÄÇ¿´óËùÔÚ£¬¾ÍÊÇÔÚÓÚÉÆÓÚÀûÓù¤¾ß¡¢×éºÏ¹¤¾ß¡£
¼Ü¹¹
Á÷³Ì·½Ã棬ÎÒÃÇ×ñÑ»úÆ÷ѧϰ¼à¶½Ê½Ëã·¨µÄ¿ª·¢Á÷³Ì£¬½«²ßÂÔÊÓΪ×Ô±äÁ¿XºÍÒò±äÁ¿YÖ®¼äº¯ÊýÓ³Éä¹ØÏµ£¬
¡£
ÕâÀïf´ú±íÓ³É亯Êý£¬ ´ú±íÓ³É亯ÊýÖеIJÎÊý£¬¶ø¼à¶½Ê½Ñ§Ï°µÄÈÎÎñ¾ÍÊÇÕÒµ½Ç¡µ±µÄº¯Êý ºÍ²ÎÊý
£¬Ê¹µÃ¸ÃÓ³É価Á¿·ûºÏÒÔÏÂÒªÇó
ÔÚʵ¼ùÖУ¬ÎªÁËʵÏÖÕâһĿ±ê£¬»ù±¾Á÷³Ì°üÀ¨ÒÔϼ¸¸ö²½Öè
Ã÷È·ÒµÎñÎÊÌâ: ¶¨Ï²ßÂԵĺËÐÄÂß¼
Ã÷È·ÌØÕ÷¼¯: ËѼ¯ÌØÕ÷¼¯¡¢Ä¿±ê¼¯Êý¾Ý£¬¼´X,Y
»ù±¾¼ÆÁ¿·ÖÎö: ¶ÔÓÚÿ¸öÌØÕ÷±êÇ©£¬¾ù½øÐÐͳ¼Æ·ÖÎö£¬È·ÈÏÊý¾ÝÖÊÁ¿¡¢Á˽âÆäÊý¾Ý·Ö²¼¼°Ìصã
ÖÆ×÷×îС¼ÛֵģÐÍ: ×öÒ»¸ö¼òÒ׵ĿÉÐÐÄ£ÐÍ£¬ÀýÈ罨Á¢ÏßÐԻعéÄ£ÐÍ,×÷Ϊ¶Ô¸´ÔÓÄ£Ð͵ÄЧ¹û¶Ô±È
ÒÔÉϲ½ÖèÒ»°ãÊÇ·Ç×Ô¶¯»¯µÄ£¬ÐèÒª½èÖú·ÖÎöÔ±µÄ¾Ñ飬Ëùνgarbage in garbage out£¬Òª´ÓÔ´Í·¾Í±£Ö¤ºÃÊý¾ÝÓëÌØÕ÷µÄÖÊÁ¿¡£
¶øÒÔϲ½Ö裬ÔòÊÇÎÒÃÇ¿ò¼ÜÖÐҪʵÏÖ×Ô¶¯»¯µÄ²¿·Ö
1.ÌØÕ÷¹¤³Ì
Ô¤´¦Àí£º±ØÒªµÄÊý¾ÝÇåÏ´
Òò×ÓÉú³É£º»ùÓÚÔʼÊý¾ÝXÉú³ÉеÄÒò×ÓÌØÕ÷ £¬ÆäÖÐ
ΪÒò×ÓnµÄÉú³Éº¯Êý
Òò×Óɸѡ£ºÔÚÈ«²¿Òò×ÓÖÐɸѡ³öm¸öÊ×Ñ¡Òò×Ó²¢½øÐÐÌØÕ÷ÈÚºÏ
2. ²ßÂÔѵÁ·
Õë¶ÔÒ»×éÌØÕ÷Òò×Ó¼¯£¬ÌṩN1¸ö±¸Ñ¡²ßÂÔ£¬Ã¿¸ö²ßÂÔ¶¼ÓÐ×Ô¼ºµÄÐźÅÉú³É·½Ê½
Õë¶ÔÒ»¸ö±¸Ñ¡²ßÂÔ£¬ÌṩN2¸ö³¬²Î×éºÏ
Õë¶ÔÒ»¸ö³¬²Î×éºÏ£¬ÌṩN3¸ö½»²æÑéÖ¤¡¾¿ÉÑ¡¡¿
ÿ¸ö½»²æÑéÖ¤£¬¶ÔÓ¦µÄÊÇÒ»¸ö´øÓоßÌ峬²Î×éºÏµÄ²ßÂÔʵÀý£¬ÊµÀýÔÚѵÁ·¼¯ÉϽøÐÐѵÁ·£¬ÔÚÑéÖ¤¼¯ÉϲâÊÔ
3. ½á¹ûÊä³ö
Éú³É×îÓŲßÂÔʵÀýÄ£ÐÍ
½«²âÊÔ¼¯µ¼È룬Éú³ÉÑù±¾ÍâÔ¤²â½á¹û
¸ù¾ÝЧ¹û¾ö¶¨ÊÇ·ñÉÏÏß»òÕßÖØÐµ÷Õû¡¢ÑµÁ·
Á÷³Ì¿´ÆðÀ´ºÃÏñºÜ¸´ÔÓµÄÑù×Ó£¬µ«ÊÇʵÏÖÆðÀ´£¬È´²¢·ÇÈç´Ë¡£

ʵÏÖ

Ã÷È·Á˹¦ÄÜÐèÇóÖ®ºó£¬ÎÒÃDZã¿ÉÒÔ×ÅÊÖÉè¼Æ¿ò¼ÜµÄ¼Ü¹¹ÓëʵÏÖ¡£
·Ö¸îÆ÷
Ê×ÏÈ£¬ÊµÏÖÒ»¸öÊý¾Ý·Ö¸îÆ÷¡£¹¦Äܼܺòµ¥£¬Äܽ«Êý¾Ý·Ö¸î³É¿ª·¢¼¯ºÍ²âÊÔ¼¯¼´¿É¡£ÆäÖУ¬¿ª·¢¼¯ÓÃÓÚÄ£Ð͵Ľ»²æÑé֤ʹÓ㬶ø²âÊÔ¼¯ÓÃÓÚºóÆÚ×îÓÅÄ£Ð͵ÄЧ¹û²âÊÔ¡£

ʵÏÖÆðÀ´Ò²ºÜ¼òµ¥£¬Éè¼ÆÒ»¸öÀàµ÷ÓÃsklearn.model_selection.train_test_splitº¯Êý¼´¿É¡£ÁôÐÄÊÇ·ñÒªÉèÖÃshuffle=False£¬±Ï¾¹Õë¶ÔÓÚ²ßÂÔ¶øÑԴ󲿷ÖÊý¾Ý¶¼ÊÇʱÐòÊý¾Ý¡£
ÌØ±ðҪעÒâµÄÊÇ£¬²âÊÔ¼¯Êý¾ÝÔÚ×îºóµÄÄ£ÐͲâÊÔ½×¶Îǰ£¬ÎÞÂÛÈçºÎ£¬¶¼²»Ó¦¸Ã±»´¥Åö¡£
Òò×Ó´¦ÀíÆ÷
Òò×ÓÔ¤´¦ÀíÆ÷ÒԹܵÀPipelineÐÎʽ´®Áª»òÕß²¢Áª¶à¸öTransformer£¬°üÀ¨£º
1.Ô¤´¦Àí·½Ãæ£¬Ö÷Òª²ÉÓÃsklearn.preprocesserÖеÄ×é¼þ£¬ÈçMaxAbsScaler,
Imputer, StandardScaler
2.Òò×ÓÉú³É·½Ã棬Ôò¶¨ÖÆ»¯Òò×Óת»»Æ÷£¬ÐÎÈçMATransformerÕâÖÖÐÎʽ£¬ÐëʵÏÖ½Ó¿Úfit,
transformÒÔ±ã½ÓÈëµ½PipelineÖÐ
3.Òò×Óɸѡ·½Ã棬¿ÉÖ±½Ó²ÉÓÃsklearn.feature_selection.SelectKBest£¬»òÕ߸ù¾ÝÒµÎñÉè¼Æ¶¨ÖÆ»¯É¸Ñ¡Æ÷
from sklearn.base
import TransformerMixin, BaseEstimator
import pandas as pd
class MATransformer(TransformerMixin, BaseEstimator):
def __init__(self, n_sma):
super(MATransformer, self).__init__()
self.n_sma = n_sma
def fit(self, X, y):
return self
def transform(self, X):
return pd.DataFrame(X).rolling(self.n_sma).mean().values |
ÒÔTransformerµÄÐÎʽÀ´Éè¼ÆÒò×ÓÊÇÆÄÓÐñÔÒæµÄ¡£Ò»À´¿ÉÒÔ½«Êý¾Ý´¦ÀíÁ÷³ÌÄ£¿é»¯£¬·½±ã´úÂë¹ÜÀí¼°¸´Ó᣶þÀ´¿ÉʹÓùܵÀµÄ·½Ê½ÇáËɵؽ«²»Í¬µÄÊý¾Ý´¦ÀíÁ÷³ÌÁ¬½ÓÆðÀ´£¬·½±ã¶àÖÖÒò×ÓµÄ×éºÏÆ´½Ó¡£
ͨ³£¶øÑÔ£¬ÎªÁËÕÒµ½Ò»¸öºÃ²ßÂÔ£¬Ä㻹ÐèÒª¶¨ÒåÆäËûÒò×Ó£¬ÐÎÈݾùÏßÀàÒò×Ó£¬Í»ÆÆÀàÒò×Ó¡¢ÐÎ̬ÀàÒò×ӵȵȣ¬Ñ°ÕÒÓÐЧÒò×ÓÒ»Ö±¶¼ÊÇÑо¿Ô±×îÖØÒªµÄÈÎÎñÖ®Ò»¡£³éÏóÀ´Ëµ£¬Òò×Ó±¾ÖÊÉÏÊÇ´ÓÔʼÊý¾ÝÖгéÈ¡³öÀ´µÄÌØÕ÷£¬Á¥ÊôÓÚÌØÕ÷¹¤³Ì£¬ÊÇÒ»¸öºÜ´óµÄ»°Ì⣬ËùÒÔÕâÆÚ²»»áÉîÈë̽ÌÖ£¬Õâ¿éÄÚÈݼƻ®ÔÚδÀ´µÄ¡¾Analyst-ÌØÕ÷¹¤³Ì¡¿Ò»ÆÚÖÐ×ö̽ÌÖÓë·ÖÏí£¬Ï£Íû²»ÌøÆ±
:)

²ßÂÔѧϰÆ÷
Õâ¿éÊǶԲßÂÔʵÀý½øÐÐѵÁ·ºÍÓÅ»¯£¬ÊÇÕû¸ö¿ò¼ÜµÄºËÐIJ¿·Ö
Á÷³Ì·½Ã棬Ö÷ÒªÊÇÈçÏÂ4²½£º
1.Õë¶ÔÒ»×éÌØÕ÷Òò×Ó¼¯£¬ÌṩN1¸ö±¸Ñ¡²ßÂÔ£¬Ã¿¸ö²ßÂÔ¶¼ÓÐ×Ô¼ºµÄÐźÅÉú³É·½Ê½
±éÀúN1¸ö±¸Ñ¡²ßÂÔµÄÓÅ»¯¹ý³Ì£¬Ñ¡È¡×îÓŲßÂÔ
2. Õë¶Ôÿ¸ö±¸Ñ¡²ßÂÔ£¬ÌṩN2¸ö³¬²Î×éºÏ
¶ÔÓÚÿ¸ö±¸Ñ¡²ßÂÔ¶¼Ê¹ÓÃsklearn.model_selection.GridSearchCVÀ´×ö±©Á¦Íø¸ñÓÅ»¯
¸ù¾ÝÐèÇó£¬Ò²¿ÉÒÔÑ¡ÔñËæ»úÓÅ»¯Ëã·¨£¬ÐÎÈçÄ£ÄâÍË»ð¡¢Á£×ÓȺµÈ
3. Õë¶ÔÒ»¸ö³¬²Î×éºÏ£¬ÌṩN3¸ö½»²æÑéÖ¤¡¾¿ÉÑ¡¡¿
Èç¹ûʵÏÖÕâÒ»²½£¬½¨Òé²ÉÓÃÔÚGridSearchCVµÄ²ÎÊýÖÐÉ趨cv=TimeSeriesSplit()ÒÔÖ¸¶¨ÑµÁ·¼¯ºÍÑéÖ¤¼¯µÄÇзÖ
4. ÿ¸ö½»²æÑéÖ¤£¬¶ÔÓ¦µÄÊÇÒ»¸ö´øÓоßÌ峬²Î×éºÏµÄ²ßÂÔʵÀý£¬ÊµÀýÔÚѵÁ·¼¯ÉϽøÐÐѵÁ·£¬ÔÚÑéÖ¤¼¯ÉϲâÊÔ
²ßÂÔÊÇÈçºÎѵÁ·µÄ£ºfit()º¯Êý
²ßÂÔÈçºÎ½øÐÐÐźÅÉú³É£ºpredict()º¯Êý
ÈçºÎÅжϲßÂÔÊÇÓÅÊÇÁÓÖÊ£ºscore()º¯Êý
¿ÉÒÔ¿´µ½£¬ÓÉÓÚÿ´ÎÍêÕûµÄÁ÷³Ì£¬¶¼ÖÁÉÙÒª¾¹ýN1*N2*N3´Î²ßÂÔʵÀýѵÁ·£¬Òò´Ë¶Ôµ¥´ÎѵÁ·µÄËٶȾÍÓкܸßÒªÇó¡£ÏÔÈ»Öðbar½øÐлزⲢ²»ÊÇÒ»¸öºÃµÄÑ¡Ôñ£¬´ËʱÎÒÃÇÓ¦¸ÃÑ¡ÔñÒ»¸ö¸üºÃµÄÊý¾Ý½á¹¹ºÍËã·¨Íê³É²ßÂÔµÄѵÁ·£¬×÷Ϊpython×¼Ò»µÈ¹«ÃñµÄnumpyºÍpandasÁ¢¿ÌÓ³ÈëÑÛÁ±£¬ÌرðÊÇpandas.DataFrame£¬ÓµÓÐ×ÅÇ¿´óµÄÊý¾ÝÏòÁ¿»¯´¦ÀíÄÜÁ¦£¬½Ó¿ÚÓѺã¬Ê®·ÖÊʺÏ×÷ΪÎÒÃǵĻù´¡Êý¾Ýµ¥ÔªX½øÐд«µÝ¡£
Òò¶øµ½´Ë£¬ÎÒÃÇÈ·¶¨ÏÂÁË3¸ö²ßÂÔ»ùÀàµÄÖØÒª½Ó¿Ú£¬²¢ÒÔDataFrameÐÎʽ´«µÝÊý¾Ý
from sklearn.base
import BaseEstimator
class Strategy(BaseEstimator):
def fit(self, X, y):
pass
def predict(self, X):
pass
def score(self, X, y):
pass |
Êý¾Ý½á¹¹·½Ã棬¶ÔÓÚ´«Í³µÄ»úÆ÷ѧϰÊý¾Ý¼¯£¬Æäά¶ÈÒ»°ãÊÇ2άµÄ£¬Ã¿ÁÐ1¸ö±êÇ©£¬Ã¿ÐÐ1¸ö¸öÌåÊý¾Ý¡£È»¶ø¶ÔÓÚ¹ÉÆ±ÕâÑùµÄʱ¼äÐòÁÐÊý¾Ý¶øÑÔ£¬Çé¿ö¾ÍÉÔÓÐÒ»µã²»Í¬ÁË¡£
ÒÔÔñ¹É²ßÂÔΪÀý£¬Êý¾Ýͨ³£¶¼ÊÇÈýάµÄ£¬°üÀ¨¡¾¹ÉƱ£¬Ê±¼ä£¬ÌØÕ÷¡¿¡£¹ÉƱÊý¾ÝÐòÁÐÒ»°ã¶¼ÓÐ×ÔÏà¹ØÐÔ£¬Õ¹¿ª³É¶þά¾ØÕóʱ£¬Èô´¦Àí²»µ±£¬ÔòºÜÈÝÒ×¶ªÊ§Ê±¼äά¶ÈÉϵÄÐÅÏ¢¡£Òò´Ë£¬¿ÉÒÔ¿¼ÂDzÉÓÃÈýά½á¹¹À´´æ´¢Êý¾ÝÐÅÏ¢¡£Ò»À´±£ÁôÊý¾ÝµÄά¶ÈÐÅÏ¢£¬¶þÀ´ÕâÑùµÄ½á¹¹Ò²·ûºÏÑо¿Ô±µÄÖ±¾õ¡£
ÇìÐÒµÄÊÇ£¬python°üxarrayÖеÄÀàDataArrayÌṩÁËÕâ·½ÃæµÄ¹¦ÄÜÖ§³Ö£¬¸ßЧ֧³ÖÏòÁ¿»¯ÔËËãµÄͬʱ£¬Ò²±£ÁôÁËÖáºÍά¶ÈÔªÐÅÏ¢£¬²Ù×÷ͬÑù¼òµ¥±ãÀû£¬Ï൱ÓÚÊÇÒ»¸ö¸ßά¶ÈµÄpandas.DataFrame¡£ËùÒÔÔÚfit()½Ó¿ÚÊÕµ½XÕâÑùµÄ¶þά¾ØÕóÊý¾Ýʱ£¬²»·ÁÏÈת»»³É3άÊý¾ÝÒÔ±ãÓÚºóÆÚÄ£ÐÍÂß¼µÄ´¦Àí¡£
¶øÕû¸ö²ßÂÔѵÁ·µÄ¹ý³Ì£¬Êµ¼ÊÉÏ¿ÉÒÔ¿´×öÎÒÃÇ´Ó3ά¾ØÕóÖÐÌáÈ¡±êÁ¿Ö¸±êµÄ¹ý³Ì¡£Æä¹ý³ÌÈçÏ£º

1.ͨ¹ý¶Ô3ά¾ØÕóµÄ´¦Àí£¬ÎÒÃÇÄܵõ½2άµÄÐźžØÕóÊý¾Ý£¬ºáÖáΪʱ¼ä£¬×ÝÖáΪ±êµÄÃû³Æ£¬ÖµÎª¶ÔӦʱ¼äÏ¡¢¸ø¶¨±êµÄµÄÐźÅÖµ£¨È¨ÖØÖµ£©
ÀûÓÃxarray.DataArray.sel().to_pandas()µÄ²Ù×÷£¬ÎÒÃÇÄܱã½ÝµÄ³éÈ¡³öij¸öÌØÕ÷±êÇ©µÄ¾ØÕóÐÅÏ¢£¬ÒÔ²ßÂÔÂß¼µþ¼Ó´¦Àí¶à¸öÌØÕ÷ÐÅÏ¢£¬»ñµÃ×îÖÕµÄÐźžØÕóÐÅÏ¢
2. µÃµ½ÐźžØÕóºó£¬ÎÒÃÇÈ·ÈÏÁ˸÷¸öʱ¼äµãµÄ±êµÄ³Ö²ÖÇé¿ö£¬ÒÔ´Ë£¬¿ÉÒÔ¼ÆËãϸöʱ¼ä½×¶ÎµÄÊÕÒæÇé¿ö£¬½ø¶øµÃµ½Õû¸ö×ʲú×éºÏµÄÊÕÒæÇúÏß
Ò»°ãÇé¿öÏ£¬ÎÒÃÇ»á¶ÔÐźžØÕó²ÉÓÃshift(1)µÄ²Ù×÷£¬È»ºóºÍÊÕÒæ¾ØÕóclose_df.pct_change()½øÐеã³Ë£¬²¢°´±êµÄÖá·½Ïò¼Ó×Ü£¬µÃµ½¾»ÖµÇúÏß
3. ¶ÔÓÚÊÕÒæÇúÏߣ¬Ò»°ãÒÔÄ껯ÊÕÒæ¡¢ÏÄÆÕ±ÈÂÊ¡¢»òÕß×î´ó»Ø³··ù¶È×÷Ϊ²ßÂÔÄâºÏÓŶȵĶÈÁ¿
×î¼òµ¥µÄÀý×ÓÖ»ÐèÒªËÄÐдúÂë¼´¿É¡£
signal_df = (ma_12
> ma_26).astype(float)
pnl_ratio = (signal_df.shift(1) * close_df.pct_change()).sum(axis=1)
nav = (1 + pnl_ratio).cumprod()
total_return = nav.iloc[-1] - 1 |
¿ÉÒÔ×¢Òâµ½£¬Õû¸ö¹ý³ÌÖеģ¬ÎÒÃÇ¿ÌÒâµÄ²»Ê¹ÓÃÈκÎforÑ»·£¬¶øÊǰÑËùÓеÄÊý¾Ý´¦ÀíÈÎÎñ½»ÓÉxarray£¬pandas,
numpy£¬ËüÃÇÊǸßЧµÄÊý¾Ý´¦Àí°ü£¬ÄܰïÖúÎÒÃÇʵÏÖ³ä·ÖÏòÁ¿»¯µÄÄ¿±ê£¬µ½´ï¿ìËÙѵÁ·ºÍ»Ø²âµÄЧ¹û¡£¶ÔÓÚµ¥»ú¿É´¦ÀíµÄÊý¾ÝÁ¿¶øÑÔ£¬Êý¾ÝÔ½´ó£¬¼ÓËÙЧ¹ûÔ½ºÃ¡£
ѵÁ·Íê±Ïºó£¬score(X, y)»áÒÔͬÑùµÄÁ÷³Ì´¦Àí²âÊÔÊý¾Ý£¬Êä³öÄ£Ð͵ÄÑù±¾ÍâѵÁ·Ð§¹û¡£
µ½´Ë£¬ÎÒÃDZãÍê³ÉÁËÒ»¸ö´øÓоßÌ峬²Î×éºÏµÄ²ßÂÔʵÀýµÄѵÁ·£¬Ê£ÏµĹ¤×÷£¬½»¸øGridSearchCV¼´¿É£¬Äã¿ÉÒÔÈ¥³å±¿§·È£¬»ØÀ´¾Í¸ÃÓÐÒ»¸ö×îÓŲßÂÔÄ£ÐͳöÀ´ÁË¡£
ÆÀ¹ÀÆ÷
ͨ¹ý²ßÂÔѧϰÆ÷£¬ÎÒÃǵõ½¿ª·¢¼¯ÉϵÄ×îÓŲßÂÔÄ£ÐÍ£¬ÏÖÔÚÐèÒªÎÒÃǽøÐÐ×îºóµÄÊÕ¹Ù²âÊÔ½×¶Î
ÏÈÒÔÕû¸ö¿ª·¢¼¯X_dev, y_devÖØÐÂѵÁ· ´øÓÐ×îÓų¬²ÎµÄ²ßÂÔÄ£ÐÍ
È»ºóÒÔ²âÊÔÊý¾ÝX_test, y_test£¨again£¬²âÊÔ¼¯Êý¾ÝÔڴ˽׶Î֮ǰ£¬ÎÞÂÛÈçºÎ£¬¶¼²»Ó¦¸Ã±»´¥Åö£©ÊäÈëÆÀ¹À²ßÂÔЧ¹û£¬Èç¹ûЧ¹ûÓÅÁ¼£¬ÄÇô¹§Ï²Ä㣬ÄãµÃµ½ÁËÒ»¸öͳ¼ÆÑ§ÉÏÑéÖ¤ÓÐЧµÄ²ßÂÔ£¡
С½á
µ½´ËΪֹ£¬¡°µ÷°üÏÀ¡±µÄÈÎÎñÈ«²¿Íê³É£¬Äã»á·¢Ïֻزâ¿ò¼ÜµÄ´úÂëÁ¿²¢²»¶à£¬´ó²¿·Ö´úÂëÂß¼¶¼ÔÚ½²ÈçºÎ°ÑÏÖÓпâµÄ½Ó¿ÚÒÔºÏÀíµÄÐÎʽ¾Û¼¯ÆðÀ´¡£¶ÔÓÚÑо¿Ô±¶øÑÔÕâÒÑÈ»×ã¹»£¬×Ô¶¯»¯ÇÒ¸ßЧÂʵÄѵÁ·ÑéÖ¤Á÷³ÌÒѾ¿ÉÒÔÈÃËûÃÇDZÐÄÑо¿£¬½«¾«Á¦·ÅÔÚÒò×ӺͲßÂÔµÄÉè¼ÆÉÏ¡£
µ±È»£¬Õâ¸ö¿ò¼ÜÒ²»¹ÓÐÁ½·½ÃæµÄ²»×㣺
Ò»Õߣ¬¿ò¼ÜĿǰ»¹Êǵ¥»úÔËÐе쬶ÔÓÚ¼òµ¥²ßÂÔ¶øÑÔÊÇ×ã¹»µÄ£¬µ«ÊÇÈç¹û²ßÂÔÉæ¼°Á˸´ÔӵĴ¦ÀíÂß¼£¬»òÕßÊý¾ÝÁ¿ÅӴ󣬵¥»úÏÔÈ»ÊÇÎÞ·¨´¦Àí¹ýÀ´µÄ¡£ÍÁºÀµÄ·½°¸Ò»°ãÊÇÀ©ÄÚ´æ¡¢ÌáÐÔÄÜ£¬¶ø¸üÒ»°ãµÄ·½°¸ÔòÊǼ¯ÈºÔËÐС£ÇìÐÒµÄÊÇÎÒÃDzÉÈ¡ÁËsklearnµÄÉè¼Æ·½°¸£¬Äã²»ÐèÒªÖØÍ·½øÐм¯ÈºÉè¼Æ£¬ÄãÒѾӵÓÐÁ˲»ÉÙÏֳɵÄÇÒ¾ÀúÑéÖ¤µÄ¼¯Èº¿â£¬¶¯ÊÖ³¢ÊÔÒ»ÏÂdaskºÍspark-sklearn£¬¼¯Èº»¯Ò²´¥Êֿɼ°¡£
¶þÕߣ¬ÊDzßÂÔÄ£ÐÍ»¹²»ÄÜʵÅÌ¡£µ±È»£¬Èç¹û²»ÊÇÖÐ¸ßÆµ²ßÂÔ£¬¶ÔÑÓ³ÙÒªÇ󲻸ߣ¬ÎÒÃÇѵÁ·³öÀ´µÄ½á¹û£¬»¹ÊÇÓÐÉÏʵÅ̵ÄÄÜÁ¦µÄ¡£ÎÒÃÇÐèÒª¶îÍâ×öµÄÊÇ£º
¶¨ÒåÒ»¸öÊý¾ÝץȡÆ÷£ºÄܰ´Ê±½«ÌØÕ÷Êý¾Ýץȫ£¬²¢ÕûÀí³ÉDataFrameÐÎʽË͵½ÎÒÃǵIJßÂÔʵÀý£¬ÓɲßÂÔʵÀýÉú³ÉÐźžØÕó
¶¨ÒåÒ»¸ö¼òµ¥µÄ·¢µ¥Æ÷£ºÄܽ«ÐźžØÕó´¦Àí³É¶ÔÓ¦µÄ¶©µ¥·¢Ë͸ø½»Ò×Ëù¡£
µ«ÊÇ£¬´ËʱÎÒÃÇ»¹ÊDz»½¨ÒéÖ±½ÓÉÏʵÅ̵ģ¬ÒòΪÕâ¸öϵͳ»¹Ì«´àÈõÁË£¬Ã»ÓÐ·ç¿Ø£¬Ò²Ã»ÓвÖλ¹ÜÀí£¬ÕâºÃ±ÈÊÇÒ»Á¾³µ£¬×°ÁËÒýÇæÄÜÅÜ£¬È´Ã»×°É²³µÍ£²»ÏÂÀ´¡£ÕâÑùµÄϵͳÊÇÏ൱ΣÏÕ£¬Ò»²»Ð¡ÐÄ£¬¾ÍÈÝÒ×·³µ¡£ |