SlowBooks Pro
Windows·Mac·Linux용 무료 회계 소프트웨어, 급여·재고·무제한 청구·다중 사용자 서버 에디션 포함, 클라우드·구독 없음
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
기업·산업 리포트, 가상운용 전략, 마켓노트를 정적 사이트로 만드는 도구. 파이썬으로 dist/ 폴더에 HTML을 만들고, 그 폴더를 그대로 호스팅에 올린다. 상시 서버는 없다. http://localhost:4321 에서 본다. 파일을 고치고 브라우저를 새로 고치면 다시 만들어진다. dist/만 만든다. 수익률 계산과, 엑셀에 넘기는 그림 자료의 꼴을 검증한다. 필요한 패키지는 requirements.txt에 있다(Jinja2, PyYAML, Markdown). content/reports/에 마크다운 파일을 만든다. 파일 이름은 발행일-종목id.md 형식을 권한다. • 한 종목의 첫 리포트 발행일이 커버리지 개시일이 된다. • 가장 최근 리포트의 의견과 목표주가가 현재 값으로 표시된다. • 발행한 리포트는 고치지 않는다. 판단이 바뀌면 새 리포트를 추가한다. • 머리말에 featured: true를 넣으면 홈과 AboutREADME 전문 보기 ↗
기업·산업 리포트, 가상운용 전략, 마켓노트를 정적 사이트로 만드는 도구. 파이썬으로 dist/ 폴더에 HTML을 만들고, 그 폴더를 그대로 호스팅에 올린다. 상시 서버는 없다.
python serve.py
http://localhost:4321 에서 본다. 파일을 고치고 브라우저를 새로 고치면 다시 만들어진다.
python build.py
dist/만 만든다.
python -m unittest discover tests
수익률 계산과, 엑셀에 넘기는 그림 자료의 꼴을 검증한다.
필요한 패키지는 requirements.txt에 있다(Jinja2, PyYAML, Markdown).
| 위치 | 내용 |
|---|---|
data/site.yaml | 사이트 이름, 작성자, 홈의 큰 문장과 소개, 외부 링크 |
data/companies.yaml | 커버 종목, 투자포인트, 실적 추정, 밸류에이션 상세, 리스크·회고 |
data/industries.yaml | 커버 산업, 산업 의견, 핵심 논점, 시장 점유율(market: 전체 시장에서 업체별 %), 품목별 점유율(shares: 품목마다 업체와 %, 기준), 밸류체인 |
data/indicators/산업id.csv | 산업 핵심 지표. 첫 열은 date, 나머지 열이 지표(없어도 된다) |
data/prices/*.csv | 일별 종가. 파일 이름은 종목 id 또는 벤치마크 이름 |
data/strategies.yaml | 가상운용 전략. 규칙, 근거, 백테스트 설명, 회고 |
data/trades/전략id.csv | 전략의 거래 기록 |
data/backtests/전략id.csv | 운용 개시 전 백테스트 곡선(없어도 된다) |
content/reports/*.md | 리포트 원고. 투자의견과 목표주가는 여기서 읽는다. 종류(kind): 최초, 업데이트, 브리프(정식 보고서를 서너 쪽으로 줄인 기업 브리프), 산업 |
content/notes/날짜.md | 마켓노트. 하루에 한 파일 |
content/pages/*.md | 방법론, About |
content/studies/*.md | 연구: 자료로 확인해 본 주제를 논문 꼴로. 머리말에 id, title, date, summary, tags, 본문은 마크다운(표 가능). draft: true면 공개하지 않는다 |
content/books/*.md | 책 검증: 책마다 한 파일. 머리말에 책 이름(title), 지은이(author), 핵심(key), 검사 결과와 잇는 정리본 이름(sources — 바꾸지 않는다), 본문에 독후감 |
data/books/*.json | 책 검증: 주장별 검사 결과. C:\quant\bottomup\code\book_site_export.py <이 폴더>가 만든다(손으로 고치지 않는다). 책을 더하거나 빼면 다시 돌린다 |
lib/metrics.py | 커버리지 수익률 계산 |
lib/portfolio.py | 가상운용 평가금액·MDD·샤프 계산 |
tools/excel_charts.ps1 | 화면의 그림을 엑셀로 그려 static/charts/에 내보낸다(아래 "그림" 참고) |
static/charts/ | 엑셀이 내보낸 그림(SVG)과 목록(manifest.json) |
templates/ | 화면 틀 |
static/ | 스타일, 표 정렬·검색 스크립트. 리포트 PDF는 static/reports/에 둔다 |
DESIGN.md | 디자인 규칙. 화면을 고치기 전에 읽는다 |
content/reports/에 마크다운 파일을 만든다. 파일 이름은 발행일-종목id.md 형식을 권한다.
---
id: ex001-20261105 # 주소에 쓰인다. 겹치면 안 된다
company: ex001 # 산업 리포트면 company 대신 industry: 산업id
date: 2026-11-05
kind: 업데이트 # 최초 / 업데이트 / 산업
title: "제목"
rating: 매수 # 기업 리포트에만 필요
target: 90000 # 기업 리포트에만 필요
summary: 한 줄 요약
pdf: "" # static/reports/ 안의 파일 이름. 없으면 비워 둔다
---
본문
featured: true를 넣으면 홈과 About의 대표 리포트에 나온다(최근 3건).content/notes/2026-10-01.md처럼 날짜를 파일 이름으로 한다.
---
date: 2026-10-01
headline: "오늘의 한 줄"
indicators: # 시장 지표 4칸. 값은 직접 적는다
- {name: KOSPI, value: "3,814.80", change: "+0.4%"}
comment: >- # 내 코멘트
커버 종목 관점의 한두 문장
summary: ["알아야 할 것: ...", "가장 큰 리스크: ...", "확인할 것: ..."]
companies: [ex001] # 이 종목의 기업 화면에 자동으로 걸린다
industries: [semi-equipment]
tags: [반도체]
week: ["10.02(금) 미국 고용보고서"] # 이번 주 주요 일정
review: "어제 확인하겠다고 한 것 → 결과" # 어제 확인한 것 (없어도 된다)
draft: true # 공개 전. 이 줄이 있으면 사이트에 나가지 않는다
---
## 통합 브리핑
## 기업·산업 Watch
## 오늘·내일 새벽 이벤트
본문의 ## 제목 하나가 접는 구획 하나가 된다. 브리핑 양식의 [1]~[4]를 여기에 넣는다.
아침 브리핑 글(양식의 [0]~[6]이 다 들어 있는 것)을 파일로 저장한 뒤 실행한다.
python tools/import_briefing.py 브리핑.txt
--draft를 붙이면 공개 전(draft: true)으로 만들고, 이때는 python serve.py 미리보기에서만 보인다.comment는 비워 둔다. 쓰고 싶은 날 직접 적으면 그날만 "내 코멘트" 칸이 나타난다.--force.data/companies.yaml에 종목을 추가한다.data/prices/종목id.csv에 일별 종가를 넣는다(date,close, 커버리지 개시일 이전부터).content/reports/에 넣는다.빠진 것이 있으면 빌드가 어느 파일의 무엇이 없는지 알려 주고 멈춘다.
data/strategies.yaml에 전략을 추가한다. 규칙과 근거를 먼저 쓰고 published에 공개일을 적는다.data/trades/전략id.csv에 거래를 적는다. 열은 date,asset,side,qty,price,note이고 side는 매수 또는 매도다.data/prices/에 있어야 한다. 기업 페이지가 있는 종목은 asset에 종목 id를 쓰면 서로 연결된다.data/backtests/전략id.csv에 date,value로 넣는다. 차트에 점선으로 나온다.현금보다 많이 사거나 보유 수량보다 많이 팔면 빌드가 멈춘다. 전략을 중단하면 status: 중단과 stopped를 적고 회고를 log에 남긴다.
pip install -r requirements-data.txt
python tools/update_prices.py
data/sources.yaml에 적은 대상의 일별 종가를 받아 data/prices/에 저장한다. 국내 종목은 pykrx(수정주가), 지수와 해외 종목은 yfinance로 받는다. 두 도구 모두 공식 제공 경로가 아니어서 값이 비거나 형식이 바뀔 수 있다. 한 대상이 실패하면 그 대상의 기존 파일은 그대로 두고 오류로 끝난다.
.github/workflows/daily.yml이 평일 18:30에 종가를 받고, 검증하고, 사이트를 만들어 GitHub Pages에 올린다. site/ 폴더를 저장소의 맨 위로 삼는다.
아이디.github.io/저장소이름 형태면 data/site.yaml의 base_url에 /저장소이름을 적는다.이 설정은 실제 저장소에서 아직 돌려 보지 않았다. GitHub의 서버에서 pykrx가 종가를 받을 수 있는지도 첫 실행에서 확인해야 한다.
처음에는 화면 확인용 예시(회사 세 곳, 산업 두 곳, 리포트 일곱 건, 전략 두 개, 시세·거래·지표 파일)로 채워 두었다. 2026-10-06에 첫 실제 리포트(오리온)를 올리면서 다음을 했다.
tools/make_example_*.py 삭제data/sources.yaml에 실제 종목(orion)과 벤치마크(KOSPI)를 적음. 시세는 tools/update_prices.py가 받는다data/site.yaml의 demo: false (예시 안내 띠를 끔)리포트 본문에 넣는 그림은 static/reports/리포트id/에, PDF는 static/reports/리포트id.pdf에 둔다.
첫 리포트를 그날 장이 끝나기 전에 올려도 빌드는 된다. 이때 "발행일 종가"는 직전 거래일 종가로 보이다가, 그날 종가가 들어오면 발행일 종가로 바뀐다.
화면의 그림(주가와 목표주가, 누적수익률, 지표 추이, 시장 점유율, 표 안의 작은 그림)은 모두 엑셀 차트다. 사이트 프로그램은 그림을 그리지 않는다. 엑셀 통합 문서를 열어 색·글꼴·크기를 고칠 수 있고, 고친 모양은 다음 갱신에도 남는다(갱신은 자료 칸만 바꾼다).
python build.py --charts <자료.json> # 그림마다 쓸 자료를 적어 낸다
powershell -ExecutionPolicy Bypass -File tools\excel_charts.ps1 -Spec <자료.json> -Workbook <그림.xlsx> -Out static\charts
python build.py # 내보낸 그림을 화면에 넣는다
작은그림 시트에 모여 있고, 목록 시트에 그림과 시트의 짝이 있다.