From 9c0cf096f822e96faa9863338db4c6b9d3f81940 Mon Sep 17 00:00:00 2001 From: zhaoli Date: Mon, 17 Aug 2026 05:46:09 +0000 Subject: [PATCH] finish experiment 20 (exp/20-improve-the-risk-limit-reference-signal) --- code/MANIFEST.txt | 14 +++----------- .../__pycache__/__init__.cpython-312.pyc | Bin 374 -> 0 bytes .../data/__pycache__/__init__.cpython-312.pyc | Bin 216 -> 0 bytes .../data/__pycache__/handler.cpython-312.pyc | Bin 10154 -> 0 bytes .../model/__pycache__/__init__.cpython-312.pyc | Bin 319 -> 0 bytes .../__pycache__/rank_ensemble.cpython-312.pyc | Bin 9461 -> 0 bytes .../model/__pycache__/rank_gbdt.cpython-312.pyc | Bin 9838 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 234 -> 0 bytes .../__pycache__/optimal_stop.cpython-312.pyc | Bin 10428 -> 0 bytes 9 files changed, 3 insertions(+), 11 deletions(-) delete mode 100644 code/tac-qlib/tac_qlib/contrib/__pycache__/__init__.cpython-312.pyc delete mode 100644 code/tac-qlib/tac_qlib/contrib/data/__pycache__/__init__.cpython-312.pyc delete mode 100644 code/tac-qlib/tac_qlib/contrib/data/__pycache__/handler.cpython-312.pyc delete mode 100644 code/tac-qlib/tac_qlib/contrib/model/__pycache__/__init__.cpython-312.pyc delete mode 100644 code/tac-qlib/tac_qlib/contrib/model/__pycache__/rank_ensemble.cpython-312.pyc delete mode 100644 code/tac-qlib/tac_qlib/contrib/model/__pycache__/rank_gbdt.cpython-312.pyc delete mode 100644 code/tac-qlib/tac_qlib/contrib/strategy/__pycache__/__init__.cpython-312.pyc delete mode 100644 code/tac-qlib/tac_qlib/contrib/strategy/__pycache__/optimal_stop.cpython-312.pyc diff --git a/code/MANIFEST.txt b/code/MANIFEST.txt index 8850ff0..dd7d5b2 100644 --- a/code/MANIFEST.txt +++ b/code/MANIFEST.txt @@ -1,25 +1,17 @@ # TradeAC custom-qlib-code snapshot (auto-generated) -# parent repo HEAD : 7fad62a4eff8dad5713bb470ea2b7f3faa1bd520 +# parent repo HEAD : 80c7230e17b5eb9c08d1e61737e79cae074680c1 # tac-qlib/tac_qlib/contrib # tac-qlib/tac_qlib/data # per-file hashes (git hash-object): 1b6298c4a5652f2e863cbdc385a1014a570fcd59 tac-qlib/tac_qlib/contrib/__init__.py - b8112569f9b2537c45b6535e1a505a207878d322 tac-qlib/tac_qlib/contrib/__pycache__/__init__.cpython-312.pyc c76a9f17f680e74eea766eff27f7624359749ed6 tac-qlib/tac_qlib/contrib/data/__init__.py - 8d5333ebd2b44165c50cba639ca2d4ac3fc7cfec tac-qlib/tac_qlib/contrib/data/__pycache__/__init__.cpython-312.pyc - 18cb37c0354184c49fa2e598396d7df0634cce0f tac-qlib/tac_qlib/contrib/data/__pycache__/handler.cpython-312.pyc 871ff1e163c29261f140c3f53d42a41e6504c779 tac-qlib/tac_qlib/contrib/data/handler.py b151d139a0dcde87d74b21e7c4b729176ba5c39b tac-qlib/tac_qlib/contrib/model/__init__.py - ab958203f33a99d12c7d923b6efb435189231666 tac-qlib/tac_qlib/contrib/model/__pycache__/__init__.cpython-312.pyc - 9dc36de7e343073b7d511349ee5aede086c38f94 tac-qlib/tac_qlib/contrib/model/__pycache__/rank_ensemble.cpython-312.pyc - 9f9014ddd9bce37490061312d51e8e6fe540fec4 tac-qlib/tac_qlib/contrib/model/__pycache__/rank_gbdt.cpython-312.pyc ce77dea53f6a87c5379782709293bf8ff55b2c75 tac-qlib/tac_qlib/contrib/model/rank_ensemble.py ccfe7d554989aa7f3e5a2128ae663e51b2207149 tac-qlib/tac_qlib/contrib/model/rank_gbdt.py 4afcf9058231111c412925f4c4b84e81d656db87 tac-qlib/tac_qlib/contrib/strategy/__init__.py - 74e5ecbbbb20bb71fd5cd083383de4ce88476712 tac-qlib/tac_qlib/contrib/strategy/__pycache__/__init__.cpython-312.pyc - afaf562aeaa12cebc8529cd916153252e7e3c38a tac-qlib/tac_qlib/contrib/strategy/__pycache__/optimal_stop.cpython-312.pyc -96a0a25201f0a1bb2fc2190e26228c5c0e711a79 tac-qlib/tac_qlib/contrib/strategy/hmm_risk.py -816de5d58ae23d996635d42331cf9fc8963d5dbe tac-qlib/tac_qlib/contrib/strategy/momentum_gate.py + 96a0a25201f0a1bb2fc2190e26228c5c0e711a79 tac-qlib/tac_qlib/contrib/strategy/hmm_risk.py + 816de5d58ae23d996635d42331cf9fc8963d5dbe tac-qlib/tac_qlib/contrib/strategy/momentum_gate.py 79aaad9e39fcc740a773f4f63c512ce1086cfde0 tac-qlib/tac_qlib/contrib/strategy/optimal_stop.py 92e6e90eb0cd0a25142034560f27adb6b705b1a8 tac-qlib/tac_qlib/data/__init__.py 0ed1ead6c1314a3f25784d453e54a15a8a04baaa tac-qlib/tac_qlib/data/__pycache__/__init__.cpython-312.pyc diff --git a/code/tac-qlib/tac_qlib/contrib/__pycache__/__init__.cpython-312.pyc b/code/tac-qlib/tac_qlib/contrib/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index b8112569f9b2537c45b6535e1a505a207878d322..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmY+9y-ve06os#U@}ojKbOi=Bf&_g5R0%o&QUQrFd9h3rRRKE*t{FPgmtbe(S$F`X zND%`Q8=@N%*AWcd;pjW}T>IKD-EIf4UWdz@2?2Qb=C9~4ti}kBkU~l{7$OMqOp&Re zh6&bsritN#x6Cy)fe2a-G&7+H3Cti3pNNPSQ4)XPE=WktQ{_}b>%f$0rt5g_ta90G zfl=q`aCD-IRA&}l?@|@Fr=#)l(V3sbPXD5ExlwxJ%4$>=&Xzi1HpF{v2 kv^_lP|1{q~`DBEU2KsNX)xc&0+YRh|alS?$BD;?H4}gGL82|tP diff --git a/code/tac-qlib/tac_qlib/contrib/data/__pycache__/__init__.cpython-312.pyc b/code/tac-qlib/tac_qlib/contrib/data/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 8d5333ebd2b44165c50cba639ca2d4ac3fc7cfec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 216 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 H$VUGk@_{`y diff --git a/code/tac-qlib/tac_qlib/contrib/model/__pycache__/__init__.cpython-312.pyc b/code/tac-qlib/tac_qlib/contrib/model/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index ab958203f33a99d12c7d923b6efb435189231666..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319 zcmX@j%ge<81lR4FvQ7c%#~=<2FhLogHGqui3@HpLj5!Rsj8Tk?AU0DDQ!aB9b1q91 z3nN21LkjaE#wgZG7ERWdj6mg@jJL#s67#Y>on7;aQ*)DYQhnT=eDhOMb2OQ5@j+x@ zBDZ*ofGRVSqzEXG3v!Zve0*kJW=VX! uUP0w84jZ6YX-=wL5f9J+kY9=gfW!x8Mn=ZF42Jg^j305iHL@3h!VLf*)l?q< diff --git a/code/tac-qlib/tac_qlib/contrib/model/__pycache__/rank_ensemble.cpython-312.pyc b/code/tac-qlib/tac_qlib/contrib/model/__pycache__/rank_ensemble.cpython-312.pyc deleted file mode 100644 index 9dc36de7e343073b7d511349ee5aede086c38f94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9461 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 x&$*J{aP9xXZTg(6{vG$^Z@BHhkunPbH diff --git a/code/tac-qlib/tac_qlib/contrib/model/__pycache__/rank_gbdt.cpython-312.pyc b/code/tac-qlib/tac_qlib/contrib/model/__pycache__/rank_gbdt.cpython-312.pyc deleted file mode 100644 index 9f9014ddd9bce37490061312d51e8e6fe540fec4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9838 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 jdZp;;nRPyLH1UW2d!L?X2*~q#l diff --git a/code/tac-qlib/tac_qlib/contrib/strategy/__pycache__/__init__.cpython-312.pyc b/code/tac-qlib/tac_qlib/contrib/strategy/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 74e5ecbbbb20bb71fd5cd083383de4ce88476712..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234 zcmX@j%ge<81lR4FvSNYsV-N=hn4pZ$VnD`ph7^Vr#vF!R#wbQch7_iB#weyrW=)ot zj6g|E##=)E1tpoei8;X~`327Tc_l^pIYrDsDL+l-TRiy?x%gtBBv|wodwhIiPELIM zN`}uMTYeeqCl(awmn0_Z7UpCoff(^%Ml#4Kpg?g+QDRAIdZm7Rd}dx|NqoFsLFFwD ro80`A(wtPgB2J(gAcqtS0ErLGjEszT8FU_S%U|G9Xk;&92MPiJ;Qu}S diff --git a/code/tac-qlib/tac_qlib/contrib/strategy/__pycache__/optimal_stop.cpython-312.pyc b/code/tac-qlib/tac_qlib/contrib/strategy/__pycache__/optimal_stop.cpython-312.pyc deleted file mode 100644 index afaf562aeaa12cebc8529cd916153252e7e3c38a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10428 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