From 70fab3c6cd6050730d0dd1e42eb193d64c11c8e9 Mon Sep 17 00:00:00 2001 From: hugo2046 Date: Wed, 28 Sep 2022 18:08:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scr/utlis.py" | 81 +++++++----- .../scr/__pycache__/__init__.cpython-38.pyc" | Bin 545 -> 415 bytes .../scr/__pycache__/bt_func.cpython-38.pyc" | Bin 11083 -> 13443 bytes .../scr/__pycache__/calc_func.cpython-38.pyc" | Bin 2470 -> 1618 bytes .../scr/__pycache__/plotting.cpython-38.pyc" | Bin 19286 -> 22552 bytes .../__pycache__/timeseries.cpython-38.pyc" | Bin 3987 -> 3999 bytes .../scr/__pycache__/utils.cpython-38.pyc" | Bin 2206 -> 2535 bytes ...345\210\227\344\271\213\344\272\214.ipynb" | 117 ++++++++---------- 8 files changed, 103 insertions(+), 95 deletions(-) diff --git "a/B-\345\233\240\345\255\220\346\236\204\345\273\272\347\261\273/\351\207\221\350\202\241\345\242\236\345\274\272\347\255\226\347\225\245/scr/utlis.py" "b/B-\345\233\240\345\255\220\346\236\204\345\273\272\347\261\273/\351\207\221\350\202\241\345\242\236\345\274\272\347\255\226\347\225\245/scr/utlis.py" index 1b7d756..c12e41c 100644 --- "a/B-\345\233\240\345\255\220\346\236\204\345\273\272\347\261\273/\351\207\221\350\202\241\345\242\236\345\274\272\347\255\226\347\225\245/scr/utlis.py" +++ "b/B-\345\233\240\345\255\220\346\236\204\345\273\272\347\261\273/\351\207\221\350\202\241\345\242\236\345\274\272\347\255\226\347\225\245/scr/utlis.py" @@ -12,22 +12,26 @@ def load_gold_stock_csv() -> pd.DataFrame: ------- pd.DataFrame """ - dtype_mapping = {'end_date': np.datetime64, - 'write_date': np.datetime64} + dtype_mapping = {'end_date': np.datetime64, 'write_date': np.datetime64} - col_mapping = {'ticker_symbol_map_sec_type_name': 'sw_l3', - 'ticker_symbol_map_sec_id': 'code'} + col_mapping = { + 'ticker_symbol_map_sec_type_name': 'sw_l3', + 'ticker_symbol_map_sec_id': 'code' + } gold_stock_frame = pd.read_csv(r'data/gold_stock_frame.csv', index_col=[0]) - gold_stock_frame = (gold_stock_frame.pipe(pd.DataFrame.astype, dtype_mapping) - .pipe(pd.DataFrame.rename, columns=col_mapping) - .pipe(pd.DataFrame.assign, code=lambda x: x['code'].apply(normalize_code))) + gold_stock_frame = (gold_stock_frame.pipe( + pd.DataFrame.astype, + dtype_mapping).pipe(pd.DataFrame.rename, columns=col_mapping).pipe( + pd.DataFrame.assign, + code=lambda x: x['code'].apply(normalize_code))) return gold_stock_frame -def view_author_stock(ser: pd.Series, gold_stock_frame: pd.DataFrame) -> pd.DataFrame: +def view_author_stock(ser: pd.Series, + gold_stock_frame: pd.DataFrame) -> pd.DataFrame: """从gold_stock_frame按ser获取所推荐股票信息 Parameters @@ -50,7 +54,6 @@ def view_author_stock(ser: pd.Series, gold_stock_frame: pd.DataFrame) -> pd.Data class TradeDays(): """交易日时间处理相关""" - def __init__(self): self.all_trade_days: pd.DatetimeIndex = pd.to_datetime( @@ -60,37 +63,42 @@ def __init__(self): def tradeday_of_month(self, watch_dt: str) -> int: """查询该交易日是当月的第N日""" watch_dt = pd.to_datetime(watch_dt) - idx = self.TradedaysOfMonth.index.get_indexer( - [watch_dt], method='nearest')[0] + idx = self.TradedaysOfMonth.index.get_indexer([watch_dt], + method='nearest')[0] return self.TradedaysOfMonth.iloc[idx, 1] - def get_tradedays_of_month(self, year: Union[str, int] = None, month: Union[str, int] = None, num: int = None) -> pd.DataFrame: + def get_tradedays_of_month(self, + year: Union[str, int] = None, + month: Union[str, int] = None, + num: int = None) -> pd.DataFrame: """获取月份的第N日""" if num is None: raise ValueError('num参数不能为空!') if (year is not None) and (month is None): - cond = (self.TradedaysOfMonth.index.year == year) & ( - self.TradedaysOfMonth['dayofmonth'] == num) + cond = (self.TradedaysOfMonth.index.year + == year) & (self.TradedaysOfMonth['dayofmonth'] == num) elif (year is None) and (month is not None): - cond = (self.TradedaysOfMonth.index.month == month) & ( - self.TradedaysOfMonth['dayofmonth'] == num) + cond = (self.TradedaysOfMonth.index.month + == month) & (self.TradedaysOfMonth['dayofmonth'] == num) else: - cond = (self.TradedaysOfMonth.index.strftime('%Y%m') == f'{year}{month}') & ( - self.TradedaysOfMonth['dayofmonth'] == num) + cond = (self.TradedaysOfMonth.index.strftime('%Y%m') + == "{}{:02d}".format(year, month)) & ( + self.TradedaysOfMonth['dayofmonth'] == num) return self.TradedaysOfMonth[cond] - def get_tradedays_month_end(self, year: Union[str, int] = None, month: Union[str, int] = None) -> pd.DataFrame: + def get_tradedays_month_end(self, + year: Union[str, int] = None, + month: Union[str, int] = None) -> pd.DataFrame: """查询每月最后一个交易日""" trade_days = self._MonthEndOrMonthBegin('last') - if (year is None) and (month is None): return trade_days @@ -105,11 +113,15 @@ def get_tradedays_month_end(self, year: Union[str, int] = None, month: Union[str else: - cond = (trade_days.index.strftime('%Y%m') == f'{year}{month}') + cond = (trade_days.index.strftime('%Y%m') == "{}{:02d}".format( + year, month)) return trade_days[cond] - def get_tradedays_month_begin(self, year: Union[str, int] = None, month: Union[str, int] = None) -> pd.DataFrame: + def get_tradedays_month_begin( + self, + year: Union[str, int] = None, + month: Union[str, int] = None) -> pd.DataFrame: """查询每月最后一个交易日""" trade_days = self._MonthEndOrMonthBegin('first') if year is None and month is None: @@ -119,31 +131,38 @@ def get_tradedays_month_begin(self, year: Union[str, int] = None, month: Union[s elif year is None: cond = trade_days.index.month == month else: - cond = trade_days.index.strftime('%Y%m') == f'{year}{month}' + cond = trade_days.index.strftime('%Y%m') == "{}{:02d}".format( + year, month) return trade_days[cond] def _MonthEndOrMonthBegin(self, method: str) -> pd.DataFrame: - cols_dic = {'last': ('MonthEnd(all)', 'MonthEnd'), - 'first': ('MonthBegin(all)', 'MonthBegin')} + cols_dic = { + 'last': ('MonthEnd(all)', 'MonthEnd'), + 'first': ('MonthBegin(all)', 'MonthBegin') + } trade_days = self.TradedaysOfMonth.copy() - func = {'last': trade_days.groupby(pd.Grouper(level=0, freq='M')).last, - 'first': trade_days.groupby(pd.Grouper(level=0, freq='MS')).first} + func = { + 'last': trade_days.groupby(pd.Grouper(level=0, freq='M')).last, + 'first': trade_days.groupby(pd.Grouper(level=0, freq='MS')).first + } trade_days = func[method]() trade_days[cols_dic[method][0]] = trade_days.index trade_days.index = trade_days['trade_days'] - trade_days.rename( - columns={'trade_days': cols_dic[method][1]}, inplace=True) + trade_days.rename(columns={'trade_days': cols_dic[method][1]}, + inplace=True) return trade_days.drop(columns=['dayofmonth']) def _tradedaysofmonth(self): tradedays_frame: pd.DataFrame = self._trans2frame() - tradedays_frame['dayofmonth'] = tradedays_frame.groupby(pd.Grouper( - level=0, freq='M'))['trade_days'].transform(lambda x: np.arange(1, len(x)+1)) + tradedays_frame['dayofmonth'] = tradedays_frame.groupby( + pd.Grouper(level=0, freq='M'))['trade_days'].transform( + lambda x: np.arange(1, + len(x) + 1)) self.TradedaysOfMonth = tradedays_frame def _trans2frame(self) -> pd.DataFrame: diff --git "a/C-\346\213\251\346\227\266\347\261\273/\347\211\271\345\276\201\345\210\206\345\270\203\345\273\272\346\250\241\346\213\251\346\227\266\347\263\273\345\210\227\344\271\213\344\272\214/scr/__pycache__/__init__.cpython-38.pyc" "b/C-\346\213\251\346\227\266\347\261\273/\347\211\271\345\276\201\345\210\206\345\270\203\345\273\272\346\250\241\346\213\251\346\227\266\347\263\273\345\210\227\344\271\213\344\272\214/scr/__pycache__/__init__.cpython-38.pyc" index a88e5e9c600ac99e74a228ecee8c533a7a6c2ea7..f8816690ed845948b4f9974abd0176fcae7a2e1f 100644 GIT binary patch delta 136 zcmZ3;GM||*l$V!_0SNBxP*1+ZFp*D2N(9JDVTfW#VN7AlVa#QUVq#=SVGd@{WSN-I z!fT;xY@lFdWMybzWnw(>qo^?BE#Bm!)Wnk1_~Oj;yu=(oP3FmojFNmS8H!kdCV`2s i$&)uQdhtBpy!&a#^d~#JpX}{0Bw98nxVF_vHkP1cDnE%j!)MivT&hE|3~R>p>0E~&-IMVSR9nfZBE z3S2K4fyQbw-(vRgb-cx$oS2gwpO;#aR9bmUAU(AtKD8n_BQY;MHNH5t1gMHTBqg!3 zI6o~7$h{>5QjnOF6JJu4n35U~lDWkP5<~F)G&ygvPy8=#R>TanricYdMDdmsBdI82 l1xc`h2zDT`lA(wb#0C*x!zZgSdQGlkl;;3xWMLO!1OV0jOWObd diff --git "a/C-\346\213\251\346\227\266\347\261\273/\347\211\271\345\276\201\345\210\206\345\270\203\345\273\272\346\250\241\346\213\251\346\227\266\347\263\273\345\210\227\344\271\213\344\272\214/scr/__pycache__/bt_func.cpython-38.pyc" "b/C-\346\213\251\346\227\266\347\261\273/\347\211\271\345\276\201\345\210\206\345\270\203\345\273\272\346\250\241\346\213\251\346\227\266\347\263\273\345\210\227\344\271\213\344\272\214/scr/__pycache__/bt_func.cpython-38.pyc" index fbab05398be2e264f7cc7c23669dffbf2a1e8e1b..880dd8483316648ee190be4e769fc420d10d8c41 100644 GIT binary patch literal 13443 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 GvHt<;_h<9~ delta 5988 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 Fe*n(CMMnSt diff --git "a/C-\346\213\251\346\227\266\347\261\273/\347\211\271\345\276\201\345\210\206\345\270\203\345\273\272\346\250\241\346\213\251\346\227\266\347\263\273\345\210\227\344\271\213\344\272\214/scr/__pycache__/plotting.cpython-38.pyc" "b/C-\346\213\251\346\227\266\347\261\273/\347\211\271\345\276\201\345\210\206\345\270\203\345\273\272\346\250\241\346\213\251\346\227\266\347\263\273\345\210\227\344\271\213\344\272\214/scr/__pycache__/plotting.cpython-38.pyc" index 23c248f75b6e7ffd7614248f8c86bb92b7fbc3ca..f67566bb3b10a7949aaba1013816fe26be2aa4c5 100644 GIT binary patch literal 22552 zcmd6Pdyrh!d1v3-x8FSv&5VR3UM++`V^0h8VQvE9|D&pq#Z?)Uz_b3fJ96%XL^(-*JIUGrcd@C#nFe^`4ne(ulg zKtKi30c9z>XqD`=T?(dyB`57zEDIJx>9G7q(oy-3mE!4yUzbdGNm+NgNB(=$E9Aeg z)Sn*k+pH|DN?+jTSEtvY-YKpvU6{U5%0k79N*AXumVCH)N$Jw`rIL>nQ>At3b;w6m ztaw>zeR{p*Xd3`{2Nv<2Y+wv>Mugq`6^`PoK5mYNw-@T#q z`_v~O@FgpjM-Pi#pI&zlpWdVl76vP+f!; z?^g$#EjHyh<+tMMN_8pfQ)(URhorV=e4D!Lgss-A%kOp4+tsJo3T<0+UV%BUR2$J_ zhq`0Qh^MFFlT1N2iO>M#*Z&q6{_BHBv@L!$4 zuewx^3gUb72}j0m+$DEro!WgOqHa-p?hU7JXq#uR`XKt=*jBPneF!BtwUvBWeFP;p zt53_Q8!^^LG3&?Ft+=n<>N8S`In>8dx?g<)rMIZyfxuw8_B>!czPnZ(tLR;+vD#>5 z+twY|q};K5c}p={9@@73=Fw8NP~4KMl;V4{)%>p1wyoQ?ZQgp#=B+zZLtA%ky>8dg z&iJiaxB5X(>B2;{P$}<9Eq?9g z`QtxYJpSVReSbQC|0@e$e?EQ|YYq$sJ!fwrSM{7*3vSg59jr|h^ZN%aFa9B2Q2Pp_ zHJ!&*lvf8P@;T&tK3*$U3utz0C6~ooQ4}@}&srSO^7=;e)r`{FqpEVWoT+AqiyWi7 zsL8 zvQm|;X1!3gP%Y-Yu+CR&x|{=nX?~)}#qisMpZh%|)xfx=KzdYg)}FC(W!G)x%vv+S zYOo$SX3aSDpbDw5il}JaQLz)@nGjkz^?-`6A%RM$r0SY={IYJ8^`NYGHt3hEK#AQ^ z(%0T^)R_sZ{<)AEIBCs9&?j6E)FW#GBUU|B57#ZV@`U|_{fGr1T2=cf7L4a~=GBw) zkN(-27auvic>2}FZ`_L~w)m%fdJA*+$Kxq{ZkIcECBNBxBwv~+ZsFF+g=cBc8XdGf zyEfrDd=jUubh4Dyhx653r3e`F!ntf&74rvA*=PGO_t`L#bI}c-*}S2&d4n1Zdm*OPpiK= zrt|JtrKnJmDOSp(ne16UGcTgD?wG1n0fHe}kQbWBmh(j~RxFhBX6B@sGgBz5{N!|G z{q~*LUOk)}wDo$7pfBezeH{~ECSCQGnRIx1ZDk@~-ZWMi9otl_9Nm;FR^0q1GyXYi z6E-T6RcfMGsp@WwI~ehTrHK)5MJan2Fxb9r-KJ<_Bx4pCEauA|b{6gY5wLL+#R8Cu z!wp7t7gx(sJ-d|iEZ1{n1H-vW8Jnr!$C@Da;8Z~GME+MfB>7#3ey5@jADGDI@`pZI z%a#H5*=pfPesi{*El#-w_t2ir3lE)Ic;W|(fAaF7#Rp%S|It134}59<#bfg?pI&(8 zq+bWndEkjNFFkbT^uvch5Dsxk)k1l6%fyt|%?oaBK`{9;OzUn#5{PzNNh@kcEjwVp z9S#myamhKhV}%1Ob8IPL?sX>?xAb-BMTnWug&bhTEsSE7Uic^muN?J4!VUPt{$#T*UXP7Cs#mSRn0=~$79veOE+qpfS?QNV=OQNq7VjylR;deSEwl;)-&fbx zfLs#aU;eX&xgP@G4dSmlG<1(SJ8jrF&z$qBL=}D-}}1sUJS24$mGLF(BCc|ZLLL< zeSD6!A477^-n?1&A_MY2Jm{dQYiOqI%N|yQMs*&9%PtOU?g#ELJm!+x492|RM6v3H zL7Tw-HF496xV2&4nI4iWT`7V}k9wi(#6)q*3m5aF`LgnQ{8la~;dsrh4kq+2w3mmX zuV?NCCPE5>7~Zo-T`!oO9AdIfe}a{_Ga(rS2z;D**>l+t+>6` zT5EUPy}>AGR$Qo8`txWz81h0`ab?tV@{^TOLz-lBggy~E8XxAl2i!IH zAQH$7*5Rn`CDfb@%mnMfImi_!iP^z%$Q9u0LbZe<1m_$TGIfvx!hS1}I9hZF^dOO4 zjmMC2Yb7w7smyYyFYE2Z>+=zZG=g{ZUfPKymD&iAY*VTtl47<9Ebka}OKNX^Bny$x zO;szYE3e$rqz&20)W!x1zt{fzE9Lx_{|j=k|7;u^?}ctD)_m+e zVc}~(SUmpa#YgT>2agmc1)%kQ=`mc)<_@2-^=-Hk6c~)?Pq8LAn#+1I7ow^!P>w+Y z-ln`bi>8EVnEa&4N3xS+luQO4o#j}=ObE$_)(~P_*ytq$RLziMsB(#nfu1NJFb+5b zOj^CRuCP-M$zXWNphV9~ZNiLw9?K*+l7$LL&LIO9*A9|S)dnD1091;;V4xQeOapTe zcTa-Z0cb;YXD;jmZD>5w5Q1le5Q#%`V3BASI~hPt+!un$FrD%ETtamV5If_^xvpxr ziXF3>*9q0*=X=N)RiCh32jJaby9D4p|NNH>ms@!F!J(}SC;t%aWAWvC$pv40WZ}g3 z7QXo%|4FvVz3&kf+PgPl^n6S(^EVs30}4RaKKtz_-yQZd6pJ$*ke{9G?DF2g9kRWw zXa7DB^{_yjD}2ri4rjGqh3A_N4~^{HIlP1V+F{64!Vm?V&k_zihmZ+|l2-@8{9F_n z=9h5u5Hi6Wr!rILB43!?wPo9enQ6&v9hotBGK$tR(a%X*x{lMm=mvt1B0%L`3qCkw9EPvj|O$1B=b3aWYSg(jtLMXQe75UQh& zaF8;R^Wa}ku!;mZ9h2EJ(Dw{}38o1@xWMNJ6pq1bo9&LFo4XoGpcg`{GhlTGiEe8_ z{CgqTcH5dQ&QjFXRU{Bx<-{@=*SF!7XhPujJC_wFVCj@7dh2|neS`}Ion2Q3zBlXA}&#f&@?MgKT)+Xxtl)wx}wzXv2m+jP!A?KfZX#Umv&YlD*KHYp+LWV$<9AdDD zap^?c0Q>esNV^|1=)0H@KRU37>+zzE1q~*>c)+71>e9zM~M(D`kJ6CER35${F1A|d7j;+d%R;UYt4dh24xF6wOx?V`b*iqH{Ffc3*G>n8{ zRJ*GN{TyODq)D)fucA_aoyikSmh8g-_n}(I9d@x#m6Ev+nAQU>C6E9_nYgWwBX@8x zq<^CyW4;UaUj*j05S#()+6RT(An#c??$m z3#j^sKn6kb?t>u!{bN_TSEv%ZQs?Uu9gQhVy*sUJ3?M`97r9B_1dtLUcJ^(2 z^n-*^C$C0nkq%{xFjMI-vq>+LDJDcveG8JaX(VU{`bEoIrK~4WP@}z|scvlCF!(DL zG`RrGZ@v)aMH|Yn!N4$hWqCBOx1hP;j299*t~CopoT4P;>l}h~`uA9MHxrS$ip-Ue zfZP$=^a&;{>^g)?FIZ5M>6lxD9WEnTgTD|YmtyytrjFv9DKbY3)v-*jR$5OK7fRO? zwR>&H?t|Erbh<6r|Lg$^0+k3-)M7vYo-r#T0q&&!6sEcx?85M8L!3#M+tw{qfwExZ zvjQ2abwU{5KnCKEbvV{gxyx}-2O~VutPcG~gNH(>xe!mPVA-ERB;| zP(y-f<$w-^W)gKL8JI~{!}UZxsbclmF$d-*e&&_}TvH3^7HUHg*IA*&+gCwYB z(r9Ue98q+@4w7@e?b6ViLHjJVG)r9KWlEVW_F_K{RPb)c%YH1daQx>|v6pmBZRaQ>*| z&yv7-p`&AkY92~tYy^fr-|LbsPK;$?^2;hOSglOJS{S8EPFxhu@Ni|)i;3$F5K;10 z9LZ}Clx$IGX9?C({cYZxCA!+^cKQ6`CMvQ=jWw~aX>J+Occ7`UCnn%3fw9Zj6e%hR z6*2N%(5*uA=6W&(A)-_{Eoi zQLjDwyuqkW($w;5G$oj&hR7y?X>39#N$N0KHrqD0>D?Mj>)Va4-@md#2;kP%s+9j2)vP}>lgrmSR~HOg888DJdd^^?>D zV1yTlrN&^3#t^E8p)fhhISJ=sJq-7o@92k(GXgk;=CCGkVPHH)=^kT=TM&>OQArx^ ztB~;NxDzu;SM4t_F(ml;`|kz^dF|vgi;pY|$L4lY8x8OPgy)YxweYVVT73Dd3s0SB zLS+lujrPlS-#R^i|Cg3{@>=YuWr=7qrcTyK!~F7a+>na77Gq~LEQv}VHT&^Op)3-z z5tzv*M8;kG{^N^Z|Bks~5FmlF^{CW*5Mo>xDY?dHV^$BizKwOQR=aUI*d?02ei(T# zCeG_=7>v9`hOsLK?Ytxv&4y!Je~V4+{DhZ)EZVTb8P8J?rb8`oO(VWebAqV;&&&%n z6NWqoLW`S@3yVT`x0+6vyzx#4G3v5L`#u5cY?0b@b*z*rXOBEgxF&B8bg#1eXh5`u zpj-BvVJB+qpP&X>K2T0fh3D(|L}dE^1$=L_4fw)7XHiA16LjG_8W#l@dOjmWAd*t( zBzdkzg*ZdSofUDg8XJ!{ekyzd#`?7fVGiC_)=j7;IoGxUC=71|);Me1Wx4+UB3A6b z7oEx97paT!y#&UAOI2zX7FCddRtu^I7pZmlvc+Y~w1_|f zxd!roz%@#e6+4{1!k-A2$dN-cfMQQ`S9PNr`TWfp`!}Qc3)`~#96G62JkbuxT z^?roetyDv^A+>Eb#Fc@`Zm<0j;LGqa?3I4ee_ZyYm?{T=IMZj%#)fD^bHwh4e>o zSDrps&*py)t&b;ynK417Q&-gshALf~>3$WQL&)kpGsf4Ia^HwDQ6Qw_Gb0arqi9^;ssJGOqqxwregA za%?=H&!Fu8X@328oayi1VY;6-r-KZE>E_w)n@IK@L=;#aLPzfEMO@x?8&Y84MD{z6pNzbq$3r?H595-j0Ks3O(IVCgRw(Z$1vRRPPH?4wTwHga#wp1 zUo1m}S|MA4_Y9DkyKb8r8j-M*v~ycNd-zmL{|#mrAk{xd&g(MWGVWAqxKd0ba15b# zIwMmVP0K{z>5N%aM*~@lmuL)u@H+hq42nfUtfQ#<+;b`>V{A%N&NB{Nzy6IF^JOFjf3lAeotWsLM{l!b}``b_c@+R2iq3Y%JsgReTskv+{VqRnlrhLTQ znJtJ+`d36i;eLvh~kEsuSHBqMN{b0f6e5-G9kl< z>;RP!5+~xzA_t5_?S-oqq7VWc5yWcjY;jU7h9zFJLsJ*>!b(>r%2`C?6%f!PP#gtDN1(aCey(mqjWidx|9-*^cwFyp{ z0c=%j)xnkezq9`#c8K`&RezUPT}nL0h*_9G>`c15Gej2A41l$CH^!9bn&F^sx~F+< ztomt0C1nr$l?loF6-oR9MEt5Q|Ef`$71(H0`d5Bs3}#kj_(CPNqHj2FJ5eaSmh)yfGQfyJD#TEb zlTeep;a}-SKKyprW}cA~4s4P5M-G-qyD<*NdOaF5V{%;k^)N=2oJr5c?t)OdBSfDMW}gA6V1ZGVH@=JKfYy<%w5s{Eu^Em!I2uP86 z`l*6-%p*1aJOg4nKucb?%`@;$^Nhz}dVstqZW$ZWaF~)GWWBXKDxof(4MUc?6u%33 zG~z^1T_#aji0d0%UnA~AiCaAWz?svJQX3K>rPC78_K3u0(4-Vlye7)U4e(~nKmRDa zrX51idodeKJM1rPiows-Jg5ajHb!83D;M=YVsX>mdl;6S+MK#gS4IleX?+{4dGtM` zKB9J|Hhdw6pt?#4owJC-oVk8j-}u4FLN(Q-OKdYK<+qh@UD9Fb&Rtus8Iek(buFpi zhI&MYz}Ktu+39XQI=pe{+M!L`hc*peJ2;Bf@pH4uJaG5T#x-n0v0+#wGX<9@=v*;> zmNF9T3p?-!69TxI(D(JcjPMdSEutJGEyFFP6p{YuMBX9n#4uR0LAY?6_nqz%hEdH! zuO<2UOVm#%8{2kk#dXcnw_m#n=Poww*f9v^fJk#lIKrkSx*TNC9n-M72Xv4L^! z!+ZcEhwwF>VAnVks;CHz>|$Q{oba1&UiL6aaHbW=!2mgo@W@gY7FhB=2|v?xzryHr z8JjYuN;pm0$-=#zc82NX?v&qrifrH-fc7znitZONMB2 ze?G4bT)=1*Mh)xKpM+u=^zDebk@DZFc?r&Xk!l4fSfS*Y-!^>B@Q`R+`+Swl zpov52+2Cj#hboSm0AKw-aDV!3B35}bW5DoNOOo&hV{VXFg zXlT=cW$_NGJ5i;HAUesGY4jdUwgf>C7{FEFzIzgaV4# zlMUfSq%uLDr6^;pn>e!IOVE!KXZB$+fi7BrfG>#kF!BfBn{rIJaqY`Bk#2ZO1?rc| z1HTD(>0MX~Y-(JV7aPt)gr?+gL;_6J{E&_&@e_3T56BpFfYHe0j9nkhA7LV538ftr z=8PcBNDvi-$yzWSNE`*(un*!(+dv#ZD;S%A2C(bu z0II-_+CUW54^$aYz3AZ^XAlj#2FS8j%oaQ~cVX>n>;l>xeb4Ji90?tb}! zq*U*~&H)3nTXVT=&S0B)h02sRL9N~8LZa5z${kB9_=m1fX=i$JpA}HHjpQOx9>D}jG zKulx7?CjaIq$jSWCquSZ2=D7_^@L@)-*7yjG-Pe8sv&I;K;90iOPUh)rL}u-YiCYB zz3}8$-__mM*r@X)><*-9V!$%~lBLE;ce6Ay=s~}kpn?|?!4Pn7!lwmQ49B9l4buQb z$U^xX6te^uCO7b3Q z4>8QpxRUjaxR+&7$(*qf!Pdv9{7f9dLJWBzz&%M5gDbm&fXN@NRZAKHten){3BGLc;PU6h3jWg5Qjc zk(b61GE4PgE+{0|qR$wLLx9IV5fqR3Qaan<77N#%V~}=eFQ?lJI~1&~#xN!{{EbZq#37a=Hw~1m7(a<0Tj;eb)d&Wk{d!w-2C*TX_vv`rk9@ zRNTbyet?+ATjIIf=^N-3C}spZiJW{YE!O~js5og|P}!+v9R_fek|^j85le)E1fg>4 zAzXT5HO)wbA_8mjRTLCPMxdx8QXAT)Y&Y32jqRg_vKK`7Fcs@5cgd=aE4Q(Xk8%05 z!Uo_vrQt4VPY=H5n?Mi+!jwIShqgU~#g={?`9V9~FAooKpI|_lBZ#xdYZuZ9DICV_9(INO0PKXfNN5QJ7t&a-R}Sd3 z+3C&DJqBD>a#eVafhC+Mo!BGq4{#Y^YJ|F`{elOQK%Tj@bketvV-kdJiEbupS%{ay*G6Hc2*qX`l1bRS_*6Z%Yf1i1i2!*1-kpW-sly3A*nWf2x9qpV;Uugl=mzw}qOFh`V>KAwf}|Z!jJ6@`t(}@jVU}&t^?cr~=rrUt@6*NdES>3RepR(jlB-8yL zH)AxQHic6ROCVQg@to2jY3Oqav0!_N2CHC6nWN3ks0v?m~DRCNnlF$)0`FI+K;6X2A02Q3Si7YXvVwI%ju#>`AF5jyX88!jvrmdUUWM;&3j?W0!aV2?zj6V-4*=B|*-4MgYzXDlzN5Lz~!V6^(KF91qMX7HGsge~0zy5gU$$q-OQ zLYcmFFGUCc;9aURlJcK&16-GY>U8h^T4@+DOpTVV5L^hYBIqoku;Wmafvp_W?l&cY^m!RXJvJ*t8VBb+38Cb~(HJ4JZU9I;snri>T=31M_2 zCJ%JMnN24*TrLzRqHoa=({z)-nT+p0g%kP+myT#6Q0%zyWW*;ztM5>EIUd2cDS3?J zq7H=+_N73Ewk7yaW&p-C7>_&nAxsu^5d~^V+Bs^&qbh;2vo?>#NNrTSu8mrRe)D}g z@Rv9|9tUJdg4)9HOscxyb8xnD3b76_XuI^#$y-^zj%64J+q1}>rA-?wZaqusB*eoa z@A3n4Oteg#9taaFV*)}Qo=P~&I|CCFR#)dkV6dqEUG9yIH<&Os2q(^SFvhsLz|y!; zbwb=MM4duA1=o}PYh$0GgM3Sw5l)3dSqEhb%yg8KOd?4q%;Rp-)$!2_9Vlr=#8{5>piawz5{?{aE~83sd3+fifQNj8$e$0Ix3D>$lunMaTe; zq?ddBF%F^xI`9`QfJm?k=2{QpWR<*6Ldl7MfdG!JM`o?Mlfg;M@et|RECks*??x0H zP6Qy*8b{SBr~*Wiuwg_<rwQ%fPL<|7b0|mp#XA%%J!qTow+VXaVu!$gKN!ugTx6|WBfc_(Kr#! zXqPiD&c1f+mHEdW#%qw^;$J*qyMOriByV zLNH;dm_L#)9t5~Qh(`sT8PP~J308dRh53gcZ@Lt~ggvWLy8HjvCvfa#K3LG)mC861xyvxLAKmF*!A3R$lzAYVFY8IaR z+TtVkZ}bP2@bCGy3PW*e*BI>9v-s1rbC_2}+`$~RG;=`v7#3h6wPR&a^b8SE-teHQ zl9@v~4jqc3q7TOO{p`?$bEEmKVAEeP5#;+Ea~UQ}sOzO71OQ#KCD$Mw6<>(+g=smk zxdx=ry#^fvb}wEF)C(5?-Ukun%ga{T131*k;6el#1yMr-rhk=$m4abL`Z27H3Nr?1 z{MmA~9~;k7u@Lj(US3ek+cy|I=r;+O^IxoL6m^be?H}CZMKT#x$z?JKWt(DHn5I5t z)NK-SFNQ#eDOiuQMWY4a(1@IODi((MhPoo(P}eBHJKeY=UfBH014_ryXrxek2ffb_Y2`vp&a4&B7A)c-z-MozB#4#=gj?>$xoQ9BM38;LHxSn5)wPM7zIS* z5gAh$xDa^(tTtd4u)Y>U;e}#|l&KZ-G|vazKStspGLFC~<}>+cj%RG}g>@r|h`G2E zcpJPV;Jlqo1>Rtcng|U6=Z)kh5WhD~i4$<%OkRv@tJMZ&ZzM~ps|KQ%Ty@12tJenJ zBA3EQZzb3D{a)bGzK`{7LkW(gC2wAJt&D2f=O9oUAsQ|1bICjUHuSCUyKL1({|Cs) B4*&oF delta 8802 zcma)BdvH|OdB6AW-S<;M=!HN+AfXjVMu3HR7>p4Z8w`Gc3DUvy1~Ew|gX4Ngsb5JPH=X{`Oyk&nBx!Ey1lKmUW;{*PjANT=On=|G ztA~NkWOw%4bH4MP@0|0U?|hGQo;)Z2^sDm91JP(m!sn)@*M{p%NqUhN7M}95M%Dy^KDK?104!!GTEL=}EdoV98=9q9SsS1Y{TH(( zXuS??D`whR`za6WU`tP`+G@7L@Cdv+}p^K*cxC5S%k%y2j8`)RKc4jxqbw* zUx{xATX)LOu4jWMecBE423pT%*~E4Vwmsl=BZl3=wqjwM zndfdPd5fL!JQ`i!H!#q#X7$F^8#WHCvA^M2(WW};P&REj>Yl7=Io|!{QqFL^2MXC@ zVXysPo=2;y<1O)Q+HgYI0?QWCx>e+k*UDO;^Kru}^FrD)Pr3al`|#UN`u!IGmNX_q z5tT`K!ec2|y?R2KP%UZ7Q&E|h`5smPy$>s-NoV8_~gIOe^7UX!mPjj0tc^H&rW znDod}#XIFaBjH~L-p7JaS%rmJM6~(bHVp4$Q5Kt&L8n3z@$x5_)y1ht-+St$eRpv4 zkXwA`yDwgx`riA`pL_R^az>UTVnlp8$4^6t56!!Eqy1~^Tz%5%ZY9F zUv_oa55(%LXO-!C3^5%5I4e8;k!;4y9yg{*Oq|aC-f0EU2{4@>&TxG^>2VbOnBz?s zb4AYM)aKy^bG#XD7zM{?W-|pnchfJT7{WJdmh`ld^gEtX&VDD{ zDR<0vB5DHweppD2cc7LG@=j`5Mu4=IFDK9i;P`nlr{}VT zjN{cyrQA60rlu7D$?%*g_;rL`O+c)xhe}BTy#!Vg*h1hY0wi^aVH1_t6X>(8$nJJJ zD@m{8H6YZCqZ-GG8JC;b@5K3EM*dM=v>8MYcur3r28*rKn=~Qm=biQsVq4pX2(yEL zn26{~J`MC)IZXU^hQYPr6ow>}w-F7=K@`l41!pGsP}Co?)GzRk+Y?5|-v0 z7+Jr5cpcPNJq(553yD2VYT66nsF0q)7ooU6>EWN7X>`J-kuDaX{Nt(dOa6zBZR}su zHQ^Rkk4(6`bDJb>fM&Z(Ot`zWo0uvk=BN**%a-F8Gaepy)V!e=_#Wa(s8cam%NX;q_^jCt&tl`O3Y%QB#u0ZAVpA){XG@9MQr#J8 zM7>X)h)%>N;uDEVWUQVd0ajm$R$`TSB{8BlO62=#UtfdmJveroj)ex$SSQ}eh39}`WDv^#gPBpQ1K^z`yo@%jLAxe3+-o!dYIRchT zsbno0YjY=FiLg%MiY-~p;PS~Iz|}0Nctj5$JVRHxAA9!RSL~yUciNTc^7&g&^+;{^ zJ9@GO%YMAGMb(cPrX7flY2tv?tlYFPeg~lkt{FUp(q5P@P-jh{R9c{59J5IErpdPL zfE{G_YztV+()JR0m=~om$Az%DGQ3sTJd>%E9UJxT6Mik zyEukUz$_1wb1{X*bV8-Hl}eB5g$x1*b2K}GU?Q6kunfD_gkOVwCA9@D}xKV0TuW*)Zl9SzmF^UbJ_L12VHh5&^f=v6SCz$hXa znxC-MG~1GhR+4qDzsVB$7=c-XOpOQp;CIcx8D^dlMmC*ZGnFn@l6MiREgH87|;bu_)yJm!UGfHrATQldc)c|x*! z*+)N5J-o3h`y@q^l*_8DTn?bBTvn*$i7Ab8BZxy1exF8EpA5Vlx~$NL%D-2=p#IPo z3&}CL9(%0DE}fLMNFG6rVTn-2bo?eZ-!k|#?b#*y^Ki_n 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 MslVO+;9&3n0U0!`+W-In diff --git "a/C-\346\213\251\346\227\266\347\261\273/\347\211\271\345\276\201\345\210\206\345\270\203\345\273\272\346\250\241\346\213\251\346\227\266\347\263\273\345\210\227\344\271\213\344\272\214/scr/__pycache__/timeseries.cpython-38.pyc" "b/C-\346\213\251\346\227\266\347\261\273/\347\211\271\345\276\201\345\210\206\345\270\203\345\273\272\346\250\241\346\213\251\346\227\266\347\263\273\345\210\227\344\271\213\344\272\214/scr/__pycache__/timeseries.cpython-38.pyc" index c7e920a1024194d0fdeeca2b237cd8d27c37f565..564f7c3223c16f8df1e4245929920b6da7dfb990 100644 GIT binary patch delta 45 zcmbO%KVP0Fl$V!_0SNBxP*2{-)6K$|I(Y_*7tiy}yPtMUf3mat$*!Kwk61Qx0RT^f B5=;O9 delta 32 mcmbO)KUtn9l$V!_0SFw#&n9i;>1JV!oIHcYYx6snja&eJqzL-} diff --git "a/C-\346\213\251\346\227\266\347\261\273/\347\211\271\345\276\201\345\210\206\345\270\203\345\273\272\346\250\241\346\213\251\346\227\266\347\263\273\345\210\227\344\271\213\344\272\214/scr/__pycache__/utils.cpython-38.pyc" "b/C-\346\213\251\346\227\266\347\261\273/\347\211\271\345\276\201\345\210\206\345\270\203\345\273\272\346\250\241\346\213\251\346\227\266\347\263\273\345\210\227\344\271\213\344\272\214/scr/__pycache__/utils.cpython-38.pyc" index 5f0c9fb8a5864a6b67a13c03e5ef9fc51051a9ec..2e7db7748d4f85fec88115f25c551ceaea373463 100644 GIT binary patch delta 579 zcmXX?U279j5WO>Z+uf$S>E;t#irDy-P=vJlVnGm8L>~%LLL^DCn%TC9d@z0vMZp5SoF|2zB?0)I`H+%iw z!C<@jtMx2=vt4ml|ETq(qWK&Tc-37B_@e6t8KUA7r@G=6%X0a#TlAzOT#^^ zuB7w4oF-4v$3S!BVl9A5z@=N0V`|_L*(%EtT_e;?B1Uf6-~Z delta 265 zcmaDZJWr4>l$V!_0SFw#&nCsPPvnzfoG?+_K~f-?kb=|7JM0PYzw1^@s6 diff --git "a/C-\346\213\251\346\227\266\347\261\273/\347\211\271\345\276\201\345\210\206\345\270\203\345\273\272\346\250\241\346\213\251\346\227\266\347\263\273\345\210\227\344\271\213\344\272\214/\347\211\271\345\276\201\345\210\206\345\270\203\345\273\272\346\250\241\346\213\251\346\227\266\347\263\273\345\210\227\344\271\213\344\272\214.ipynb" "b/C-\346\213\251\346\227\266\347\261\273/\347\211\271\345\276\201\345\210\206\345\270\203\345\273\272\346\250\241\346\213\251\346\227\266\347\263\273\345\210\227\344\271\213\344\272\214/\347\211\271\345\276\201\345\210\206\345\270\203\345\273\272\346\250\241\346\213\251\346\227\266\347\263\273\345\210\227\344\271\213\344\272\214.ipynb" index 5c9ae0d..5e6a815 100644 --- "a/C-\346\213\251\346\227\266\347\261\273/\347\211\271\345\276\201\345\210\206\345\270\203\345\273\272\346\250\241\346\213\251\346\227\266\347\263\273\345\210\227\344\271\213\344\272\214/\347\211\271\345\276\201\345\210\206\345\270\203\345\273\272\346\250\241\346\213\251\346\227\266\347\263\273\345\210\227\344\271\213\344\272\214.ipynb" +++ "b/C-\346\213\251\346\227\266\347\261\273/\347\211\271\345\276\201\345\210\206\345\270\203\345\273\272\346\250\241\346\213\251\346\227\266\347\263\273\345\210\227\344\271\213\344\272\214/\347\211\271\345\276\201\345\210\206\345\270\203\345\273\272\346\250\241\346\213\251\346\227\266\347\263\273\345\210\227\344\271\213\344\272\214.ipynb" @@ -2,9 +2,20 @@ "cells": [ { "cell_type": "code", - "execution_count": 5, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:7: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\n", + " from pandas import (to_datetime, Int64Index, DatetimeIndex, Period,\n", + "d:\\anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:7: FutureWarning: pandas.Float64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\n", + " from pandas import (to_datetime, Int64Index, DatetimeIndex, Period,\n" + ] + } + ], "source": [ "from typing import Dict, List, Union\n", "\n", @@ -12,8 +23,6 @@ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", - "\n", - "\n", "from alphalens.tears import GridFigure\n", "from scr import create_signal\n", "from scr.bt_func import (\n", @@ -29,7 +38,7 @@ " plot_indicator,\n", " plot_params_table_visualization,\n", ")\n", - "from skopt import gp_minimize\n" + "from skopt import gp_minimize" ] }, { @@ -57,7 +66,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -148,7 +157,7 @@ "2003-01-08 974.6976 947.0679 979.6497 941.1552 1.237519e+09 881001.WI" ] }, - "execution_count": 6, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -186,18 +195,31 @@ "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "GridSpec(1, 5)" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" + "name": "stderr", + "output_type": "stream", + "text": [ + "e:\\WorkSpace\\Quantitative-analysis\\C-择时类\\特征分布建模择时系列之二\\scr\\plotting.py:325: MatplotlibDeprecationWarning: Passing the minor parameter of set_ticks() positionally is deprecated since Matplotlib 3.2; the parameter will become keyword-only two minor releases later.\n", + " ax.set_xticks(idx, ticks_arr, rotation=90)\n" + ] + }, + { + "ename": "TypeError", + "evalue": "set_ticks() got an unexpected keyword argument 'rotation'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32me:\\WorkSpace\\Quantitative-analysis\\C-择时类\\特征分布建模择时系列之二\\特征分布建模择时系列之二.ipynb Cell 7\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 3\u001b[0m a \u001b[39m=\u001b[39m \u001b[39m3.4\u001b[39m\n\u001b[0;32m 4\u001b[0m df \u001b[39m=\u001b[39m create_signal(\n\u001b[0;32m 5\u001b[0m data\u001b[39m.\u001b[39mquery(\u001b[39m'\u001b[39m\u001b[39mcode==\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m881001.WI\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m'\u001b[39m),\n\u001b[0;32m 6\u001b[0m fast_window\u001b[39m=\u001b[39m\u001b[39m5\u001b[39m,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 11\u001b[0m a\u001b[39m=\u001b[39ma,\n\u001b[0;32m 12\u001b[0m )\n\u001b[1;32m---> 14\u001b[0m plot_distribution(df[\u001b[39m\"\u001b[39;49m\u001b[39mvolume_index\u001b[39;49m\u001b[39m\"\u001b[39;49m], df[\u001b[39m\"\u001b[39;49m\u001b[39mforward_returns\u001b[39;49m\u001b[39m\"\u001b[39;49m], \u001b[39m5\u001b[39;49m, \u001b[39m50\u001b[39;49m, \u001b[39mFalse\u001b[39;49;00m)\n", + "File \u001b[1;32me:\\WorkSpace\\Quantitative-analysis\\C-择时类\\特征分布建模择时系列之二\\scr\\plotting.py:356\u001b[0m, in \u001b[0;36mplot_distribution\u001b[1;34m(signal_ser, forward_ret_ser, forward_window, q, group, title, ax)\u001b[0m\n\u001b[0;32m 352\u001b[0m aggregation_frame \u001b[39m=\u001b[39m get_distribution_data(\n\u001b[0;32m 353\u001b[0m signal_ser, forward_ret_ser, q\u001b[39m=\u001b[39mq, window\u001b[39m=\u001b[39mforward_window, group\u001b[39m=\u001b[39mgroup)\n\u001b[0;32m 355\u001b[0m is_categories_index: \u001b[39mbool\u001b[39m \u001b[39m=\u001b[39m \u001b[39mnot\u001b[39;00m group\n\u001b[1;32m--> 356\u001b[0m ax1 \u001b[39m=\u001b[39m plot_hist_signal_with_cum(\n\u001b[0;32m 357\u001b[0m aggregation_frame, is_categories_index, \u001b[39m'\u001b[39;49m\u001b[39m信号期望与累计收益分布\u001b[39;49m\u001b[39m'\u001b[39;49m, ax1)\n\u001b[0;32m 359\u001b[0m avg, std, kur, skew \u001b[39m=\u001b[39m signal_ser\u001b[39m.\u001b[39mmean(), signal_ser\u001b[39m.\u001b[39mstd(\n\u001b[0;32m 360\u001b[0m ), signal_ser\u001b[39m.\u001b[39mkurt(), signal_ser\u001b[39m.\u001b[39mskew()\n\u001b[0;32m 362\u001b[0m ax2\u001b[39m.\u001b[39mtext(\u001b[39m0.65\u001b[39m, \u001b[39m0.95\u001b[39m, (\u001b[39m\"\u001b[39m\u001b[39m Mean \u001b[39m\u001b[39m%.3f\u001b[39;00m\u001b[39m \u001b[39m\u001b[39m\\n\u001b[39;00m\u001b[39m Std. \u001b[39m\u001b[39m%.3f\u001b[39;00m\u001b[39m \u001b[39m\u001b[39m\\n\u001b[39;00m\u001b[39m kurtosis \u001b[39m\u001b[39m%.3f\u001b[39;00m\u001b[39m \u001b[39m\u001b[39m\\n\u001b[39;00m\u001b[39m Skew \u001b[39m\u001b[39m%.3f\u001b[39;00m\u001b[39m\"\u001b[39m \u001b[39m%\u001b[39m (avg, std, kur, skew)), fontsize\u001b[39m=\u001b[39m\u001b[39m16\u001b[39m, bbox\u001b[39m=\u001b[39m{\n\u001b[0;32m 363\u001b[0m \u001b[39m'\u001b[39m\u001b[39mfacecolor\u001b[39m\u001b[39m'\u001b[39m: \u001b[39m'\u001b[39m\u001b[39mwhite\u001b[39m\u001b[39m'\u001b[39m, \u001b[39m'\u001b[39m\u001b[39malpha\u001b[39m\u001b[39m'\u001b[39m: \u001b[39m1\u001b[39m, \u001b[39m'\u001b[39m\u001b[39mpad\u001b[39m\u001b[39m'\u001b[39m: \u001b[39m5\u001b[39m}, transform\u001b[39m=\u001b[39max2\u001b[39m.\u001b[39mtransAxes, verticalalignment\u001b[39m=\u001b[39m\u001b[39m'\u001b[39m\u001b[39mtop\u001b[39m\u001b[39m'\u001b[39m)\n", + "File \u001b[1;32me:\\WorkSpace\\Quantitative-analysis\\C-择时类\\特征分布建模择时系列之二\\scr\\plotting.py:325\u001b[0m, in \u001b[0;36mplot_hist_signal_with_cum\u001b[1;34m(aggregation_frame, is_categories_index, title, ax)\u001b[0m\n\u001b[0;32m 323\u001b[0m ax\u001b[39m.\u001b[39mplot(slice_idx, aggregation_frame[\u001b[39m'\u001b[39m\u001b[39mroll_ret\u001b[39m\u001b[39m'\u001b[39m], color\u001b[39m=\u001b[39m\u001b[39m'\u001b[39m\u001b[39mr\u001b[39m\u001b[39m'\u001b[39m)\n\u001b[0;32m 324\u001b[0m ax\u001b[39m.\u001b[39maxhline(\u001b[39m0\u001b[39m, color\u001b[39m=\u001b[39m\u001b[39m'\u001b[39m\u001b[39mdarkgray\u001b[39m\u001b[39m'\u001b[39m)\n\u001b[1;32m--> 325\u001b[0m ax\u001b[39m.\u001b[39;49mset_xticks(idx, ticks_arr, rotation\u001b[39m=\u001b[39;49m\u001b[39m90\u001b[39;49m)\n\u001b[0;32m 326\u001b[0m ax\u001b[39m.\u001b[39myaxis\u001b[39m.\u001b[39mset_major_formatter(\u001b[39m'\u001b[39m\u001b[39m{x:.2%}\u001b[39;00m\u001b[39m'\u001b[39m)\n\u001b[0;32m 327\u001b[0m ax\u001b[39m.\u001b[39mset_title(title)\n", + "File \u001b[1;32md:\\anaconda3\\lib\\site-packages\\matplotlib\\axes\\_base.py:63\u001b[0m, in \u001b[0;36m_axis_method_wrapper.__set_name__..wrapper\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 62\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mwrapper\u001b[39m(\u001b[39mself\u001b[39m, \u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs):\n\u001b[1;32m---> 63\u001b[0m \u001b[39mreturn\u001b[39;00m get_method(\u001b[39mself\u001b[39;49m)(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n", + "File \u001b[1;32md:\\anaconda3\\lib\\site-packages\\matplotlib\\cbook\\deprecation.py:451\u001b[0m, in \u001b[0;36m_make_keyword_only..wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 445\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mlen\u001b[39m(args) \u001b[39m>\u001b[39m idx:\n\u001b[0;32m 446\u001b[0m warn_deprecated(\n\u001b[0;32m 447\u001b[0m since, message\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mPassing the \u001b[39m\u001b[39m%(name)s\u001b[39;00m\u001b[39m \u001b[39m\u001b[39m%(obj_type)s\u001b[39;00m\u001b[39m \u001b[39m\u001b[39m\"\u001b[39m\n\u001b[0;32m 448\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mpositionally is deprecated since Matplotlib \u001b[39m\u001b[39m%(since)s\u001b[39;00m\u001b[39m; the \u001b[39m\u001b[39m\"\u001b[39m\n\u001b[0;32m 449\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mparameter will become keyword-only \u001b[39m\u001b[39m%(removal)s\u001b[39;00m\u001b[39m.\u001b[39m\u001b[39m\"\u001b[39m,\n\u001b[0;32m 450\u001b[0m name\u001b[39m=\u001b[39mname, obj_type\u001b[39m=\u001b[39m\u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mparameter of \u001b[39m\u001b[39m{\u001b[39;00mfunc\u001b[39m.\u001b[39m\u001b[39m__name__\u001b[39m\u001b[39m}\u001b[39;00m\u001b[39m()\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[1;32m--> 451\u001b[0m \u001b[39mreturn\u001b[39;00m func(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n", + "\u001b[1;31mTypeError\u001b[0m: set_ticks() got an unexpected keyword argument 'rotation'" + ] }, { "data": { - "image/png": "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fpz77ruPIkWKcOGFFzJjxowUj121ahU5c+Y8q4twbGws3bt3p3v37kybNi3dMWQnqjAUERERkdB29CiMHQtt2kDJkqkfawyUK+cezZufGd+71y1jXrwYfvwRPv8cRo1yrxUsCPXquQrEyy93jxIlAnY7IiIigbJ27dr4r9evX+9hJMn78ccfuf/++6lfv366z33wwQeZNGkSw4YN48CBA7Rr144VK1ZQtWrVRMedPn2amJgYTp06lWj8vffeY+DAgdx9993s27ePVq1aMXbsWLp3756pe8qqlDAUERERkdD2+ecu4derV8bnKFIEbrrJPcBVFW7a5JKHcUnEF1+EuH9cPPggvPVW5mMXEREJoriE4bZt2zh48OA5jg6uefPm0bp167MSfGmxY8cORo8ezbhx4+jatSsAK1as4LXXXmPkyJGJjh02bBgbNmxINHbo0CH69evH5MmTuf766wHIkSMHo0aNUsIwBVqSLCIiIiKhbfhw1+gkA8uXUpQjB1StCt27w3vvwfLlbk/EhQvhlVfOJBZFRETCxGWXXca2bds4cuQIa9eupV69el6HlMiCBQsYN24crVq1Sve53333HREREbRp0yZ+rEWLFsyZMyfRcTt37mTQoEEMHTo00fjx48cZNmxYfLIQoHTp0hw/fjzdsWQXShiKiIiISOhaswZ++MHtU2hMYK+VLx9cdRU8/jg0axbYa4nIWdauWU3L23omevR6uI/XYYmEjQIFCnDBBRewfv161q5dyyWXXJLo9UOHDnHPPfdQuHBhSpUqxaOPPsqJEyfiX9+5cyetW7fm/PPPp1SpUjzyyCOc9u3zu3XrVowxrFq1inbt2lGgQAEuuugiFi1alOb4Bg8enKFkIcCuXbuIiooib9688WPlypVj27ZtiZYe9+7dm5tvvpnmCbclAYoVK5aoknDPnj3873//y3A82YGWJIuIiIhI6BoxAiIj4fbbvY5ERALshI1Q52SRTLr44otZu3Yta9eupWbNmoleu+eee1i5ciUff/wxR48e5b777iN37ty8+OKLAHTt2pV//vmHKVOmsH//fmJiYqhZsyY9evSIn6Nbt240btyY2NhY+vbty3333cfKlSvTFFuOHBmvWTt27BiFChVKNJY3b15OnTrF/v37KVq0KF9++SULFizg559/5t9//01xrvvuu4+JEydy9dVX88QT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5JNPMnbsWG644QZWr14dv2Q5zty5c2nYsGGG7iG7UcJQREREJKsJxP6FCT30EGzeDF9/nbl5Ro923Zzvucc/cYmIiGRThQoVYvbs2Zw+fZo2bdrQv39/unfvzksvvZTouB49etChQwc6d+5M8+bNWbZsGeCWMM+cOZNt27bRokULVqxYQUySZmQtW7Zk5MiRGY6xT58+jB49mm3btlG+fHn+7//+j+jo6DTNX6RIEWbOnMnhw4dp1aoVo0aN4uOPP6Zly5YAtGjRgrfffpsPP/yQ++67jxMnTvD9999zww03xM9hrWXBggVqdpJGxlrrdQxBUbduXRv3H4KIiIhIlnbLLfDzz66bcSD895/bG7FaNfj224zN8ddfUKcO1KgBM2b4N75sxBiz3Fpb99xHSqDp3xspa3lbT/I36pFobOGwPlzd+5Vzjh1ZMJZp/xsR6BBFQooxhuySq5GM89fPSUrvJVRhKCIiIpKVnDwJ330H110XuGvkygX33QezZ8P69ek/f/JkuPRS+Ocf6NfP//GJiIiISKbk9DoAEREREfGjlStdB+NALUeOExMDzz4Lb7/tGpekxb598MADMH48XHYZjBsHF18c2DhFJGB6PdyHnXsSd0wvW6wgw998JYUzREQkXChhKCIiIpKVxO1f2LhxYK9TrBh07eqSfkOHQuHCqR8/axbceSf8+ScMGQIDBrhKRREJWzv3HDxrqfHOBWM9iUVERPxLS5JFREREspJ589zegqVKBf5aDz4IR4+65iUpOXIE7r8fbrwRChaExYvhqaeULBQREREJYUoYioiIiGQV//0HCxcGfjlynBo1XCXjsGFu78SkfvgBatWC99+HRx+F5cuhrvpziIiI+NvWrVsxxrB161avQ8m0xo0bM2TIEL/Pu3LlSq644gry589PuXLlGDx4MKdPn073PB9++CGNU1nJkdzrY8eOxRiT7GPs2LHpjiEYlDAUERERySqWLnUVfYFseJLUgw/C9u0wdeqZsePHoX9/uPpql0icNw9eew3y5g1eXCIiIuJ38+fPD3iCa8SIEcTExPh1zn///Zc2bdpQp04dZsyYwYABA3j99dd566230jXPjz/+yP3335/u11u2bMnSpUsTPSZPnowxhpo1a6b7foJBexiKiIiIZBVx+xdec03wrnnLLVCxIrz1FrRpA6tXQ7du7vnuu+H1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nksvdQm055+Hbt2gadNzn/Pll3D6dHCWIwPkzAn16rmEYWa8/DJERsLDD/slLPGjvHm9jkBEREREsrC0NkwREckILUmWrGnQINeJuFcvt1z3XKZMgYoVoVatQEd2RoMGsGpV2uJLzo4dMG4c3HknlCzp19BEREREREREJPtShaFkTXnywIgRcN118Oyz8MILKR974AB8+y08+GBwG4Y0bAgnT8Ly5Rnb4+71111VZJ8+/o9NRERERMJWr4f7sHPPwURj6zZspH4jjwISEZGwo4ShZF3XXgt33AGvvOK6CNeokfxxX30F//0HbdoEN74GDdzzokXpTxju2eMSol26uMpIERERERGfnXsOnrVU9fhqfcgsIiJpp4ShZG2vvOISgjEx8P33rglFUlOmQJkyZxJ4wVKiBERFZaxT8jvvwL//ur0aRUREREQky0iumYkqREUk2JQwlKytaFF4803o2hXefx969078+pEjMGOG2wcwhwdbejZsCHPngrVpXw596JBLGLZuDZdcEtDwREREREQkuJJrZqIKUREJtrBvemKMKWmMyeV1HBLCOneGG2+E/v3h998Tv/bNN67pSLCXI8dp2BD++OPsuFIzYgTs2+fuR0RERERERETEz4KSMDTGnG+MmWGMmWWM+cIYkzuVY8cYYxYZYwalNGaM6W2MWWqMyQ/caK39Lwi3IeHKGFddeOqUqzC09sxrU6a4KsRGHtX3J9zHMC2OH3fNTq67DurXD1xcIiIiIiIiIpJtBavCsCvwurX2BuBP4KbkDjLGtAEirLUNgShjTJXkxoBawGigHnAkGDcgYa5SJXjmGZg6Fb74wo0dP+72N2zdGnJ6tDq/Rg3ImzftCcOPPnIViQMGBDYuEREREREREcm2gpIwtNa+Z6391vdtceDvFA5tDEzyfT0LuCqFMQPkAm4AZqR0XWNMjDFmmTFm2e7duzNzC5IVPPww1KrlqgwPHIDZs+HgQe+WIwPkygX16qWt8cnJk/DSS+74664LfGwiIiIiIiIiki0FJGFojBlhjJmf4PGkb7whUNham1J2JD+w0/f1XqBkCmOzgBbADmCqMeba5Caz1o601ta11tYtXry4X+5NwljOnDByJPz1l9v/b8oUKFgQmjTxNq4GDWDFCjh2LPXjPvsMtmxxsae1QYqIiIiIiIiISDoFZB2mtbZn0jFjTBHg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", + "image/png": "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AO+/P+y0U37nCAGuvDIFiT/7WWoccuCBy46LET7+GCZOXPTx3nvp8e2305ittsr/9yJJkiQ1M4aAarz990+btf/hD4aAktRc3XQTHH98fseecQbsvXf6T59ddindvni//nXq8nvppU07T+vWcNddsPPOcPjhcMMNaZlxbcg3cSK8/z589dWiY1q1SkuIq6vh4INhxx2hS5em1SFJkiQ1I4aAarw2beDkk9OSq/HjYfPNs65IkrS4995L+7YOGJA6u7drl7rl1n7U9+uZM+Hmm+G662C33WCTTdJ+sEceCR07Fq/mt96CG2+EE06ADTZo+vlWWCHNWO/XLzUKgdRkpKoqBX277JIeaz969Eivg1oM9/eTJElqHENA5efYY+H889OSqz/9KetqJEm1FiyAo49OgdbQobD22o07vnPn9O/7WWfBPfekWd+DB8PZZ6eZhSeemJbYFtqZZ6bg7vzzC3fO7t1h3Dh47bUU8q25Zn77DEqSJEllwO+ElZ8uXdLMirvuSns4SZKah8svh+eeS00xGhsALq59+xQmvvQSPPNMWh578cUpTDv8cHj++YKVzKhR8MADqStw9+6FOy/AyiunhlZrr20AKEmSpIrmd8PK389+ljaTv+GGrCuRJAG8+iqcdx4cdFAK6gohhBQA3ndfWmZ88snw8MOpc26/fnDvvfDNN/mff+FC+J//SfvxnXJKYWqWJEmStAyXAyt/G2wAe+4J11+flnG1b591RZJUuebNgx/8ALp2Tf8uF6OZR1UVXHFFauBx221pS4jDDkuz7I46KnWO32KLxl37rrvgxRfT0uVi7jmoZs39/SRJkorPELAI8vlGtsV+83vqqbD77jBsWPoBUJKUjV//Gl55JS2rLfSS2qWtuGKaEXjiifDII3DttXDZZWm5cM+eKQz83vdgq63qDwTnzElLgLfcsnAzFyVJkiTVyeXAaprddoONNkobx8eYdTWSVJlGj4ZLLoEf/Qj23bd0123dOl3vscfg44/hlltgww3Te8I228B668Hpp6c9ChcuXPb4K6+Ejz5K+xi6X58kSZJUVH7HraYJIe3h9NJL8K9/ZV2NJFWer75KDTzWWSeFb1lZdVU45pg0M/Djj+HPf4bNN0+zBPv3T/X97Gfwj3+kDsbTpsFFF6UQceDA7OqWJEmSKoQhoJruqKNSt+Asf/iUpEp11lnw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", "text/plain": [ "
" ] @@ -326,7 +348,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -366,44 +388,9 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 5, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "d:\\anaconda3\\lib\\site-packages\\skopt\\optimizer\\optimizer.py:449: UserWarning: The objective has been evaluated at this point before.\n", - " warnings.warn(\"The objective has been evaluated \"\n", - "d:\\anaconda3\\lib\\site-packages\\skopt\\optimizer\\optimizer.py:449: UserWarning: The objective has been evaluated at this point before.\n", - " warnings.warn(\"The objective has been evaluated \"\n", - "d:\\anaconda3\\lib\\site-packages\\skopt\\optimizer\\optimizer.py:449: UserWarning: The objective has been evaluated at this point before.\n", - " warnings.warn(\"The objective has been evaluated \"\n", - "d:\\anaconda3\\lib\\site-packages\\skopt\\optimizer\\optimizer.py:449: UserWarning: The objective has been evaluated at this point before.\n", - " warnings.warn(\"The objective has been evaluated \"\n", - "d:\\anaconda3\\lib\\site-packages\\skopt\\optimizer\\optimizer.py:449: UserWarning: The objective has been evaluated at this point before.\n", - " warnings.warn(\"The objective has been evaluated \"\n", - "d:\\anaconda3\\lib\\site-packages\\skopt\\optimizer\\optimizer.py:449: UserWarning: The objective has been evaluated at this point before.\n", - " warnings.warn(\"The objective has been evaluated \"\n", - "d:\\anaconda3\\lib\\site-packages\\skopt\\optimizer\\optimizer.py:449: UserWarning: The objective has been evaluated at this point before.\n", - " warnings.warn(\"The objective has been evaluated \"\n", - "d:\\anaconda3\\lib\\site-packages\\skopt\\optimizer\\optimizer.py:449: UserWarning: The objective has been evaluated at this point before.\n", - " warnings.warn(\"The objective has been evaluated \"\n", - "d:\\anaconda3\\lib\\site-packages\\skopt\\optimizer\\optimizer.py:449: UserWarning: The objective has been evaluated at this point before.\n", - " warnings.warn(\"The objective has been evaluated \"\n", - "d:\\anaconda3\\lib\\site-packages\\skopt\\optimizer\\optimizer.py:449: UserWarning: The objective has been evaluated at this point before.\n", - " warnings.warn(\"The objective has been evaluated \"\n", - "d:\\anaconda3\\lib\\site-packages\\skopt\\optimizer\\optimizer.py:449: UserWarning: The objective has been evaluated at this point before.\n", - " warnings.warn(\"The objective has been evaluated \"\n", - "d:\\anaconda3\\lib\\site-packages\\skopt\\optimizer\\optimizer.py:449: UserWarning: The objective has been evaluated at this point before.\n", - " warnings.warn(\"The objective has been evaluated \"\n", - "d:\\anaconda3\\lib\\site-packages\\skopt\\optimizer\\optimizer.py:449: UserWarning: The objective has been evaluated at this point before.\n", - " warnings.warn(\"The objective has been evaluated \"\n", - "d:\\anaconda3\\lib\\site-packages\\skopt\\optimizer\\optimizer.py:449: UserWarning: The objective has been evaluated at this point before.\n", - " warnings.warn(\"The objective has been evaluated \"\n" - ] - } - ], + "outputs": [], "source": [ "# 样本内使用opt寻找最优参数\n", "start_dt, end_dt = \"2004-01-01\", \"2019-12-31\"\n", @@ -418,14 +405,14 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "最优参数:{'a': 1.5, 'fast_window': 123, 'slow_window': 294}\n" + "最优参数:{'a': 3.5, 'fast_window': 5, 'slow_window': 78}\n" ] } ], @@ -454,13 +441,13 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "a3963442b7b84f52b607d8df71dcae1b", + "model_id": "6a80c85d5e3a454483118c0aef298521", "version_major": 2, "version_minor": 0 }, @@ -470,23 +457,24 @@ " 'font':…" ] }, + "execution_count": 7, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ - "analysis_rets(df[\"close\"], bt_result.result)\n" + "analysis_rets(df[\"close\"], bt_result.result)" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "86670899936f4a65a861ef6df8fc1bd8", + "model_id": "5b30a21eae7b48908cc19d2e718d34e5", "version_major": 2, "version_minor": 0 }, @@ -496,8 +484,9 @@ " 'font':…" ] }, + "execution_count": 8, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ @@ -1942,7 +1931,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.7" + "version": "3.8.8" }, "orig_nbformat": 4, "vscode": {