Пример #1
0
 def net_assets_html(self):
     ast_str = self.net_assets()
     if ast_str.endswith('B'):
         return format.green(ast_str)
     if ast_str.endswith('M'):
         ast_value = float(ast_str[:-1])
         if ast_value <= 100:
             return format.red(ast_str)
         if ast_value > 100 and ast_value <= 300:
             return format.orange(ast_str)
         return format.green(ast_str)
     return format.red(ast_str)
Пример #2
0
 def rsi_html(self):
     rsi = self.rsi_value()
     if rsi >= 65:
         return format.red(rsi)
     if rsi <= 30:
         return format.green(rsi)
     return format.orange(rsi)
Пример #3
0
 def ma_rally_days_html(self):
     days = self.ma_rally_days()
     if days >= 20:
         return format.red(days)
     if days <= 5:
         return format.orange(days)
     return format.green(days)
Пример #4
0
 def relative_volume_html(self):
     rel_vol = self.relative_volume()
     if rel_vol > 1.2:
         return format.green(rel_vol)
     if rel_vol <= 1.2 and rel_vol >= 0.8:
         return format.orange(rel_vol)
     return format.red(rel_vol)
Пример #5
0
 def ma_rally_gain_html(self):
     gain = self.ma_rally_gain() * 100
     gain_str = str(gain) + '%'
     if gain <= 3:
         return format.green(gain_str)
     if gain > 3 and gain < 7:
         return format.orange(gain_str)
     return format.red(gain_str)
Пример #6
0
 def treynor_html(self, value_str):
     if value_str == 'N/A':
         return value_str
     value = misc.to_float_value(value_str)
     if value > 5:
         return format.green(value_str)
     if value <= 0:
         return format.red(value_str)
     return format.orange(value_str)
Пример #7
0
 def beta_html(self, value_str):
     if value_str == 'N/A':
         return value_str
     value = misc.to_float_value(value_str)
     if value >= 1.25:
         return format.red(value_str)
     if value >= 1.05:
         return format.orange(value_str)
     return format.green(value_str)
Пример #8
0
 def yearly_perf_html(self, value_str):
     if value_str == 'N/A':
         return value_str
     value = misc.to_float_value(value_str)
     if value >= 10:
         return format.green(value_str)
     if value >= 3:
         return format.orange(value_str)
     return format.red(value_str)
Пример #9
0
 def fund_pe_html(self):
     pe = self.fund_pe()
     pe_str = self.holdings_dict.get('Price/Earnings', 'N/A')
     if pe == 'N/A':
         return format.orange(pe)
     if pe >= 40:
         return format.red(pe_str)
     if pe >= 30 and pe < 40:
         return format.orange(pe_str)
     return format.green(pe_str)
Пример #10
0
 def expense_ratio_html(self):
     exp_ratio = self.expense_ratio()
     if exp_ratio == 'N/A':
         return format.orange(exp_ratio)
     expense_ratio = misc.to_float_value(exp_ratio)
     if expense_ratio >= 0.5:
         return format.red(exp_ratio)
     if expense_ratio >= 0.4:
         return format.orange(exp_ratio)
     return format.green(exp_ratio)
Пример #11
0
 def perf_trend_html(self, perf_rate):
     if perf_rate < -0.02:
         return format.red(perf_rate)
     if perf_rate > 0.1:
         return format.green(perf_rate)
     return format.orange(perf_rate)
Пример #12
0
 def ma_diff_trend_html(self):
     if self.ma_diff_trend() >= 0:
         return format.green('&#8679;')
     return format.orange('&#8681;')
Пример #13
0
 def change_html(self):
     change = self.change()
     change_str = str(change) + '%'
     if change >= 0:
         return format.green(change_str)
     return format.red(change_str)
