2023年6月15日 星期四

電子試算表發明人

 1978年,哈佛大學EMBA學生在教室中發明電子試算表(electronic spreadsheet),這個發明永遠改變人們利用電腦在商業應用的方式(forever changed how people use computers in business.)。後來,賈伯斯請比爾蓋茲為蘋果電腦開發相同軟體,稱為EXCEL,比爾蓋茲要求EXCEL也可以賣到其他平台,最後導致Mac電腦與IBM相容電腦並存。


2023年5月25日 星期四

劉任昌python import openpyxl 處理EXCEL

 import openpyxl #蔣姿如輸入import openpyxl處理EXCEL的函式庫

book = openpyxl.load_workbook(r'wb.xlsx') #開啟EXCEL工作簿wb.xlsx
print("1. 列出所有工作表名稱")
sheetNames=book.sheetnames                #所有工作表的集合
for name in sheetNames:
   print(name)

print("2. 針對特定工作表, 列出前面數列")
#sheet = book["python"]
#for row in sheet.iter_rows(min_row=1, max_row=3, min_col=1, max_col=5, values_only=True):
#    print(row)
    
print("3. 列出工作表所有內容")
#sheet["F1"], sheet["G1"], sheet["H1"], sheet["I1"]="波段H","波段L","部位","損益"
#sheet["F2"], sheet["G2"], sheet["H2"], sheet["I2"]=sheet["C2"].value, sheet["D2"].value, 0, 0
#for row in sheet.iter_rows(min_row=1, max_row=3, min_col=1, max_col=9, values_only=True):
#    print(row)
#book.save()
from tkinter import *
import pygame
root = Tk()
root.title("蔣姿如")
root.geometry("500x400")

pygame.mixer.init()
def play():
    pygame.mixer.music.load('mixkit-tech-house-vibes-130.mp3')
    pygame.mixer.music.play(loops=0)
def stop():
    pygame.mixer.music.stop()

my_button = Button(root, text=("演奏"), command=play)
my_button.pack(pady=20)
stop_button = Button(root, text="停止", command=stop)
stop_button.pack(pady=20)
root.mainloop()
# www.pygame.org
#pip install -U pygame==2.4.0 --user

2023年5月11日 星期四

蔣姿如 python math radon

w3schools學習python math random函式庫

import math #蔣姿如 輸入數學函式庫
import random #輸入亂數資料庫
x = math.sqrt(2)
print(x)
#大樂透是49個號碼開出六個
for i in range(6):
   x=random.randint(1,49)
   print("開出的第 " + str(i+1) +" 個號碼: " + str(x))
#str是將數字轉成字串string   

w3schools學習python math random截圖


亂數函數主要用在蒙地卡羅模擬分析,用於衍生性金融商品的訂價。

貪吃蛇的python程式






影片


 

2023年5月4日 星期四

蔣姿如Python視窗使用者介面GUI類別class建構正多邊形或星形


#蔣姿如教python設窗程式設計
from tkinter import * #從函式庫 tkinter 輸入所有 * 方法
from math import *    #從函式庫 math 輸入所有 * 方法
class Regular:        #定義類別Regular正多邊形或星型
    def __init__(self, cx, cy, cr, s, t, c, w): #類別共同的設定
        self.cx, self.cy, self.cr = cx, cy, cr  #取得中心座標cx, cy, 半徑cr
        self.s, self.t = s, t    #取得邊角數目s,t尖銳程度,取代原來的k = s.get()
        self.c, self.w = c, w    #取得顏色c,寬度w
        self.u = 2 * pi / self.s #使用模組 math 圓周率 pi
        self.x, self.y = [], []
        for i in range( int(self.s * 1.5)):
            self.x.append(self.cx + self.cr*cos(i*self.u)) 
            self.y.append(self.cy + self.cr*sin(i*self.u)) 
    def draw(self):                                 #類別的方法
        for i in range( int(self.s * 1.5) - self.t):
            canvas.create_line(self.x[i], self.y[i], 
                    self.x[i + self.t], self.y[i + self.t], fill = self.c, width = self.w)
