여기 참조

 

요점정리

채권금리 오른다 > 주식시장활황으로 채권매력 떨어져서 금리높아야 거래된다.

채권금리 떨어진다. > 불황이나 금융시장 등으로 채권의 인기가 올라갈때.

즉 채권금리는 투자심리랑 연동된다라고 외워두면 좋을듯하다.

 

대략은 위와 같고

장/단기채를 분리해서 생각하거나, 기준금리가 너무 올라서 채권보다도 현금에 돈이 몰리는 경우등에는 추가판단 필요

 

금리: 일반적으로 한 국가의 중앙은행에서 결정

채권: 돈이 필요한 회사나 국가등에서 돈을 빌리고 이자가 적힌 증서를 주는 것

국채: 국가가 발행하는 채권이며, 국가가 돈이 필요할때 발행한다는걸 이해하는게 중요(ex 양적완화).

양적완화: 국가가 돈이 필요해서 발행한 채권을 중앙은행에서 사주는 형태(APP)로 진행. (국가는 돈이 쌓이고, 은행에는 채권이 쌓인다)

채권이자: 연수익률3% 3년 만기 국채라고 하면, 이 채권을 100만원 어치 구입한다면 3만원의 연이자를 받게 되며, 만기시에는 100만원 액면가를 돌려 받게됨

표면금리(=쿠폰금리): 위의 연수익률3% 처럼 고정되어 변하지 않는 채권의 금리.

채권가격: 만기보유시에는 금리영향이 없음이 자명하나(3%짜리면 3%지급등), 만기전에 채권을 양도할 수 있고 이때의 가격을 의미한다.

채권금리(=채권수익률): 표면금리가 아닌 거래로 인해 바뀌는 수익률. 예를 들어 5%표면금리 1년물 국채 100달러가 있는데, 주식시장이 활황으로 채권의 매력이 떨어져서 95달러로 거래가 됐다고 하면, 이걸 산 사람은 95달러에 사서 105달러를 만기에 받게 되므로 105/95 = 110.5% 가 되어 10.5%의 수익률을 올리게 되고 이 10.5%를 채권금리라고 표현하는 것. 채권가격과 반대방향임에 주의! (즉 채권가격이 오른다는 것과 채권금리가 오른다는건 정 반대의 이야기!)

미국 10년물국채: 미국 국채 금리가 올랐네 할때 이걸 뜻한다고함(가장 대표가 되는 국채)

 

정리

채권금리가 떨어지는 경우 (장/단기채 포함)
  • 대개 투자자들이 안정적이고 보수적인 자산에 대한 수요가 높아진 것.
  • 이는 일반적으로 경제적인 불황이나 금융시장의 불안에 대한 우려로 인해 발생하는 경향이 있음.
 
기본상식
  • 채권은 달러 < 채권 < 주식 순으로 위험자산으로 볼때 중간에 위치한다.
    • 달러 대비해서는 위험자산이고, 주식 대비해서는 안전 자산이다.
10년물 국채금리가 오르는 이유
  • 긍정: 기준금리가 떨어지고 투자심리가 상승한 경우(장기적 경기전망이 좋아질 것이라는 예상)
    • 채권보다 주식이 매력적이어서 채권 선호도 감소
  • 부정: 기준금리가 너무 올라서 단기 채권금리가 치솟은 경우 따라오를 수 있음(물가상승 우려)
    • 채권보다 달러가 매력적이어서 채권 선호도 감소
    • 기준금리가 폭등한다는건 인플레이션 등으로 시장이 불안해지고 변동성이 커진다는 의미도 있음
10년물 국채금리가 내리는 이유
  • 부정: 증시가 불안해서 투자심리가 위축된 경우(경기침체에 대한 예상을 반영)
    • 주식보다 채권이 매력적이어서 채권 선호도 증가
    • 이게 심하고 기준금리 급등이 동반되면, 장단기 금리 역전이 발생하기도 함
      • 단기채권 금리는 기준금리와 연동되니 상승하고
      • 장기채권 금리는 선호도 증가로 하락

 

 

 

이해하기 쉬운것들

인플레이션이 높은경우 금리를 높여서 이를 잡을 수 있다.

 