Пример #14
0
def gen_left_td(symbol_obj, 
                relative_rank_y2_dict,
                relative_rank_y_dict):
    finviz_url = constants.finviz_quote_url % symbol_obj.symbol
    html_str = '<tr><td align=\"left\" valign=\"top\" width=\"28%\">'
    html_str = '%s<strong><a href=\"%s\">%s</a></strong>' % (
                    html_str, finviz_url, symbol_obj.symbol)
    
    if symbol_obj.is_pick_today():
        html_str = "%s (&#9733; %s &#9733;)" % (html_str, format.green("PoD"))
        
    if symbol_obj.is_high_volume():
        html_str = "%s (&#9889; %s &#9889;)" % (html_str, format.orange("HV"))

    if symbol_obj.price_below_ma200():
        html_str = "%s (&#9760; %s &#9760;)" % (html_str, format.red("B-200"))
    elif symbol_obj.price_below_ma50():
        html_str = "%s (&#9785; %s &#9785;)" % (html_str, format.orange("B-50"))

    yahoo_url = constants.yahoo_holdings_url % symbol_obj.symbol    
    html_str = "%s<br><a href=\"%s\">%s</a>" %(
                    html_str, yahoo_url, symbol_obj.desc)

    html_str = "%s<br>%s: %s" %(html_str, 
                                "Change", 
                                symbol_obj.change_html())
    
    html_str = "%s<br>%s: %s" %(html_str, 
                                "RSI", 
                                symbol_obj.rsi_html())

    if symbol_obj.ma_rally_days() > 0:
        html_str = "%s<br>%s(%s): %s for %s days" %(
                        html_str,
                        "Ma_gain",
                        symbol_obj.ma_diff_trend_html(),
                        symbol_obj.ma_rally_gain_html(),
                        symbol_obj.ma_rally_days_html())
    else:
        html_str = "%s<br>%s(%s): %s" %(html_str, "Ma_diff",  
                                        symbol_obj.ma_diff_trend_html(),
                                        symbol_obj.ma_diff_ratio_html())

    html_str = "%s<br>%s: %s" %(
            html_str, "Trend Y/2",
            symbol_obj.perf_trend_html(symbol_obj.perf_trend_since_half_year()), 
            )
    
    if not symbol_obj.symbol in constants.sticky_dict:
        rank_change = relative_rank_y2_dict.get(symbol_obj.symbol, ('N/A', 'N/A'))[1]
        html_str = "%s (%s)" %(
            html_str, format.rank_change_html(rank_change)
            )

    html_str = "%s<br><u style=\"text-decoration-color: darkgray;\">%s: %s</u>" %(
            html_str, "Trend Year",
            symbol_obj.perf_trend_html(symbol_obj.perf_trend_since_year())
            )

    if not symbol_obj.symbol in constants.sticky_dict:
        rank_change = relative_rank_y_dict.get(symbol_obj.symbol, ('N/A', 'N/A'))[1] 
        html_str = "%s<u style=\"text-decoration-color: darkgray;\"> (%s)</u>" %(
            html_str, format.rank_change_html(rank_change)
            )
    
    html_str = "%s<br>%s: %s" %(html_str, 
                                "P/E", 
                                symbol_obj.fund_pe_html())

    beta = symbol_obj.five_year_beta()
    treynor = symbol_obj.five_year_treynor()
    html_str = "%s<br>%s: %s / %s" %(html_str, 
                                     "5YR-Beta-Treynor", 
                                     symbol_obj.beta_html(beta), 
                                     symbol_obj.treynor_html(treynor))
    
    
    html_str = "%s<br>%s: %s" %(html_str, 
                                "Assets",
                                symbol_obj.net_assets_html()
                                )
    
    html_str = "%s<br>%s: <b>%s</b>" %(html_str, 
                                       "Dividend", 
                                       symbol_obj.attr_dict['Dividend %'])
    
    html_str = "%s<br>%s: %s" %(html_str, 
                                "Expense Ratio", 
                                symbol_obj.expense_ratio_html())
    html_str += "</td>"
    return html_str
Пример #15
0
 def change_html(value):
     if value.startswith('-'):
         return format.red(value)
     return format.green(value)