學程式助教

【學程式主題小聚-利用Python與Balck Scholes來制定選擇權評價模型】

相信大家都有聽過股票但是選擇權比較鮮少人會特別注意到亦或是想深刻的了解的 其實,台灣人對於金融市場是非常熱衷的,這次Raymod身為一名股權衍生性金融商品交易員來告訴我們 身為一名交易員他對於選擇權中有什麼該注意的,以及選擇權中交易的細節都在這場小聚都仔細地分享給我們! 對Python+金融有興趣的朋友可以來到Raymond的部落格走走喔 雷蒙的Python投資筆記版主(https://raymond-investment.com/)   衍生性金融商品介紹 由標的資產延伸(衍生)出來,並可以利用金錢衡量的商品 股票、期貨、利率、外匯、原物料等 高槓桿 → 高風險 什麼是選擇權 定義:有權利於某時間用某價格買進或賣出標的資產 用途:投機或避險 相關參數:買賣權,波動率、標的資產價格、履約價、到期時間、利率 Raymond也舉了1月的總統大選當例子, 總統大選前應該就要先避險 ,也是因爲新的執政黨剛上任會影響金融市場。 要會假想整體局勢,會比較像賭博概念!…

4 years ago

Python Comprehension語法應用教學

相信在學Python程式語言的朋友都知道,Python語法簡單易學且非常簡潔,今天要來介紹的Comprehension即是Python的Pythonic語法之一,可以運用在任何可疊代的物件(Iterable Object)上,只要一行程式碼即可完成多行的任務,讓我們的程式碼簡潔及增加可讀性。 透過今天的教學,您將可以學到Python Comprehension如何應用在以下幾個重要的物件(Object)上,並且有能力將現有程式碼改寫為Python Comprehension語法。 List Comprehension Set & Dictionary Comprehension Generator Expression   一、List Comprehension 串列(List)Comprehension的語法包含三個部分,說明如下: expression:可以是 item 或運算式。…

4 years ago

如何用蒙地卡羅模擬股價?

上回我們使用最基本的亂數模擬器方法成功模擬出Mike Trout的上壘率,當抽取出來的亂數小於上壘率時,認定為上壘,而亂數大於上壘率時,則認定為出局,用簡單的大於和小於就可模擬出來的模型,股價模型就稍微複雜些了,基本款的股價路徑模型最少具有二種參數與機率分配假設,背後的數學推導與原理就請大家自行去看財務工程相關的書籍了,我們先列出一個股價過程的理論式如下: 有了最基本的理論公式後,首先,我們必須定義出參數,參數可以描述這個股票的特性,例如新興市場股票與成熟市場股票的報酬率與波動度都不一樣,電信與生技公司的股價也會相當不一樣,所以我們必須要利用過去的資料去推估參數的區間範圍。 mu = 0.1 #資產年化報酬率為10% Std = 0.2 #資產年化波動率為20% dt = 1/252. #模擬路徑為每天,每天經過252分之一年 Copy   第一步:先將理論式轉換為Python的計算語言,記得括號設對位置,再用相對應的科學計算函數帶入公式內 S1 =…

4 years ago

機器人理財(Robo-Advisor)真的能幫助到我們嗎?

近兩年機器人理財(Robo-Advisor)這個詞大量出現在金融市場中,也有多家國內外金融機構在推銷這種型態的商品,並大量以智能與人工智慧(AI)來作為行銷的關鍵字,今天就要來仔細的分析幾類我所認識的理財機器人系統。 馬可維茲(Morkowitz)的投資組合理論(Portfolio Theory) 馬可維茲於1952年提出了投資組合理論,將金融市場中的各種資產簡化定義成預期報酬率、標準差與相關係數,在假設以上參數均為已知的狀況下,可以進行規劃求解得出「最小風險投資組合(Minimum Variance Portfolio)」與「最適投資組合(Optimal Portfolio)」,大部分的機器人理財業者均是以此種模型進行操作,除了有諾貝爾經濟學獎的加持外,對於現有的程式撰寫有相當的方便,許多程式均有規劃求解的套件可供使用。 馬可維茲的投資組合理論利用數學嚴謹的證明,資產配置對於投資組合波動度與報酬率有顯著的影響,將多種相關係數低的資產配置在一起,能夠降低投資組合波動度與提高預期的報酬率,例如債券與股票呈現負相關時,能夠配置出風險調整後報酬較高的組合,相對於單一股票或債券。 利用馬可維茲現代投資組合理論的機器人理財平台,通常會利用風險問卷來進行投資人分類,例如年齡、投資期間與風險承受度等,透過背後的評分邏輯將使用者分為三至四個風險屬性,假設情況如下: 投資人屬性 可承受年化波動率 積極型投資人 25%以上 穩健型投資人 15%~25% 保守型投資人 15%以下 利用過去各資產類別的走勢去計算報酬率、波動度與相關係數,作為投資組合評估的相關參數,由使用者作答的風險問卷來對應出可承受年化波動度,再以程式進行目標為「固定風險下的最佳報酬率」的最佳化,就可以得到最佳的權重組合。 Smart Beta…

4 years ago

想嚐嚐Javascript,Python,Ruby的味道嗎:工程師必喝的「程式語言咖啡」

  每天打程式的你,有想過程式語言變成咖啡,會是什麼味道嗎? 現在日本推出了一款超爆紅的程式語言咖啡豆「CODE COFFEE」,由日本工程師們挑選出來的! 總共有 C、Java、Perl、Ruby、Python、JavaScript、Go、Swift 八種口味, 如果你是這幾種程式語言的支持者,一定要來試試看XD 最後還可以在 Github 跟其他工程師交流你的飲後感想唷! https://www.youtube.com/watch?v=ftSjvrKB3XU&feature=youtu.be 我們來看看這八種程式語言吧! C語言咖啡豆   「一切的來源--基本語言咖啡」 由咖啡的來源巴西・哥倫比亞,來調配出一切程式語言的基礎–C語言的滋味。 [商品詳情] 語言特徵:SIMPLE 咖啡特長:來源…

4 years ago

Python 封裝(Encapsulation) 實用教學

今天要來介紹Python物件導向設計中的封裝(Encapsulation)概念,主要的目的在保護程式碼中重要的實作細節不被外部知道,以防止外部程式碼直接或不當的存取類別中的屬性(Attribute)及方法(Method),而導致程式邏輯上的錯誤。 將複雜的運算邏輯進行封裝(Encapsulation)的好處是,外部程式碼只要透過統一介面來進行存取即可,而無需瞭解其中的運算過程,讓程式碼除了保有存取上的控制外,也易於維護。   今天要來說明的封裝(Encapsulation)重點包含了: Python封裝 (Encapsulation) 私有屬性 (Private Attribute) 私有方法 (Private Method) (more…)

4 years ago

Python多型(Polymorphism)實用教學

今天要來介紹的Python多型(Polymorphism)在物件導向設計中非常的重要,不論是設計模式(Design Patterns)或設計原則(Design Principles),都會有多型(Polymorphism)的概念。 使用多型(Polymorphism)來設計類別架構,能夠讓程式碼的相依性不會那麼高,並且透過統一的介面來彈性擴充功能。今天主要的重點有兩個部分: Python抽象方法(Abstract Method) 多型(Polymorphism) (more…)

4 years ago

學程式主題小聚–【區塊鏈懂不懂】

【區塊鏈懂不懂】 區塊鏈這個東西近幾年來一直是相當熱門的話題,大家也都紛紛加入這個行列,對於區塊鏈你真的懂它的原理嗎?我的回答是:「不懂」 在談到區塊鏈時,我們可以先來聊聊貨幣。 【貨幣是什麼】 〈貨幣的功能〉 交易媒介 計價單位 價值儲存 〈貨幣的演變〉 過去沒有貨幣產生的時代,人們所使用的方式為以物易物,但這種交易方式相當仰賴一個區域的共識,在A地區可能認為一頭牛換一帶米很合理,但在B地區卻認為一頭牛值得兩袋米的價值,因此,在不同地區進行交易,很難取得一定的共識。而後出現了所謂的金屬,但也因為金屬體積龐大,需要很大的儲存空間否金塊難以存放,到了現代,我們所使用的法幣(法定貨幣),由政府所發行的紙幣,成為了一種讓貨幣具有上述3種功能的一項媒介。 〈比特幣的誕生〉 然而,科技的進步促使了數位貨幣的出現,也就是大家現在所熟悉的—「比特幣」,由中本聰所發明,雖然目前仍然沒有人知道他的真實身分到底是誰,但卻也帶起了一股新的風潮。 比特幣是2009年所產生的一項數位資產,透過挖礦的流程來進行網路上的驗證交易。比特幣就像是礦產一般,而執行驗證交易的人則被稱之為礦工,以工作量來衡量成效,亦即努力做多少工作就會有多少收穫,預估在2040年時總量共有2100萬顆。 【區塊鏈原理】 〈錢包的概念〉 其實區塊鏈的原理並不難懂,Nic以錢包的概念作為舉例。只要有算法公式就可以隨機產生一個錢包(就將公式想像成數學的二元一次方程式,就會很容易理解囉!)。以下來看看Nic所提到的區塊鏈的名詞: 錢包地址—公鑰 操作錢包並與其配對的—私鑰 只要有了私鑰,就能夠回推出公鑰(也就是錢包的地址),這裡需要注意的是,只有私鑰可以回推找出公鑰,但不能由公鑰回推找出私鑰唷!說到這裡,一定有人還是會相當好奇,真的沒有辦法從公鑰推出私鑰嗎?這個就需要利用SHA-256加密算法來說明 〈什麼是SHA-256加密算法〉…

4 years ago

JS 學資料結構與演算法 (排序篇) — 合併排序法 Merge Sort

合併排序法 Merge Sort合併排序法定義合併演算法與上一篇介紹的快速排序法一樣,都運用了 Devide and Conquer 的概念,基本上分為兩個步驟:分割與整合。首先利用遞迴把原先未排序的陣列平均分割成兩半,直到各邊都只剩下一個元素(上圖紫色方塊),接著排序後再一一整合起來,最後會合併成一個排序後的陣列(上圖綠色區塊)。分割 (紫色區塊)把大陣列分一半成為兩個小陣列把從上一步驟切好的兩個小陣列再各自分一半重複步驟 2 直到每個小陣列都只剩一個元素整合 (綠色區塊)排序兩個只剩一個元素的小陣列並將其合併把上一步驟排序好的小陣列合併並排序成一個陣列重複步驟二直到所有小陣列都合併成一個大陣列讀者比較有疑問的也許會是這個部分: Q: [2,3,7,16] 跟 [4,9,11,24] 這兩個陣列是如何合併成最終的已排序陣列呢?A: 因為這兩個陣列在合併前就已經各自完成排序了,因此只要比較各自最左邊的元素的大小,將比較小的元素放進新陣列中,最後就能完成排序囉!其實從一開始只有一個元素要進行合併時就是運用這個方法喔(只有一個元素的陣列視為已排序)!時間複雜度最佳:O(n log n)最差:O(n log n)平均:O(n…

4 years ago

解鎖 AppStore 3種生產力工具常勝軍,你使用了嗎?

追求效率,提高效能的數位化時代 我們今天要來揭開新創環境與團隊中常使用也都是Appstore排行榜上面的常勝軍同學們哈哈哈 像我其實是重度懶癌、拖延症以及很難搞不清楚先後順序 是非常需要有工具來幫我管理我的時程以及事情 之前我看過一部日劇叫作「我要準時下班」,女主角有提過到一個觀念假設你每天花時間找文件,一年就有可能會浪費到150小時 150小時根本超好發揮的啊~為了要狠狠抓緊這150小時,來了解什麼樣的生產力工具能幫助你工作生活吧! Trello 對於排程你的工作、生活與假期總是亂糟糟,沒有一個好地方能幫你收納好你的行程嗎 Trello將待辦事項變成卡片的方式來呈現 你的每個待辦事項都能加以描述也能夠壓Deadline,一旦你的期限快到了Trello會進行提醒的動作唷 也能將你朋友加入至Trello板上面,跟你一起管理你們可能要共同處理的事情 像是旅遊,可以透過每張卡片的標題來進行有效率的溝通也可以朋友與夥伴間記住每個人的任務喔! 我自己是喜歡將卡片加上圖片會更清楚每張卡片是有什麼功能!              …

4 years ago