기준금리가 낮아지면 국채가격이 오름: 국채공급은 한정돼 있는데 수요가 늘어나기 때문.

기준금리가 높아지면 국채가격은 떨어짐: 은행에 맡기면 되는데 굳이 채권을 살 필요가 없기 때문. 채권표면금리가 은행 금리보다는 높더라도 금리가 오르면 예금대비 매력이 감소하는건 사실.

 

이해하기 까다로운 것들

(10년물)국채금리가 폭등하면 시장이불안해지고 변동성이 커진다: 채권금리는 채권 수익률을 의미하는데 이 수익률이 커진다는 의미는 100달러짜리가 95, 90, 80 이렇게 가격이 떨어져서 이걸 산 사람의 수익률(=국채금리)이 오른다는 의미이므로, 국채가격이 떨어진다는 의미이고 10년후 미국 정부가 보증하는 달러라는 화폐의 가치에 대해 의문을 표시하는 사람이 많아진다는 의미이다. 그러므로 변동성이 커지는 것. 

정리하면.

기준금리가 오르면, 국채가격은 떨어지고 국채금리(=수익률)는 올라간다.

인플레이션이 올라도, 국채가격은 떨어지고 국채금리(=수익률)는 올라간다.

국채금리와 국채(시장)가격은 반대방향이다.

 

금리인상은 보통 국채가격을 떨어뜨리나 반대일때도 있다 : 기본적으로는 금리가 인상되면 국체가격은 떨어지지만, 금리가 오르긴 오르되, 채권표면금리보다 낮은 상태이고 경기침체가 우려된다면 안전자산 선호도가 올라서 국채선호도가 올라가고 국체가격상승, 국체금리하락으로 이어질수도 있으니 해석에 주의가 필요하다.(즉 장기 국채일수록 경기에 따라 변동할 수 있다는 것)

근데, 국채표면금리는 5%등 보통 예금이자 보다 높다(단 발행물량이 한정돼 있다. 기본적으로는 돈이 필요할때 발급하는 것이기 때문)

 

 

 

인플레이션은 채권의 적이다: 3% 3년만기 국채라고 했을때 인플레이션이 커지면 3% 고정수익인 채권의 매력이 감소하기 때문(장기 국채일수록 그 경향은 더욱 심함). 예외적으로 물가연동채권이라는 것도 있음

채권 쿠폰금리는 장기가 단기보다 높다: 장기가 예측이 더 힘들므로, 이자를 더 많이 준다는 개념(채권만 그런게 아니라 은행 정기예금도 그렇다).

단기금리는 정책 영향을 많이 받고, 장기금리는 경기전망에 민감: why? 단기금리는 정책금리에 따라 변화한다. 중앙은행이 경기침체 방어를 목적으로 기준금리를 인하하면 채권 단기금리도 하락한다. 장기금리는 경기 회복이 기대되면 상승하고 반대로 경기 침체가 예상되면 하락한다. 

장단기금리역전: 기본적인 장단기금리는 위에서 설명한 방향으로 움직이고(단기: 정책금리, 장기: 경기), 장기가 채권금리가 더 높지만, 역전현상이 생기기도 한다. 증시가 불안하면 장기채권의 수요가 증가하고 장기채권금리하락으로 이어져 단기채권보다 금리가 내려갈 수 있는 것(기준금리 급상승할경우, 단기국채금리는 기준금리와 연동하여 상승, 장기국채금리는 수요증가로 인한 하락) 따라서 역전현상을 보면 경기둔화와 침체의 선행지표가 될 수 있음

파란색실선: 2년물 국채금리, 빨간색 실선: 10년물 국채금리

 

외환보유고가 떨어지면, 미국채를 팔아서 달러를 확보하는게 있는 모양?

https://www.youtube.com/watch?v=VIN2fRIyfm0&ab_channel=%EC%A0%84%EC%9D%B8%EA%B5%AC%EA%B2%BD%EC%A0%9C%EC%97%B0%EA%B5%AC%EC%86%8C 

 

반응형

'재무 금융' 카테고리의 다른 글