def show():          #畫圖
    poly = Regular(cx.get(), cy.get(), cr.get(), s.get(), t.get(), c.get(), w.get())
    polyList.append(poly)
    polyList[len(polyList)-1].draw()
def clear():         #清除視窗的all所有canvas圖
    canvas.delete('all')

polyList = []
xyr = (50,75,100,150,200,250,300,350,400)
st = (1,2,3,4,5,6,7,8,9,10,11,12,16,20,24,28,32)
tk = Tk()
tk.title("蔣姿如視窗使用者介面GUI")  #也可以定義視窗名為 window, root課本都如此習慣
canvas = Canvas(tk, width=600, height=450)
canvas.pack()
cx, cy, cr, s, t = IntVar(tk),IntVar(tk),IntVar(tk),IntVar(tk),IntVar(tk)
cx.set(xyr[3]) #預設座標 x=200
cy.set(xyr[3]) #預設座標 y=200
cr.set(xyr[1]) #預設半徑 r=100
s.set(st[9])   #預設邊形 8
t.set(st[0])   #預設堅度 1即凸多邊形
label1 = Label(tk, text="位置x ").pack(side=LEFT)  #距離左側
option1 = OptionMenu(tk, cx, *xyr).pack(side=LEFT)
label2 = Label(tk, text="位置y ").pack(side=LEFT)  #距離頂端
option2 = OptionMenu(tk, cy, *xyr).pack(side=LEFT)
label3 = Label(tk, text="半徑r ").pack(side=LEFT)  #半徑
option3 = OptionMenu(tk, cr, *xyr).pack(side=LEFT)
label4 = Label(tk, text="邊形s ").pack(side=LEFT)  #幾個邊
option4 = OptionMenu(tk, s, *st).pack(side=LEFT)
label5 = Label(tk, text="堅度t ").pack(side=LEFT)  #相鄰建構,尖銳度
option5 = OptionMenu(tk, t, *st).pack(side=LEFT)
label6 = Label(tk, text="顏色").pack(side=LEFT)    #顏色
c = StringVar(tk)
colorL = ('black','red', 'green', 'blue', 'purple', 'gray')
c.set(colorL[0])
option6 = OptionMenu(tk, c, *colorL).pack(side=LEFT)
label7 = Label(tk, text="寬度").pack(side=LEFT)  #寬度
w = IntVar(tk)
widthL = (1, 2, 3, 4, 5, 6)
w.set(widthL[0])
option7 = OptionMenu(tk, w, *widthL).pack(side=LEFT)
button = Button(tk, text=" 繪圖 ", command = show, bg='black',fg='white').pack(side=LEFT)
button1 = Button(tk, text="移除All", command = clear).pack(side=LEFT)
tk.mainloop()

增加出現所有圖形的函數與按鈕


影片


2023年4月20日 星期四

蔣姿如python迴圈range

 

w3schools學習python


w3schools學習python程式碼

#註解蔣姿如程式交易python迴圈相當於EXCEL一列
#相當於JavaScript的//
for i in range(20,10,-2):
  print("第"+str(i)+"列")
#整數i要和字串相+連,先轉成字串string指令str

複習EXCEL都會對應到python指令

  • Max
  • Min
  • Match
  • Index
  • 目標搜尋,學找最佳會參數
  • 運算列表,判斷參數是否可靠、是否一致

使用修飾的CSS指令前後要加style與/style

h1 {background-color: purple;color: white; text-align: center; padding: 10px; border: yellow 20px solid; border-radius: 30px;} h2{ border: green 10px solid; border-radius: 20px;text-align: center;} pre {font-family: verdana; font-size: 20px; border: solid 2px blue; line-height: 1.5}

教學影片

013

014

2023年4月13日 星期四

蔣姿如IV隱含波動率/資料/模擬分析/目標搜尋

 從選取範圍建立名稱


股價	100	
履約價	100	
波動率	0.2	
利率	0.01	
時間	1	
d1	0.15	=(LN(股價/履約價)+(利率+波動率*波動率/2)*時間)/波動率/SQRT(時間)
d2	-0.05	=d1_-波動率*SQRT(時間)
買權價格	8.43331869	=股價*NORMSDIST(d1_)-履約價*EXP(-利率*時間)*NORMSDIST(d2_)
	蔣姿如	
