# Fintech 2023 作業一 - 作業相關重要規範 - 作業於10月15號晚上23:59截止,接著自10月16號至12月22號止,會根據同學的交易策略對當日做買賣判斷。 - 單次myStrategy的運算時間以1秒為限。 - 作業繳交格式及注意事項(2023/10/18 編輯) - 請繳交<學號>.zip,例如:R12345678.zip,內容資料夾結構如下: ``` R12345678.zip └─ /R12345678 ├─ myStrategy.py ├─ report.pdf └── /src ├─ model.py ├─ model.pt (or *.ckpt, *.pkl, ...) └─ other source code ``` - 解壓縮後應該會是以學號命名的資料夾,不符合者會斟酌扣分。 - 必須包含 myStrategy.py 以及 report.pdf,且名稱需符合格式,不符合者會斟酌扣分。 - myStrategy.py 內需要有實作好的 myStrategy(pastPriceVec, currentPrice),助教會去呼叫這個 function,若助教無法執行,則會視嚴重程度扣分。 - 若需要使用 src 內的檔案,請善用以下兩種方式 ``` import os file_path = os.path.abspath(os.getcwd()) file_path = os.path.dirname(os.path.realpath(__file__)) src_path = os.path.join(file_path, 'src') ``` - 請避免上傳無關的檔案。 - 作業批改環境 - 請參考[這裡](https://hackmd.io/@9SdN0kGHRzSrh7VKaILAlg/SyEvQWbla)。 ## Q & A ### 交易策略程式以及輸入資料相關 * Q. 輸入資料格式? A. 傳入的歷史股價會從 2019/01/02 開始到預測日當天。以開始預測的第一天(10/16)為例,pastPriceVec 將會是 2019/01/02 - 2023/10/13 的收盤價,而 currentPrice 會是 2023/10/16 當天的收盤價。到最後一天(12/22)的時候,pastPriceVec 會含有 2019/01/02 - 2023/12/21 的收盤價,而 currentPrice 會是 2023/12/22 當天的收盤價。 * Q. 必須先買才能賣嗎? A. 對,必須先持有股票才能賣。 * Q. function 參數沒告訴我我有幾張股票跟多少錢我要怎麼買賣 ? A. 每次操作都是全買或全賣,簡化參數不考慮持有金額或股票,需要考慮的就只有從過往到當日收盤價。 * Q. 是否可以使用talib套件做為指標分析的工具? A. 可以,版本後續會列於套件hackmd文件中。 * Q. 輸入myStrategy.py的歷史股價和當前價是什麼格式,list, numpy array 或 pandas array? A. 可以從範例的rrEstimate.py去測試並得知輸入的資料type 分別為 <class ‘numpy.ndarray’> <class ‘numpy.float64’> ### ML相關方法和問題 * Q. pytorch 會支援gpu執行還是cpu執行 A. GPU * Q. pytorch要讀的pretrain參數檔如何上傳使用 A. 依照作業繳交格式,請以相對路徑使用上傳的模型參數 Reminder: 如果有使用到NN模型,請在 myStategy function 內自行 initialize,載入模型的時間也會算進執行時間當中 ### 作弊相關 * Q. 用 global variable 或其他作弊方法抓到所有價格 A. 作業截止後回測期間每日根據當日 Adj. Close 計算當日買賣決策,約2個月後再直接以歷史股價回測所有決策的報酬率。