發表文章

陳佑愷程式交易、演算法交易的風險管理

圖片
   width寬度, height高度, src=source     安侯建業會計師事務所KPMG 演算法交易Algorithmic Trading 強化你的治理、系統與控制 跟上演算法交易革命 過去10年對演算法交易的依賴,導致投資人面臨更多的風險與挑戰。閃崩(flash crashes)等事件引發全球監管單位的注意,投資機構被要求提出演算法交易系統的自我評估報告。 關鍵挑戰為何? 避免財物損失:確定交易可靠,可以有效的執行欲達成的功能。過往已經發生一些演算法設計不周全,而引發市場閃崩,甚至公司破產的事件。

劉任昌PYTHON回溯測試過去60天

圖片
  #資料檔 https://drive.google.com/file/d/1eB8BT2dLb-I8u7EQmoQ4O1TdRG7oLUKq/view?usp=drive_link import csv #輸入csv套件comma separated value file = open('SPY.csv','r') #打開下載的檔案SPY.CSV,模式是r讀取, csvreader = csv.reader(file) #將檔案逐列讀入串列變數csvreader header, rows = [], [] #宣告空白串列(陣列,清單) header = next(csvreader) #串列header儲存檔案第一列 for row in csvreader: #檔案接續逐列附加append於rows串列 rows.append(row) file.close() #關閉檔案 header.extend(['MA20','部位','最大','獲利','最小','損失']) #第7至12欄 for i in range(19): rows[i].extend([rows[i][5],0]) #第7欄用收盤當20日平均,第8欄部位0 for i in range(19,len(rows)): sum20 = 0.0 #實數=浮點數 for j in range(i-19, i+1): sum20 += float(rows[j][5]) rows[i].extend([sum20/20, 0]) #第7欄20日平均,第8欄部位0 listx = [y/1000 for y in range (31)]#測試31個突破點0, 0.1%...3% for i in range(80,len(rows)): #目標是len(rows) listgain = [0.0 for y in range (31)]#儲存31個突破點的損益,預設0 list...

劉任昌VS Code編輯csv檔案append新欄位encoding=utf8

圖片
  import csv #輸入csv套件comma separated value file = open('SPY.CSV','r') #打開下載的檔案SPY.CSV,模式是r讀取, csvreader = csv.reader(file) #將檔案逐列讀入串列變數csvreader header, rows = [], [] #宣告空白串列(陣列,清單) header = next(csvreader) #串列header儲存檔案第一列 for row in csvreader: #檔案接續逐列附加append於rows串列 rows.append(row) file.close() #關閉檔案 header.append('MA20') #第7欄,為header串列list新曾元素 header.append('部位') #第8欄 header.append('最大') #第9欄 header.append('獲利') #第10欄 header.append('最小') #第11欄 header.append('損失') #第12欄 for i in range(20): rows[i].append(rows[i][5]) for i in range(20,len(rows)): sum20 = 0.0 #實數=浮點數 for j in range(i-20, i): sum20 += float(rows[j][5]) rows[i].append(sum20/20) #第7欄20日平均 rows[i].append(0) #第8欄預設部位0 listx = [y/1000 for y in range (31)] #測試31個突破點0, 0.1%...3% print('測試用的參數\n',listx) '''for i in range(80...

EXCEL結構化表格Table相當於程式設計陣列Array

圖片
  基本觀念 串列LIST、元組TUPLE、集合SET、字典DICTIONARY 順便複習HTML超文件HYPERTEXT標記MARK-UP語言LANGUAGE,CSS W3SCHOOLS截圖 以上css STYLE的程式碼 <style>H1{BACKGROUND-COLOR:LIGHTGREEN;   TEXT-ALIGN:CENTER;   PADDING:10PX;    BORDER-STYLE: SOLID;    BORDER-WIDTH: 20PX;    BORDER-COLOR: RGB(255,100,40);   BORDER-RADIUS: 40PX;} UL{FONT-SIZE:2EM;    BACKGROUND-COLOR: BLUE;    COLOR: WHITE;    FONT-WEIGHT:BOLD;   LINE-HEIGHT:1.5;} </style>

劉任昌使用EXCEL:MATCH,INDEX函數

圖片
  最大值 位置 最佳關鍵點 1.138701 28 2.70% =MAX(N2:AR2) =MATCH(AS2,$N2:$AR2,0) =INDEX($N$1:$AR$1,$AT2) 0.528531 1 0.00% 10.315605 14 1.30% 3.640566 30 2.90%

劉任昌vs code期中考

圖片
  import csv #輸入csv套件comma separated value file = open('SPY.CSV','r') #打開下載的檔案SPY.CSV,模式是r讀取, csvreader = csv.reader(file) #將檔案讀入變數csvreader header, rows = [], [] #宣告空白串列(陣列,清單) header = next(csvreader) #串列header儲存檔案第一列 for row in csvreader: #檔案接續逐列附加append於rows串列 rows.append(row) file.close() #關閉檔案 header.append('MA20') #appendix附錄,為header串列list新曾元素 header.append('部位') #print('印出前十列') #print(header) for i in range(20): rows[i].append(rows[i][5]) for i in range(21,len(rows)): sum20 = 0.0 #實數=浮點數 for j in range(i-20, i): sum20 += float(rows[j][5]) rows[i].append(sum20/20) for i in range(len(rows)-3,len(rows)): #length的命令len(rows) print('第',i+1,'列',rows[i]) file = open('SPYW.CSV','w',newline='') w = csv.writer(file) #寫入檔案 VScode是IDE(程式)整合開發環境 w.writerow(header) #第5列將檔案欄位名稱列header w.writerows(rows) #第7列將檔...

Python串列list元組tuple字典dictionary

圖片
程式碼 import csv #輸入csv套件comma separated value file = open('SPY.CSV','r') #打開下載的檔案SPY.CSV,模式是r讀取, csvreader = csv.reader(file) #將檔案讀入變數csvreader header, rows = [], [] #宣告空白串列(陣列,清單) header = next(csvreader) #串列header儲存檔案第一列 for row in csvreader: #檔案接續逐列附加append於rows串列 rows.append(row) file.close() #關閉檔案 header.append('MA20') #appendix附錄,為header串列list新曾元素 header.append('部位') #print('印出前十列') #print(header) for i in range(20): rows[i].append(rows[i][5]) for i in range(21,len(rows)): sum20 = 0.0 #實數=浮點數 for j in range(i-20, i): sum20 += float(rows[j][5]) rows[i].append(sum20/20) for i in range(len(rows)-3,len(rows)): #length的命令len(rows) print('第',i+1,'列',rows[i])