• 如何創建requirements.txt

    如何創建requirements.txt

    平常在GitHub中使用python的project中常會看到requirements.txt,這就是紀錄你這個project使用了那些package,這樣才能夠快速安裝會使用到的library以便使用和部署。

    使用方法:
    開啟CLI,並輸入pip freeze。

    pip freeze > requirements.txt

    它便會在當前資料夾創建一個requirements.txt,並將如下資訊儲存到requirements.txt中。下面就是我這台電腦安裝的所有package和版本。

    C:\Users>pip freeze
    async-generator==1.10
    attrs==23.1.0
    certifi==2023.5.7
    cffi==1.15.1
    charset-normalizer==3.1.0
    colorama==0.4.6
    exceptiongroup==1.1.1
    h11==0.14.0
    idna==3.4
    outcome==1.2.0
    packaging==23.1
    pycparser==2.21
    PySocks==1.7.1
    python-dotenv==1.0.0
    requests==2.30.0
    selenium==4.9.1
    sniffio==1.3.0
    sortedcontainers==2.4.0
    tqdm==4.65.0
    trio==0.22.0
    trio-websocket==0.10.2
    urllib3==2.0.2
    webdriver-manager==3.8.6
    wsproto==1.2.0

    當然我這台安裝的所有package並不代表我這一個project就會用到上述所有的package,但是我通常都不會去測試,畢竟一個package也沒多大,也才幾MB而已,多裝幾個也沒關係。
    關於如何優化,我之後有空會再寫一篇。

    現在project有requirements.txt了,那要如何使用呢?
    只要從cmd,cd進入該資料夾並輸入

    pip install -r requirements.txt

    pip就會自動安裝上述的package了,至於版本號想要更改的話,只要更改==就可以了,請參考下表。

    RequirementDescription
    fooany version of foo
    foo>=5any version of foo, above or equal to 5
    foo>=5.6any version of foo, above or equal to 5.6
    foo==5.6.1exact match
    foo>5foo-5 or greater, including minor and patch
    foo>5, <5.7foo-5 or greater, but less than foo-5.7
    foo>0, <5.7any foo version less than foo-5.7
    https://iscompatible.readthedocs.io/en/latest/

    參考資料:
    https://iscompatible.readthedocs.io/en/latest/
    https://tech.gjlmotea.com/2020/04/pythonrequirementstxt.html


  • 收益平準金

    收益平準金

    鑒於最近5/17日00878除息,有人說在除息日之前買進這檔股票,其實領到的錢都是自己的收益平準金而已,然而我發現連我自己也不知道什麼是所謂的收益平準金,所以我就想來寫這一篇文章。

    收益平準金最主要的功能在於保障舊股東的權益,避免舊股東的權益因為新股東的加入而被稀釋收入。

    而之所以會有這樣的情況發生主要是因為ETF的除權息日期與成分股的配息日期不同,以0050為例,假設0050有50%的台積電,而台積電在12/15除息,0050在1/30除息。假設台積電在12月時宣布配30元現金股利,當日現金殖利率7.5%。而有些人未能參加到台積電的除息,所以決定大量購買0050,因為台積電配息配的好,0050肯定也不會差,畢竟0050有一半都是台積電。

    假設在台積電公布配息之前,0050的規模是2500億,在台積電公布之後,0050總共能夠拿到2500*50%*7.5%=9.375億的現金股利。但是大量新股東開始買入之後,0050的規模變成5000億,這樣在配息的時候還是用9.375億來配。

    也就是說原本每位股東能夠分配到的收益(ROE)是0.375%,在新股東買入之後,每個人能夠分配到的收益就變為0.1875%了。這些新股東,沒有在除息日之前持有台積電,卻還是能夠拿到台積電的配息,這樣對於從一開始就持有0050的股東來說是非常不公平的。

    所以收益平準金是如何運作的呢?
    以上述例子為例,當除息完後新加入的股東要將投入金額的0.375%當作收入平準金保管起來,剩下的錢才會拿去投資,假設新加入的股東投入10萬,那其中的375元會當作收入平準金保管起來,不會拿去買股票,剩下的99625元才會拿去投資,這樣等到1/30在配息的時候新股東同樣是拿到0.375%的股息,但是這些股息其實就是自己存進去的錢而已。
    而這樣對於舊股東而言,並沒有因為新股東的加入來讓他們的收益下降

    Q1:所以有收益平準金制度的ETF在成份股除權息之後就不能買了嗎?

    A1:看情況,其實收益平準金跟股息一樣,重點不是在配多少股利,重點在於配完股利之後有沒有辦法填息。所以就算配發股息的時候是左手給右手,只要填息的話實際上就是有賺。所以最終還是回到判斷價值。

    Q2: 收益平準金有甚麼缺點嗎?

    A2: 收益平準金的缺點在於,因為新股東加入時必須要先將一部份的錢當作收益平準金存起來而不是全部拿去投資,這樣就會降低收益。

    source: https://fatnerdstock.com/2022/12/11/income_balance/#t-1671037156614

    參考資料:

    https://www.herishare.com/dividend-balanced/

    https://fatnerdstock.com/2022/12/11/income_balance/#t-1671037156614


  • 貨重分配之計算

    Table of Contents

    例題一


    某船之載重10,000噸,裝有150噸淡水,1,000噸油料,300噸補給,今欲裝廢紙(S.F.=110立方呎/噸),該船四個艙容積:No.1: 152000立方呎,No.2: 157000立方呎,No.3: 131000立方呎,No.4: 103000立方呎。
    試問該船可裝多少貨物?如何裝?

    船可載貨物重量= 10000-150-1000-300=8550噸
    船可載貨物容積= 152000+157000+131000+103000=543000立方呎
    接下來就是比看看哪一個比較小,廢紙的S.F.(積載因素)是110立方呎/噸,代表一噸的廢紙會占用110立方呎的空間。所以8550噸可以裝8550*110=940500立方呎的廢紙。
    所以就算把4個艙都裝滿廢紙重量也不會滿載。
    所以就要用總容積回算噸數,總共可以裝543000/110=4936.4噸的廢紙。裝法就是四個艙都滿艙

    例題

    承上題,如果改裝小麥(S.F=53),請問可以裝多少? 如何裝?

    船可載貨物重量= 10000-150-1000-300=8550噸
    船可載貨物容積= 152000+157000+131000+103000=543000立方呎
    與上題手法相同,540000/53=10245.3噸,代表如果把所有貨艙容積填滿小麥的話,重量總共是10245.3噸,很明顯已經超過船的載重了。所以我們最多只能收8550噸的小麥,至於要怎麼裝取決於船舶穩定度。通常我們希望艉重1,所以會先將2、3、4艙裝滿,之後再裝第一艙。
    2、3、4艙裝滿分別可以裝157000/53=2962噸、131000/53=2472噸、103000/53=1943噸。
    最後第一艙裝8550-2962-2472-1943=1173噸。



    1. 因為船在航行時艏吃水會增加,而且艏重的話螺旋槳會空轉打不到水無法前進。 []

  • 為什麼越大的貨櫃能載的重量卻沒有增加?

    容積(FTQ)載重量(TNE)
    TEU(20呎)105018
    FEU(40呎)205019
    HQ (40呎超高櫃)230021
    Jumbo(45呎加長加高櫃)260021
    參考國際貿易實務33版-蔡緣 p.165
    *TNE 是公噸

    貨櫃的規格有20呎、40呎、45呎,高度有8.5、9.5呎,從圖中可以看到越大越高的貨櫃載重量卻幾乎沒有改變,這是為什麼呢?

    主要有兩個原因:

    1.貨車煞不住
    這是因為貨櫃通常會上貨車或拖車,全連結車最多也才42公噸1,如果40呎貨櫃的載重量到達36公噸這樣加起來78公噸,煞停距離可能需要100m以上。

    2.貨櫃結構不夠強
    我的老師曾經遇過有人把大理石裝入貨櫃中並謊報重量,當工人把貨櫃吊起來的時候,大理石就直接從貨櫃的底部掉了出來,非常危險。

    當然還是會有需要裝運超重的貨物的需求,此時就需要特製的貨櫃(超重櫃),並且要告知船公司。

    1. 道路交通安全規則第38條 []

  • CBM、MTQ、INQ、FTQ 在國際貿易中的意思

    在國際貿易中,如果要計算一個貨物佔了多少空間,我們就會用MTQ、INQ、FTQ來表示。

    貨物裝入貨櫃時常用MTQCBM,各自代表Meter CubeCubic Meter,兩者都是立方公尺(m3)的意思。所以1立方公尺又稱1才積噸。

    MTQ=CBM=立方公尺(m3)

    INQFTQ為英制單位
    =Inch CubeFoot Cube
    =立方吋(in³)立方呎(ft3)

    以下是各種不同類型貨櫃的容積與載重量:

    容積(CBM)容積(FTQ)載重量(TNE)
    TEU(20呎)33.2105018
    FEU(40呎)67.7205019
    HQ (40呎超高櫃)76.3230021
    Jumbo(45呎加長加高櫃)86260021
    參考國際貿易實務33版-蔡緣 p.165、萬海航運。
    *TNE 是公噸



  • 科氏力(Coriolis Force)

    科氏力算是航海的一個重大課題,但是講真的我從來沒有真正弄懂過什麼是科氏力,所以這邊我會嘗試用盡可能簡單、能夠理解的方式去解釋。

    首先一般的解釋是說地球自轉讓地球上任何地方都有一個角速度,而緯度越低的地方切線速度越快,越高的地方切線速度越慢。所以當你從赤道往高緯度發射一個砲彈的時候它會有兩個速度,一個是向北的垂直速度,一個是它本身在赤道獲得的切線速度(465.1 m/s)。假設高緯地區的切線速度為(100m/s),砲彈因為(西向東的)速度比它快,所以砲彈會偏向東邊。

    向南也是一樣,從赤道往南極發射,砲彈同樣會偏向東邊,所謂北半球偏右,南半球偏左只是因為你在北半球從赤道往北看東邊在你的右邊,而南半球從赤道往南看東邊在你左邊而已,沒什麼特別意思。

    但是這個解釋只有解釋一半,這只有解釋向北向南時的偏移,但實際上向東向西也會有偏移。這有個相關的現象稱為Eötvös effect

    來源:https://www.youtube.com/watch?v=kCbMKSZZO9w

    當你順著地球自轉的方向(由西向東)走,也就是向東前進時,你的切線速度=你的速度+地球自轉的切線速度,也就是說你的切線速度增加了,我們知道當角速度越大時,離心力越大,而你感覺你的重量會變輕。反之以相反方向,也就是向西前進時,切線速度下降,重量會變重。

    上述是在赤道時的情況,只會單純造成重量上升與下降,接下來討論北半球的情況。跟剛剛一樣假設你向東發射了一枚砲彈,如剛才所述切線速度增加,離心力增大,我們就想像你拿一個繩子連接硬幣開始甩,當你速度增加時,離心力增大,如果手抓不住了繩子的半徑就變長。而砲彈也是一樣,速度一快,科氏力就會想辦法讓半徑變長,也就會向南偏,因為砲彈是繞著自轉軸走,而赤道就是離自轉軸最遠的地方。

    當你在北半球向西走,也就是切線速度減少,離心力減小,感覺就會有一個力量向內,就會向北走,讓自轉軸跟砲彈之間的半徑縮小。

    Source:https://www.youtube.com/watch?v=vlLNFlJ-m3g&t=1s

    基本上我是這樣理解的,如果有任何錯誤請指正,這在航海當中是非常重要的觀念,像是磁羅經、電羅經、氣象學都一定會用到這些觀念,雖然只要背北半球順時針,南半球逆時針就解決了。


  • 地轉風(geostrophic wind)、非地轉風(ageostrophic wind,gradient wind)

    風在地球上移動時會受到三種力:

    一、壓力梯度力(pressure-gradient force):壓力高的地方會跑向壓力低的地方,也是風的成因。

    二、科氏力、地轉偏向力(Coriolis Force)

    三、摩擦力:空氣與地面之間有磨擦力,但是空氣與海洋之間的摩擦力較小,所以可以忽略。

    所謂的地轉風(geostrophic wind)就是指壓力梯度力與科氏力相等時,風會水平沿著等壓線(isobar)移動的現象

    source:地轉風–香港天文台

    紅色的部分很好理解,就是高壓到低壓所造成的力。而科氏力我有詳細講解過,這邊不再贅述。可以看見移動方向是平行於等壓線的,這種情況非常罕見。

    非地轉風(ageostrophic wind,gradient wind)指的就是風移動方向不與等壓線平行,其實這種風更接近於現實情況。

    source:地轉風–香港天文台

    如果把摩擦力考慮進來就可以發現,風移動的方向並非與等壓線平行。所以地轉風通常會在海上被發現、使用,因為海洋與大氣的摩擦力比較小。


  • 蒲福氏風級

    蒲福氏風級,又稱蒲氏風級表,下表來自Wiki

    蒲福
    風級
    風速描述風力術語浪高
    (米)
    海上情況陸上情況

    (kt)
    公里/小時
    (km/h)
    公尺/秒
    (m/s)
    臺灣[3]WMO[6]
    00~10~20~0.2無風Calm0~0.1無浪靜,煙直向上
    11~32~60.3~1.5軟風Light air0.1~0.3平靜/無浪/海平:波紋柔和,如鱗狀,波峰不起白沬。煙能表示風向,風向標不轉動
    24~67~121.6~3.3輕風Light breeze0.3~0.5平靜/小浪/海平至有微波:小波相隔仍短,但波浪顯著;波峰似玻璃,光滑而不破碎。人面感覺有風,樹葉有微響,風向標轉動
    37~1013~193.4~5.4微風Gentle breeze0.5~0.9小浪/微波:小波較大,波峰開始破碎,波逢間中有白頭浪。樹葉及小樹枝搖動不息,旗展開
    411~1620~305.5~7.9和風Moderate breeze0.9~1.25小至中浪/微波至小浪:小波漸高,形狀開始拖長,白頭浪頗頻密。吹起地面灰塵和紙張,小樹枝搖動。
    517~2131~408.0~10.7清風Fresh breeze1.25~2.5中浪/小至中浪:中浪,形狀明顯拖長,白頭浪更多,間中有浪花飛濺。有葉的小樹整棵搖擺;內陸水面有波紋。
    622~2741~5110.8~13.8強風Strong breeze2.5~3大浪/中浪:大浪出現,四周都是白頭浪,浪花頗大。大樹枝搖擺,持傘有困難,電線有呼呼聲。
    728~3352~6213.9~17.1疾風Near gale3~4大浪至非常大浪:海浪突湧堆疊,碎浪之白沬,隨風吹成條紋狀。全樹搖動,人迎風前行有困難。
    834~4063~7517.2~20.7大風Gale4~6非常大浪至巨浪:接近高浪,浪峰碎成浪花,白沬被風吹成明顯條紋狀。小樹枝折斷,人向前行阻力甚大。
    941~4776~8720.8~24.4烈風Strong Gale6~9巨浪/狂浪/猛浪:高浪,泡沫濃密;浪峰捲曲倒懸,頗多白沬。煙囪頂部移動,木屋受損。
    1048~5588~10324.5~28.4狂風Storm9~11巨浪至非常巨浪/狂浪至狂濤:非常高浪。海面變成白茫茫,波濤衝擊,能見度下降。大樹連根拔起,建築物損毀。
    1156~63104~11728.5~32.6暴風Violent storm11~14非常巨浪至極巨浪/狂濤:波濤澎湃,浪高可以遮掩中型船隻;白沬被風吹成長片於空中擺動,遍及海面,能見度減低。陸上少見,建築物普遍損毀。
    12≧64
    64~71[a]
    ≧118
    118~132[a]
    ≧32.7
    32.7~36.9[a]
    颶風Hurricane≧14極巨浪/狂濤至非常巨浪:海面空氣中充滿浪花及白沬,全海皆白;巨浪如江傾河瀉,能見度大為降低。陸上少見,建築物普遍嚴重損毀。
    13[a]72~80133~14937.0~41.4不適用>14極巨浪/狂濤/非常巨浪:海面巨浪滔天,不堪設想。陸上難以出現,如有必成災禍。
    14[a]81~89150~16641.5~46.1不適用>14極巨浪/狂濤/非常巨浪:海面巨浪滔天,不堪設想。陸上難以出現,如有必成災禍。
    15[a]90~99167~18446.2~50.9不適用>14極巨浪/狂濤/非常巨浪:海面巨浪滔天,不堪設想。陸上難以出現,如有必成災禍。
    16[a]100~108185~20151.0~56.0不適用>14極巨浪/狂濤/非常巨浪:海面巨浪滔天,不堪設想。陸上難以出現,如有必成災禍。
    17[a]109~119202~21956.1~61.2不適用>14極巨浪/狂濤/非常巨浪:海面巨浪滔天,不堪設想。陸上難以出現,如有必成災禍。
    17以上[a]≧120≧220≧61.3不適用>14極巨浪/狂濤/非常巨浪:海面巨浪滔天,不堪設想,可掃平一切。陸上極難出現,毀滅性破壞。
    source: 蒲福式風級

    蒲氏風級的估算:

    可以用累算的方式來換算節數,如果要換算公尺/秒就直接乘以2(因為1海浬=1852公尺)。
    如:4級風=1+2+3+4=10節/小時=20公尺/小時
    11級風=(1+11)11/2=66節/小時=132公尺/小時

    這都只是大概而已,可以對照上面看到11級風的誤差就很大了。

    台灣氣象局對於颱風強度的區別:

    我的記法是只記64、100兩個數字。


  • 船舶噸位

    船舶排水量 (Ship’s Displacement)

    排水量顧名思義就是船舶下水之後被排開水的重量,指的就是船的重量,所以排水量包含船本身的重量,噸位則不包含船舶本身。單位通常是公噸。海水密度大約為1025 kg/m³,而淡水的密度則約為1000 kg/m³,但是在不同的地方下水船舶所排開水的重量不變,所以船舶排水量並不會隨水的密度而改變

    排水量=船的重量


    1. 空船排水量、輕載排水量(Light Displacement):

    *註2我理解為只考慮永久固定在船上的器械時的排水量,可以想像成新船下水時的排水量。也就是說不考慮消耗性的(如:燃油、水、食物),或是非永久的(如: 船員、貨物)的排水量。 跟據NHHC1 商船和軍艦的輕載排水量算法有些許差別2,軍艦只算機器的乾重,商船則包含鍋爐在燒時的油和水。*註3
    在殺船時會用空船排水量來估計鋼鐵的重量3


    2. 滿載排水量(Full Load Displacement):

    船舶滿載時的排水量。要看是否滿載要看載重線標誌。


    噸位(Tonnage)

    噸位是容量單位,但GT和NT沒有單位

    1.總噸位(Gross Tonnage , GT): 船上所有圍蔽空間型容積的函數((IMO – International Convention on Tonnage Measurement of Ships : “The gross tonnage is a function of the moulded volume of all enclosed spaces of the ship.”))
    像是巴拿馬運河、蘇伊士運河會看GT的大小來決定拖船的價格。

    蘇伊士運河使用SCNT來計算

    2.淨噸位(Net Tonnage, NT)

    3.載重噸位(Deadweight Tonnage, DWT)
    這個比較奇怪,明明是噸位卻是重量。載重噸位指的是一艘船能承載的最大重量 4。它包括船上的一切東西,如:貨物、油料、旅客、船員、壓艙水、航海儀器。跟排水量不同的是排水量有計算船體本身的重量

    載重頓位跟滿載排水量的差別就在於一個有包含船舶重量,一個沒有。

    載重頓位=滿載排水量-空船排水量,這個公式很好懂。


    註1: 在教育部編撰的貨物作業航輪教材編撰計畫中第二版p.14中寫到

    公噸或歐陸噸(Metric or Continental Tons)

    但是我在網路上並沒有查到任何Continental Tons和歐陸噸的用法,國家教育研究院的樂詞網中也沒有任何結果,所以我認為這是不正確的。
    再來美國國家標準暨技術研究院(NIST)建議使用Metric Ton而不是Tonne5,因為在美國通常除了公噸還有長噸短噸,而只單說Tonne容易讓人不確定是在講哪一個單位,所以建議使用Metric Ton。

    註2: 教育部編撰的貨物作業航輪教材編撰計畫中第二版p.14中寫到

    空船排水量(Light Ship Displacement)

    實際上是翻譯錯誤,沒有Light Ship Displacement這個名詞,正確翻譯為light displacement

    註3:關於空船排水量有各種不同的說法,主要的爭議在於要不要包括鍋爐用水,Military Sealift Command(美國軍事海運司令部)中有包括鍋爐用水,其他來源有的同意、有的不同意。

    參考資料:

    Deadweight Tonnage | Shipa Freight

    船的噸位 (csbcnet.com.tw)

    排水量 – 維基百科,自由的百科全書 (wikipedia.org)

    1. Nomenclature of Naval Vessels (navy.mil) []
    2. Naval and merchant practice differs in one particular; in the former the machinery weights are dry, while the merchant light condition includes the water and oil in the machinery with boilers at steaming level. []
    3. 排水量 – 維基百科,自由的百科全書 (wikipedia.org) []
    4. Deadweight tonnage – Wikipedia []
    5. MIST-Mass []

  • WordPress 2FA login

    WP 2FA – Two-factor authentication for WordPress By WP White Security

    我用的是這個plugin,安裝完照著步驟走就OK了。

    2FA (2 Factor Authentication) 兩步驟身分驗證可以大幅增加網站的安全性,這也是我覺得增加安全性最簡單的方法。