연금  (0) 2023.05.12
Direct Indexing  (0) 2022.05.04
TLS(Transport Layer Security)  (0) 2021.05.31
오픈뱅킹 정보제공자 인증관련  (0) 2021.05.31
마이데이터 관점에서 본 OAuth2.0  (0) 2020.09.23

여기는 내가 이더리움을 공부하며, 떠오르는 질문에 대해서 자문자답 형태로 기록해 내가는 페이지이다.

 

Q. 공식홈페이지?

A. https://ethereum.org/

 

Q. 개발자용 공식 페이지가 있나?

A. https://ethereum.org/en/developers/

 

Q. 이더리움 소스코드는 어디에 있으며, 누가 관리하고 있는가?

A. https://github.com/ethereum 여기에 오픈소스로 있는 것 같긴한데, 아직 범위는 잘 모르겠다

 

Q. 이더리움의 공급량은 무제한인가?

A. 비트코인과 달리 이더리움은 무한발행이 가능해서 주의가 필요하다고 한다. (여기 참조) 자세한건 좀 더 공부하면서 적어보자.

 

Q. 스마트컨트렉트는 어떻게 동작하나?

A. "스마트 계약은 중간에 제3의 보증기관을 끼우지 않고 개인간(P2P)에 원하는 계약을 체결할 수 있도록 해주는 디지털 전자계약 기능이다."

 

Q. 스마트컨트렉트에 사용된 언어는 무엇인가?

A. 솔리디티.

"스마트 계약에 기반한 디앱은 모두 이더리움 가상머신(EVM) 환경에서 동작하는데 이더리움 고유의 프로그래밍 언어인 솔리디티로 작성된다. 이것을 solc로 컴파일해서 생성된 이더리움 바이트코드는 geth를 통해 블록체인에 등록된다. 블록체인에 저장된 바이트코드는 결국 이더리움 가상머신(EVM)에서 실행된다. geth와 이더리움 가상머신은 하나의 프로세스로 동작하고, 솔리디티로 작성된 스마트 계약은 이더리움 가상머신에서 동작하기 때문에 특정 운영체제에 종속되지 않는다."

 

Q. ERC-20토큰의 원리는 무엇이며 어떻게 발행할 수 있는가?

A. "ERC-20은 Ethereum Request for Comments 20의 약자로 이더리움 네트워크 상에서 유통할 수 있는 토큰의 호환성을 보장하기 위한 표준 사양이다. 이더리움은 자체 블록체인을 기반으로 다양한 탈중앙화 된 애플리케이션들이 작동할 수 있도록 고안된 하나의 플랫폼 네트워크이다. 디앱은 이러한 이더리움 플랫폼 상에서 스마트 계약을 이용하여 쉽고 빠르게 토큰을 발행할 수 있다. ERC-20 기준을 맞춰 디앱을 설계한 후 토큰을 발행하면, 이더리움과 쉽게 교환할 수 있고, 표준 이더리움 지갑(My Ether Wallet, Meta Mask, Mist 등)에 자유롭게 전송할 수 있게 된다. 결국 이더리움 블록체인을 활용하는 토큰의 경우 ERC-20 기준을 맞춰야 한다. ERC-20 기반 토큰들은 동일한 이더리움 지갑으로 전송이 가능하다."

 

Q. GAS와 GWEI는 무엇인가?

이들은 코인전송 또는 스마트계약관련 처리를 위해 필요한 수수료를 의미하며,

1ETH = 10^9 GWEI 입니다.

GAS라는 단위를 추가로 사용하는 이유는 스마트계약의 복잡도와 현재네트워크 혼잡도를 분리하기 위해서 입니다.

즉, 간단한 스마트계약 처리는 100GAS, 복잡한 스마트계약 처리에 1000GAS가 든다고 하면, 이는 스마트계약의 복잡도로서 네트워크 혼잡도와 분리하여 비교할 수 있고,네트워크 혼잡도는 1GAS당 몇 GWEI인가로 나타낼 수 있습니다. 예를 들어 네트워크가 혼잡하지 않은 경우 1GAS당 10GWEI라면, 혼잡한 경우는 1GAS당 100GWEI가 되는 식이며, 사용자가 빠른 처리를 위해 1GAS당 GWEI를 올릴수도 있습니다.

