港股即時

Economic Calendar

Thursday, July 26, 2018

財務報表透視

財務報表透視


種類

  • 綜合損益表
    • 利潤變化
    • 成本變化
    • 經盈效率
  • 現金流量表
    • 現金
    • 約當現金
  • 資產負債表
    • 資產 - 流動資產、基金及投資、固定資產、無形資產
    • 負債 - 流動負債、長期負債
    • 股東權益 - 股本、資本公債、保留盈餘
      • 流動資產 & 流動負債 反影償債能力
  • 權益變動表
    • 股權變動後之盈虧
    • 股利發放後之變動

閱讀重點

  1. 是否有賺錢  ( 綜合損益表)
  2. 賺錢來源是本業收入還是業外收入 (綜合損益表 + 現金流量表)
  3. 賺錢是現金收入還是賖帳收入 (現金流量表 +  資產負債表)
  4. 股東權益報酬率(綜合損益表 + 權益變動表)
  5. Earning Per Share
  6. 營業收入與同期比較
  7. 與同類型公司比較

五力分析

  • 財務結構
    • 負債佔資產比率 = 負債總額 / 資產總額
    • 長期資金佔固定資產比率 = (股東權益淨額 + 長期負債) / 固定資產淨額
  • 償債能力
    • 流動比率 = 流動資產 + 流動負債
    • 速動比率 = (流動資產 - 存貨 - 預付費用) / 流動負債
    • 利息保障倍數 = 所得稅及利息費用前純益 / 本期利息支出
  • 經營能力
    • 應收款項週轉率 = 銷貨淨額 + 各期平均應收款項餘額
    • 平均收現日數 = 365 / 應收款項週轉率
    • 存貨週轉率 = 銷貨成本 / 平均存貨額
    • 平均售貨日數 = 365 / 存貨週轉率
    • 固定資產週轉率 = 銷貨淨額 / 固定資產淨額
    • 總資產週轉率 = 銷貨淨額 / 資產總額
  • 獲利能力
    • 資產報酬率 = [稅後損益 + 利息費用  * (1 - 稅率)] / 平均資產總額
    • 股東權益報酬率 = 稅後損益 / 平均股東權益淨額
    • 純益率 = 稅後損益 / 鎖貨淨額
    • 每股盈餘 = (稅後淨利 - 特別股股利) / 加權平均已發行股數
  • 現金流量
    • 現金流量比率 = 營業活動淨現金流量 / 流動負債
    • 現金流量允當比率 = 最近五年度營業活動淨現金流量 / 最近五年度(資本支出+存貨增加額+現金股利)
    • 現金再投資比率 = (營業活動淨現金流量 -  現金股利) / (固定資產毛額 + 長期投資 + 其它資產 + 營運資金)

杜邦方程式  Dupont Equation

股東權益報酬表

股本回報率 (Return On Equity)組成

  • 獲利能力 : 稅後純益率 = (稅後收益 / 營業收入)
  • 資產運用效率: 總資產週轉率 = (收業收入 / 總資產)
  • 財務槓桿: 權益乘數 = (總資產/股東權益) = (1+槓桿比率)
ROE = (稅後收益 / 營業收入) * (收業收入 / 總資產) * (總資產/股東權益)

ROE 來自稅後純益率

  • ROE 來自稅後純益率 ,代表股東的報酬都來自本業的經營能力。可能是產品技術優良無可取代,或者使用經營網路行銷省下許多管銷費用。
  • 只要加強資產的運用效率,例如:企業瘦身,把閒置資產變賣後減資,就能提升 ROE

ROE來自總資產周轉率

  • ROE 來自總資產周轉率公司可能用少少的資產就能大量製造產品。
  • 或者行銷能力好可以賣出很多產品
  • 只要一有擴廠的消息獲利可能就要馬上開始成長

ROE來自權益乘數

  • 一間公司產品技術沒有特別突出淨、利率很普通、資產運用效率也沒有特別好、總資轉周轉率也跟其他公司差不多,但ROE 會跟另外兩間公司一樣,完全是因為大量使用槓桿。
  • 代表這間公司跟同業相比,借了很多錢,才能跟其他兩間優等生一樣

Wednesday, March 28, 2018

Python *Args and ** kwargs

How to use *args and **kwargs
https://www.digitalocean.com/community/tutorials/how-to-use-args-and-kwargs-in-python-3



Let us first understand what are positional arguments and keyword arguments. Below is an example of function definition with Positional arguments.
def test(a,b,c):
     print(a)
     print(b)
     print(c)

test(1,2,3)
#output:
1
2
3
So this is a function definition with positional arguments. You can call it with keyword/named arguments as well:
def test(a,b,c):
     print(a)
     print(b)
     print(c)

test(a=1,b=2,c=3)
#output:
1
2
3
Now let us study an example of function definition with keyword arguments:
def test(a=0,b=0,c=0):
     print(a)
     print(b)
     print(c)
     print('-------------------------')

test(a=1,b=2,c=3)
#output :
1
2
3
-------------------------
You can call this function with positional arguments as well:
def test(a=0,b=0,c=0):
    print(a)
    print(b)
    print(c)
    print('-------------------------')

test(1,2,3)
# output :
1
2
3
---------------------------------
So we now know function definitions with positional as well as keyword arguments.
Now let us study the '*' operator and '**' operator.
Please note these operators can be used in 2 areas:
a) function call
b) function definition
The use of '*' operator and '**' operator in function call.
Let us get straight to an example and then discuss it.
def sum(a,b):  #receive args from function calls as sum(1,2) or sum(a=1,b=2)
    print(a+b)

my_tuple = (1,2)
my_list = [1,2]
my_dict = {'a':1,'b':2}

# Let us unpack data structure of list or tuple or dict into arguments with help of '*' operator
sum(*my_tuple)   # becomes same as sum(1,2) after unpacking my_tuple with '*'
sum(*my_list)    # becomes same as sum(1,2) after unpacking my_list with  '*'
sum(**my_dict)   # becomes same as sum(a=1,b=2) after unpacking by '**' 

# output is 3 in all three calls to sum function.
So remember
when the '*' or '**' operator is used in a function call -
'*' operator unpacks data structure such as a list or tuple into arguments needed by function definition.
'**' operator unpacks a dictionary into arguments needed by function definition.
Now let us study the '*' operator use in function definition. Example:
def sum(*args): #pack the received positional args into data structure of tuple. after applying '*' - def sum((1,2,3,4))
    sum = 0
    for a in args:
        sum+=a
    print(sum)

sum(1,2,3,4)  #positional args sent to function sum
#output:
10
In function definition the '*' operator packs the received arguments into a tuple.
Now let us see an example of '**' used in function definition:
def sum(**args): #pack keyword args into datastructure of dict after applying '**' - def sum({a:1,b:2,c:3,d:4})
    sum=0
    for k,v in args.items():
        sum+=v
    print(sum)

sum(a=1,b=2,c=3,d=4) #positional args sent to function sum
In function definition The '**' operator packs the received arguments into a dictionary.
So remember:
In a function call the '*' unpacks data structure of tuple or list into positional or keyword arguments to be received by function definition.
In a function call the '**' unpacks data structure of dictionary into positional or keyword arguments to be received by function definition.
In a function definition the '*' packs positional arguments into a tuple.
In a function definition the '**' packs keyword arguments into a dictionary.