def main(): target_date = get_today_as_str() result = utils.structured_data_utils.get_structed_data_from_date( target_date) result = sort_by(result, "날짜") result = filter_remove_not_equals(result, "종류", "주식") result = filter_remove_equals(result, "수량", "") first_date = str2date(get_first_date(result)) print_annual_profit_rate(result, first_date, datetime.date.today())
def main(): target_date_as_string = get_today_as_str() # target_date_as_string = "2019-03-31" structured_data = structured_data_utils.get_structed_data_from_date( get_today_as_str()) structured_data = sort_by(structured_data, "날짜") for p2pname in [ "어니스트펀드", "테라펀딩", "피플펀드", "투게더", ]: print(p2pname) print_information(structured_data, target_date_as_string, "p2p", p2pname) print() # print("Total") # print_information(strcted_data, target_date_as_string, "p2p") print()
def main(): target_date = get_today_as_str() result = utils.structured_data_utils.get_structed_data_from_date(target_date) result = sort_by(result, "날짜") result = filter_remove_not_equals(result, "종류", "주식") result = filter_remove_equals(result, "수량", "") # result = filter_remove_not_equals(result, "종목", "아프리카TV") # result = filter_remove_not_equals(result, "종목", "시디즈") # result = filter_remove_not_equals(result, "종목", "엔에이치엔") # result = filter_remove_not_equals(result, "종목", "이마트") result = filter_remove_not_equals(result, "종목", "카카오") do_something(result, "2019-01-01", "2019-09-01")
def main(): target_date = get_today_as_str() result = utils.structured_data_utils.get_structed_data_from_date( target_date) result = sort_by(result, "날짜") result = filter_remove_not_equals(result, "종류", "주식") # result = filter_remove_not_equals(result, "종목", "NAVER") # result = filter_remove_not_equals(result, "종목", "SK텔레콤") # result = filter_remove_not_equals(result, "종목", "tiger 200 it") # result = filter_remove_not_equals(result, "종목", "카카오") # result = filter_remove_equals(result, "가격", "") for idx, each_row in enumerate(result.data): each_price = safe_int(result.get_value_with_label(idx, "가격")) quantity = safe_int(result.get_value_with_label(idx, "수량")) result.data[idx][result.get_label_idx("총가격")] = each_price * quantity print(result.data[idx][result.get_label_idx("총가격")]) average_balance = get_average_balance(result, target_date) # print(average_balance) start_date_as_string = get_start_date(result) days = date_minus(target_date, start_date_as_string) current_profit = get_stock_profit(result, target_date) annual_interest_rate = get_annual_interest_rate(current_profit, average_balance, days) print_profits(average_balance=average_balance, current_profit=current_profit, start_date=start_date_as_string, target_date=target_date, days=days, annual_interest_rate=annual_interest_rate)
def do_something(structured_data, from_date, to_date): if type(from_date) == datetime.date: pass stocks = {} single_stock_queue = {} earned_profit_sum = 0 balance_sum = 0 average_balance = 0 for idx in range(len(structured_data.data)): count = int(structured_data.get_value_with_label(idx, "수량")) price = int(structured_data.get_value_with_label(idx, "가격")) cur_date = structured_data.get_value_with_label(idx, "날짜") name = structured_data.get_value_with_label(idx, "종목") if name not in stocks: stocks[name] = Stock(name, 0, 0) if count > 0: price_sum = float(stocks[name].price) * stocks[name].count + float(price) * count count_sum = stocks[name].count + count stocks[name].price = price_sum / count_sum stocks[name].count = count_sum else: count_sum = stocks[name].count + count stocks[name].count = count_sum if from_date < cur_date < to_date: print(f"[{cur_date}]: [{stocks[name]}]") if count > 0: if name not in single_stock_queue: single_stock_queue[name] = queue.Queue() for _ in range(count): single_stock_queue[name].put(SingleStock(name, price, cur_date)) elif count < 0: for each in range(-count): poped = single_stock_queue[name].get() if from_date < poped.date < to_date: security_fee = structured_data.get_value_with_label(idx, "수수료") if security_fee: security_fee = float(security_fee) else: security_fee = 0 duration_days = date_minus(cur_date, poped.date) + 1 balance_sum += poped.price average_balance += float(poped.price) * duration_days / 365 print(f"poped.price=[{poped.price}]], duration_days=[{duration_days}], balance_sum=[{balance_sum}]") tax_rate = get_tax_rate(name, cur_date) earned_profit = price - poped.price - price * tax_rate - security_fee print(f"[{poped.date}] [{poped.name}]: [{price}] - [{poped.price}] - [{price * tax_rate}] - [{security_fee}] = [{earned_profit}]") earned_profit_sum += earned_profit value_profit_sum = 0 for key, each_queue in single_stock_queue.items(): for idx in range(each_queue.qsize()): each = each_queue.get() if from_date < each.date < to_date: duration_days = date_minus(get_today_as_str(), each.date) + 1 balance_sum += each.price average_balance += float(each.price) * duration_days / 365 curr_price = get_price_data(each.name, get_today()) tax_rate = get_tax_rate(each.name, get_today()) value_profit = curr_price - each.price - curr_price * tax_rate print(f"[{each.date}] [보유종목] - [{each.name}]: 현재가[{curr_price}] - 구매가[{each.price}] - 세금[{curr_price * tax_rate}] = [{value_profit}]") value_profit_sum += value_profit print(f"earned_profit_sum = [{earned_profit_sum}]") print(f"value_profit_sum = [{value_profit_sum}]") print(f"profit_rate = ([{earned_profit_sum}] + [{value_profit_sum}]) / [{balance_sum}] = [{(earned_profit_sum + value_profit_sum) / balance_sum}]") print(f"annual_profit_rate = [{(earned_profit_sum + value_profit_sum) / average_balance}]")