실제 수수료는 GAS와 GWEI의 곱으로 계산되며, 예를 들면 다음과 같습니다.

(현재 이더리움 네트워크에서 표준적인(가장 간단한 형태의) 트랜잭션은 대략 21,000 가스를 소비합니다. 표준적인 트랜잭션에 대해 네트워크가 평균적으로 혼잡할 때(가스 가격이 50 gwei인 경우)의 트랜잭션 비용은 21,000 가스 * 50 gwei/가스 = 1,050,000 gwei, 혹은 0.00105 ETH라고 할 수 있습니다. 23년 5월 기준 대략 2,500원)

 

Q. 이더리움2.0 이란 무엇인가?

A. 

반응형

'비트코인' 카테고리의 다른 글

테라(Terra), 루나(LUNA), UST 사태  (0) 2022.05.13
웹3.0  (0) 2022.04.15
비트코인 관련 Q&A (자문자답)  (0) 2021.12.30
비트코인 논문 리뷰  (0) 2021.08.31
블럭체인의 원리  (0) 2020.07.31

colab 중심으로 해보려고 하다가, GPU환경이 항상확보되는게 아니라 비용지불이 필요해서, 로컬에 환경을 구축해보려고 한다.

 

여기를 보고 하나씩 따라하며 환경 구축 진행 중

 

https://developer.nvidia.com/cuda-gpus 여기에 내 GPU인 1660 super가 나오지는 않지만 구글링 결과 7.5랑 호환 되는거 같다.

여기서 쿠다툴킷 11버전 다운로드 받았다

 

결과적으로 tensorflow는 gpu버전으로 잘 안됐고 pytorch는 됐다.(필요했던건 pytorch라 OK)

 

bash실행이 필요했는데, 윈도우라 안된건 windows10에 포함된 ubuntu를 설치해서 해결했다.

 

반응형

'AI, ML > ML' 카테고리의 다른 글

그레디언트 부스팅 (Gradient Boosting)  (0) 2023.10.15
랜덤 포레스트(random forest)  (1) 2023.10.15
케라스(Keras)  (0) 2020.04.13
Bayesian Online Changepoint Detection 논문리딩  (0) 2019.08.21
부스팅(boosting)  (0) 2019.05.28

여기, 여기 참조

 

브루트포스로 풀기에는 N이 약간만 너무 클때, 

분할정복처럼 절반씩 나누고 연산한다음 합치는 연산을 하는걸 meet in the middle이라고 한다.

분할정복처럼 반복적으로 나누고 합치고 하지는 않고 1회성으로만 하는거 같다.

 

합치는 연산은 문제마다 다르며, 투포인터가 사용될때도 있다.

샘플 문제는 여기를 참고하자.

 

아직 정확히 모르는점들

meet in the middle을 반복하면 계속해서 복잡도를 줄일 수 있는가? 만약 가능하다면 분할정복과의 차이점은?

합치는 연산에서 투포인터 말고 다른게 쓰는 예는 어떤게 있는가?

  • 요건 이분탐색이 있는데, 이분탐색도 직접구현 기준으로 보면 left, right 포인터를 쓰는거라 투포인터의 일종으로 볼 수는 있을듯?

 

반응형

투 포인터는 한 가지 알고리즘을 말하는 것이라기보다,

포인터 i, j 두 개를 사용해서, 브루트 포스로는 O(N^2)이 걸리는 문제를,

O(N)으로 만드는 그리디 알고리즘의 모음라고 보는 게 좋다.

 

따라서, 투 포인터는 예제를 통해서 익히는 게 좋고,

투 포인터를 통해서 그리디가 가능한 문제는 부분합,

배열의 두 값의 합이나 차가 특정 수가 되는지(A [i]+A [j]=S) 찾는 문제 등이 있다.

위 링크들은 백준 문제로 연결된다.

 

구현 난이도는, 아무래도 그리디다 보니 조건절이 브루트 포스보다는 더 들어가야 해서,

조금 더 어렵고 주의를 요한다고 볼 수 있다.

 

 

반응형

그림 1

위처럼,

어떤 그래프를 V1과 V2 그룹으로 나누었을때,

그룹내의 정점끼리는 간선이 없고 그룹간 간선만 존재할 때 이분 그래프라고 한다.

 

