import csv #輸入import輸出export,輸入csv套件
import math #輸入math套件
from tkinter import * #或者import tkinter as tk
Dim = 10
def draw_circle(x, y, label):
canvas.create_oval(100+x-5, 700-y-5, 100+x+5, 700-y+5, fill="black")
canvas.create_text(100+x+20, 700-y, text = label, anchor='w', font=('微軟正黑體',20))
file = open('台灣.csv','r',encoding='utf-8')
read = csv.reader(file)
header, rows = [], []
header = next(read)
for item in read:
rows.append(item)
file.close()
num = len(rows) #資料表長度
#print(header)
mean = [0 for i in range(Dim)]; mean50 = 0; vari50=0
meanTemp = [0 for i in range(Dim)]
vari = [[0 for i in range(Dim)] for j in range(Dim)]
for k in range(num):
for i in range(Dim):
meanTemp[i]=float(rows[k][i+1])/100 #轉換為小數
mean[i] += meanTemp[i]
for j in range(i+1):
vari[i][j] += meanTemp[i]*meanTemp[j]
meanTemp50 = float(rows[k][33])/100; mean50+=meanTemp50; vari50 += meanTemp50*meanTemp50
for i in range(Dim):
mean[i] = mean[i]/num
for j in range(i+1):
vari[i][j]=(vari[i][j] - mean[i]*mean[j]*num)/(num-1)
for i in range(Dim):
for j in range(i+1,Dim):
vari[i][j]=vari[j][i]
tk = Tk() #建構視窗名為tk
tk.geometry('1200x900')#視窗 寬1200像素
tk.title("陳冠丞python分析台灣50股票投資組合")
canvas = Canvas(tk, width=1200, height=900, bg='white')
canvas.grid(row=0,column=0,padx=5,pady=5,columnspan=3)
canvas.create_line(100, 700, 1100, 700, arrow=LAST,width=3)
for i in range(1,10): #X軸 0, 5...7
canvas.create_text(100+i*100, 700, text = i*5, anchor='n', font=('微軟正黑體',20))
canvas.create_line(100, 800, 100, 50, arrow=LAST,width=3)
for i in range(-1,7): #Y軸 1, 2, 3, 4, 5
canvas.create_text(94, 700-i*100, text = i*5, anchor='e', font=('微軟正黑體',20))
canvas.create_text(1100, 705, text = '標準差', anchor='n', font=('微軟正黑體',20))
canvas.create_text(95, 50, text = '報酬率', anchor='e', font=('微軟正黑體',20))
for i in range(Dim):
x, y = math.sqrt(vari[i][i]*12)*2000, 12*mean[i]*2000
draw_circle(x, y, header[i+1] )
mean50 = mean50/num; vari50=(vari50-mean50*mean50*num)/(num-1)
x, y = math.sqrt(vari50*12)*2000, 12*mean50*2000
draw_circle(x, y, header[33] )
#print(header[33], x, y)
step = 0.2 #原來是一表示僅考慮單一個股0.5也考慮各0.5
w=[0 for i in range(Dim)]
while w[0] <= 1:
while w[0]+w[1] <= 1:
while w[0]+w[1]+w[2] <= 1:
while w[0]+w[1]+w[2]+w[3] <= 1:
while w[0]+w[1]+w[2]+w[3]+w[4] <= 1:
while w[0]+w[1]+w[2]+w[3]+w[4]+w[5] <= 1:
while w[0]+w[1]+w[2]+w[3]+w[4]+w[5]+w[6] <= 1:
while w[0]+w[1]+w[2]+w[3]+w[4]+w[5]+w[6]+w[7] <= 1:
while w[0]+w[1]+w[2]+w[3]+w[4]+w[5]+w[6]+w[7]+w[8] <= 1:
temp9=w[0]+w[1]+w[2]+w[3]+w[4]+w[5]+w[6]+w[7]+w[8]
if temp9 < 1: w[9] = 1 - temp9
else: w[9] = 0
meanP, variP = 0, 0
for i in range(Dim):
meanP += w[i]*mean[i]
for j in range(Dim):
variP += w[i]*vari[i][j]*w[j]
y = 12*meanP*2000
x = math.sqrt(variP*12)*2000
canvas.create_oval(98+x,698-y,102+x, 702-y, fill="blue")
w[8] += step
w[7] += step
w[8] = 0
w[6] += step
w[7], w[8] = 0, 0
w[5] += step
for i in range(6, 9): w[i]=0
w[4] += step
for i in range(5, 9): w[i]=0
w[3] += step
for i in range(4, 9): w[i]=0
w[2] += step
for i in range(3, 9): w[i]=0
w[1] += step
for i in range(2, 9): w[i]=0
w[0] += step
for i in range(1, 9): w[i]=0
tk.mainloop()
陳冠丞2025年第三次期貨交易理論與實務 答 A B C D 以下有關期貨交易者類別所須繳交保證金額度的比較,何者為真? 投機>價差交易>避險 投機>避險>價差交易 價差交易>避險>投機 避險>價差交易>投機 答 A B C D 停損限價(Stop Limit)委託賣單,其委託價與市價之關係為: 委託價高於市價 委託價低於市價 沒有限制 依平倉或建立新部位而定 答 A B C D 6月1日計算香港交易所MSCI臺指期貨之未平倉量為10,000口,下列敘述何者為正確?甲.表示買賣雙方各有5,000口契約尚未平倉;乙.表示買賣雙方各有10,000口契約尚未平倉 甲 乙 選項(A)(B)皆是 選項(A)(B)皆非 答 A B C D 目前客戶的保證金淨值為US$60,000,而其未平倉部位所需原始保證金為US$48,000,維持保證金為US$36,000,則若客戶欲出金,其最高可提領金額為: US$60,000 US$12,000 US$24,000 0 答 A B C D 瑞郎期貨每口所須原始期貨保證金為US$1,800,若客戶於0.8754買進,在0.8790平倉,請問客戶的投資報酬率為何?(瑞郎期貨契約值125,000瑞郎) 5.33% 5.30% 15% 25% 答 A B C D 下列敘述哪一項是正確的? 期貨到期時基差為負值 期貨到期時基差為正值 期貨到期時基差為零 視當時市場狀況決定 答 A B C D 券商若發行指數型認購權證(Call Warrant),可在指數上漲時如何操作指數期貨避險? 賣出指數期貨 視認購權證之價格變化來決定,買或賣指數期貨 買進指數期貨 無法以指數期貨避險 答 A B C D 最小風險避險比例(最佳避險比例)的估計式為h,例如h=-0.5,試問「-」符號之意義為何? 表示期貨部位與現貨部位相反 表示賣空期貨契約 表示期貨部位將產生虧損 表示買進期貨契約 答 A B C D 智利礦商賣出銅期貨避險,何者會造成避險的不完全? 當銅現貨與銅期貨的相關係數為1時 避險後,基差沒有變動 期貨契約規格固定 若可以買到所需要的銅期貨數量 答 A B C D 某廠商必須進口小麥,為了避險買進了10口小麥期貨,每口契約規格為5,0...
留言
張貼留言