資料/模擬分析/目標搜尋/隱含利率


說明影片

012



心得

  1. 求取選擇權的隱含波動率(IV, Implied Volatility)的觀念,類似程式交易回溯測試最佳化參數
  2. 選擇權權利金的理論價格,計算參數股價、履約價、波動率、利率、時間。
  3. 利用日資料回溯測試求最佳化參數,未來做日內資料的投機交易,使用五分鐘K線。
  4. 台灣期貨市場日交易時段五個小時(8:45-13:45),相當於60個五分鐘。
  5. 將利用日資料算得的最佳化參數,除以60,來進行實際操作交易

2023年4月6日 星期四

蔣姿如EXCEL資料/模擬分析/運算列表:買權訂價公式

 運算列表練習 股價 履約價 到期日 波動度 利率

工作表worksheet   

蔣姿如運算列表練習		股價	履約價	到期日	波動度	利率
		550	560	0.1	0.2	0.05
買權權利金		D1	D2			
	10.657	-0.174	-0.237			
		 =LN(股價/履約價)+(利率+波動度^2/2)*到期日				
 =NORMSDIST(D1_)*股價-NORMSDIST(d2_)*履約價*EXP(-到期日*利率)						
運算列表買權敏感度分析						
sigma\時間									
10.65705276	0.01	0.02	0.03	0.04	0.05	0.06	0.07	0.08	
0.002	0	0	0	0	2.7673E-266	9.5955E-209	5.2339E-168	8.9536E-138	
0.004	0	3.9914E-201	9.7472E-128	3.81612E-91	2.78908E-69	8.70332E-55	1.65927E-44	7.32479E-37	
0.006	1.1863E-189	2.06805E-91	1.2357E-58	2.96875E-42	1.92302E-32	6.3904E-26	2.78159E-21	8.02849E-18	
0.008	2.7317E-108	8.01117E-53	2.91751E-34	5.89266E-25	2.30217E-19	1.23568E-15	5.68462E-13	5.60892E-11	
0.01	1.62863E-70	7.5815E-35	7.25188E-23	7.75721E-17	3.36691E-13	9.19374E-11	5.13224E-09	1.05776E-07	
0.012	6.46251E-50	5.27344E-25	1.3398E-16	2.37455E-12	8.9194E-10	4.81648E-08	8.52534E-07	7.4826E-06	
0.014	1.93764E-37	5.15522E-19	9.12156E-13	1.36088E-09	1.16592E-07	2.36348E-06	2.08757E-05	0.000109224	
0.016	2.67806E-29	4.38164E-15	3.07885E-10	9.19517E-08	3.0116E-06	3.22504E-05	0.000181018	0.00067551	
0.018	1.10175E-23	2.33209E-12	1.79049E-08	1.77126E-06	2.99451E-05	0.000206633	0.000848335	0.002506424	
0.02	1.21448E-19	2.204E-10	3.46556E-07	1.55242E-05	0.000163244	0.000821195	0.002691275	0.006717812	
0.022	1.24972E-16	6.69091E-09	3.24853E-06	8.08336E-05	0.000597245	0.002374417	0.006577566	0.014474309	
0.024	2.54623E-14	9.33025E-08	1.84996E-05	0.000293892	0.001657923	0.005503964	0.013401238	0.026765127	
0.026	1.65179E-12	7.49434E-07	7.38958E-05	0.000826755	0.003775859	0.010882079	0.023940304	0.044297634	
0.028	4.66206E-11	4.02464E-06	0.000227639	0.001925913	0.007430355	0.019122875	0.038782785	0.067487638	
0.03	7.07757E-10	1.59931E-05	0.000576959	0.003891627	0.013091122	0.030725518	0.05831151	0.09650128	<-波動度0.03,到期日0.08的買權權利金


excel截圖



電子試算表發明人

 1978年,哈佛大學EMBA學生在教室中發明電子試算表(electronic spreadsheet),這個發明永遠改變人們利用電腦在商業應用的方式(forever changed how people use computers in business.)。後來,賈伯斯請比爾...