주어진 그래프가 이분 그래프인지 판정하기

그림2

undirected 이면서 모든 두 꼭지점의 연결 경로가 존재하는 연결 그래프(connected graph)인 경우,

아무노드나 잡고, BFS나 DFS로 위처럼 색칠을 해 나가다가 색깔의 conflict 가 있으면 이분 그래프가 아니고, 없으면 이분 그래프로 판정 가능하다.

 

undirected 이면서 연결 그래프는 아닌경우(위의 그림1도 연결그래프는 아님),

이경우도 단순하게 분리된 각각의 연결 그래프에 대해서 모두 위의 색칠로직을 적용해주면 됨(모든 분리된 그래프가 이분 그래프여야 전체도 이분그래프인걸로 판정)

아래 소스코드 참조. 이 문제의 답안이기도 하다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <bits/stdc++.h>
using namespace std;
#define REP(i,n) for(int i=0;i<(int)(n);i++)
enum Color {BLACK, BLUE, RED};
int32_t main()
{
    int K; scanf("%d"&K);
    while (K--) {
        int V, E; scanf("%d%d"&V, &E);
        vector<vector<int>> adj_list(V + 1);
        while (E--) {
            int u, v; scanf("%d%d"&u, &v);
            adj_list[u].push_back(v);
            adj_list[v].push_back(u);
        }
        stack<int> qn; REP(i, V)qn.push(i + 1);
        vector<int> color(V + 1, BLACK);
        bool ans = true;
        while (ans == true && qn.empty() == false) {
            int n = qn.top(); qn.pop();
            if (color[n] == BLACK) color[n] = BLUE;
            for (auto adj : adj_list[n]) {
                if (color[adj] == BLACK) {
                    color[adj] = (color[n] == BLUE) ? RED : BLUE;
                    qn.push(adj);
                }
                else if (color[adj] == color[n]) {
                    ans = false;
                    break;
                }
            }
        }
        printf("%s\n", ans ? "YES" : "NO");
    }
    return 0;
}
 
cs

 

directed인경우,

이 경우도 판정 가능한거 같은데, 자세히 알아보진 않았다.

 

 

 

 

반응형

여기는 내가 비트코인을 공부하며, 떠오르는 질문에 대해서 자문자답 형태로 기록해 내가는 페이지이다.

 

Q. 공식홈페이지?

A. http://bitcoin.org 

 

Q. 개발자용 공식 페이지가 있나?

A. https://developer.bitcoin.org/

 

Q. 비트코인 소스코드는 어디에 있으며, 누가 관리하고 있는가?

A. https://github.com/bitcoin/bitcoin 여기에 오픈소스로 있는 것 같긴한데, 아직 범위는 잘 모르겠다(실제 돌아가는 원장을 관리하는 툴인지, 단순 툴관련인지 등)

 

Q. 기술검색하기 좋은 사이트가 있나?

A. 가장 기본적으로 비트코인개발자사이트가 있고 위키 스택오버플로 페이지가 있다.

 

Q. 비트코인 분산 원장이 실제로 저장되는 물리적 위치는 어디이며, 어떻게 채굴자들에게 공유되는가?

A. 비트코인은 기본적으로 P2P 네트워크를 사용하므로 peer IP를 알아내는게 중요한데, 최초의 peer IP접근은 DNS Seed라고 불리는 DNS를 통해 진행되고, 여기에는 몇개의 IP가 하드코딩되어 있다. 채굴자는 기본적으로 비트코인네트워크의 노드로서 참여하게 되는거고, 이는 공식홈페이지를 보면 비트코인코어를 다운로드 받아서 돌리는 방법을 통해 진행된다.

 

Q. 그럼 비트코인 코어를 받아서 돌리면, 채굴이 자동으로 되고, 경우에 따라 비트코인을 받을 수 있는거냐?

A. 비트코인 코어의 기본기능은 월렛과 비트코인네트워크지원(?) 인것 같지만, 채굴도 여기보면 가능한거 같다.

 

Q. 현재 분산원장 크기는 얼마인가?

A. 2022.3.19현재 340기가바이트 정도 된다.

 

Q. 유명한 채굴 프로그램은 뭐가 있나?

A. 일단 여기서 뭘 채굴할지 검토가 가능하고, 여기여기가 심플하고 유명한 채굴툴인데, 프로그램 사용 수수료가 있는듯하다.

반응형

'비트코인' 카테고리의 다른 글

웹3.0  (0) 2022.04.15
이더리움 관련 Q&A(자문자답)  (0) 2022.03.23
비트코인 논문 리뷰  (0) 2021.08.31
블럭체인의 원리  (0) 2020.07.31
md5, sha  (0) 2017.12.12

문제에서 double을 다뤄야 하면, 주의해야할 점들이 있어서 나열해 본다.

 

이 문제를 보자.

먼저, double을 int로 변환해야하는 경우 단순한 형변환으로는 부족할 수 있다.

예를 들어 다음코드를 돌려보면 1004가 아닌 1003이 찍힌다.

1
2
3
4
5
6
7
int32_t main()
{
    double a = 10.04 * 100;
    int b = a;
    printf("%d\n", b);
    return 0;
}
cs

이경우 다음처럼 뒤에 0.5를 곱해주고 변환해야 제대로 변환된다.

1
2
3
4
5
6
7
int32_t main()
{
    double a = 10.04 * 100 + 0.5;
    int b = a;
    printf("%d\n", b);
    return 0;
}
cs

 

아래처럼 rint를 쓰면 가까운 int로 변환해서 해당문제가 없어진다고 한다.

double a = 10.04 * 100;
int b = (int) rint(a);
printf("%d\n", b);

 

 

반응형

'Programming > Problem Solving' 카테고리의 다른 글

cph  (0) 2024.07.21
백준 4103 ATM  (0) 2020.05.05
백준 15481 그래프와 MST  (0) 2020.05.02
BST 트리 구현  (0) 2020.04.09
인접행렬, 인접리스트  (0) 2020.04.09

로그중에 u'\ucc98\ub9ac' 이런식의 시퀀스가 보이면, 그냥 긁어서 다음과 같이하면 보인다

>>print(u'\ucc98\ub9ac')

처리

 

hex와 euc-kr/utf-8 변환에는 다음 사이트가 좋다.

https://r12a.github.io/app-encodings/

 

Encoding converter

show all the characters in: Select... big5 euc-jp iso-2022-jp shift_jis euc-kr gb18030 (index only) gbk koi8-r koi8-u windows-1250 windows-1251 windows-1252 windows-1253 windows-1254 windows-1255 windows-1256 windows-1257 windows-1258 macintosh ibm866 wind

r12a.github.io

 

로그중에 "\353\224\224\354\226\264\353\270\214\353\240\210\353\223\234" 이런형식의 시퀀스가 보이면 다음처럼 해보면 된다.
>>> a = "\353\224\224\354\226\264\353\270\214\353\240\210\353\223\234"
>>> print(a.encode('latin1').decode('utf-8'))
디어브레드
 
 
반응형

'Programming > Python' 카테고리의 다른 글

venv  (0) 2023.12.17
mypy / pytype  (1) 2023.10.07
Python GUI Programming(Tkinter)  (0) 2021.01.02
파이선환경 그리고 requirements.txt  (0) 2020.09.20
Google Colab(Colaboratory Lab) 팁  (0) 2019.03.07

특정 메모리 주소의 내용을 스트링으로 해석해서 출력하기

p (char*)0x12345678

또는

x /s 0x12345678

 

특정 메모리 주소의 내용을 유니코드 스트링으로 해석해서 출력하기

p (wchar_t*)0x12345678

또는

x /sh 0x12345678

 

특정 메모리 주소의 내용을 16진수 배열(hex)로 보기

x /100x 0x12345678

 

파일로 덤프떠서 외부프로그램(xxd)으로 보는건 아래 링크 참조

https://stackoverflow.com/questions/9233095/memory-dump-formatted-like-xxd-from-gdb

 

info args 하면 함수인자들 보여준다. (info locals, info variables도 있다)

 

hex와 euc-kr/utf-8 변환에는 다음 사이트가 좋다.

https://r12a.github.io/app-encodings/

반응형

+ Recent posts