ProgramGarden Core
ProgramGarden은 AI 시대에 맞춰 파이썬을 모르는 투자자도 개인화된 시스템 트레이딩을 자동으로 수행할 수 있게 돕는 오픈소스입니다. 본 저장소는 노드 기반 DSL의 핵심 타입, 베이스 클래스, 레지스트리, i18n을 정의하는 "코어" 모듈입니다.
- 문서(비개발자 빠른 시작): https://programgarden.gitbook.io/docs/invest/non_dev_quick_guide
- 문서(개발자 구조 안내): https://programgarden.gitbook.io/docs/develop/structure
- 유튜브: https://www.youtube.com/@programgarden
- 실시간소통 오픈톡방: https://open.kakao.com/o/gKVObqUh
주요 특징
- 노드 기반 DSL: 73 core nodes를 조합하여 워크플로우를 정의하는 도메인 특화 언어
- 타입 안전한 스키마: Pydantic 모델 기반의 FieldSchema, 입출력 포트 정의로 IDE 친화적이고 안전한 개발
- 레지스트리 시스템: NodeTypeRegistry와 PluginRegistry로 노드/플러그인 메타데이터 관리
- 다국어 지원(i18n): 한국어/영어 번역 파일을 통한 노드 설명, 필드명 자동 번역
- 상품별 분리: 해외주식(
overseas_stock)과 해외선물(overseas_futures)을 독립된 노드로 지원 - 플러그인 확장: ConditionNode에 커뮤니티 전략 플러그인(RSI, MACD 등)을 연결하여 확장
설치
pip install programgarden-core
# Poetry 사용 시 (개발 환경)
poetry add programgarden-core
요구 사항: Python 3.12+
Node categories (11 categories, 74 core nodes)
| 카테고리 | 노드 수 | 대표 노드 |
|---|---|---|
| infra | 8 | StartNode, BrokerNode, ThrottleNode, SplitNode, AggregateNode, IfNode, KoreaStockBrokerNode |
| account | 13 | AccountNode, OpenOrdersNode, RealAccountNode, RealOrderEventNode (해외주식/선물 + 국내주식) |
| market | 23 | MarketDataNode, HistoricalDataNode, RealMarketDataNode, WatchlistNode, ExclusionListNode, KoreaStockRankingNode, OverseasStockRankingNode, KoreaStock* |
| condition | 2 | ConditionNode, LogicNode |
| order | 10 | NewOrderNode, ModifyOrderNode, CancelOrderNode, PositionSizingNode (해외주식/선물 + 국내주식) |
| risk | 1 | PortfolioNode |
| schedule | 3 | ScheduleNode, TradingHoursFilterNode, SessionGateNode |
| data | 4 | SQLiteNode, HTTPRequestNode, FieldMappingNode, CodeNode |
| display | 6 | TableDisplayNode, LineChartNode, CandlestickChartNode, SummaryDisplayNode |
| analysis | 2 | BacktestEngineNode, BenchmarkCompareNode |
| ai | 2 | LLMModelNode, AIAgentNode |
Community adds two nodes: TelegramNode and PerformanceReportNode, for 76 total.
사용 예시
from programgarden_core import (
# 노드
StartNode, ConditionNode, LogicNode,
OverseasStockBrokerNode, OverseasStockAccountNode,
# 모델
Edge, WorkflowDefinition, WorkflowJob, JobState,
# 레지스트리
NodeTypeRegistry, PluginRegistry,
)
# 레지스트리에서 노드 스키마 조회
registry = NodeTypeRegistry()
schema = registry.get_schema("OverseasStockBrokerNode")
print(schema.config_schema)
패키지 구조
programgarden_core/
├── nodes/ # 73 core node definitions
├── bases/ # Finance 베이스 클래스
├── models/ # Pydantic 모델 (FieldSchema, Edge, WorkflowDefinition 등)
├── registry/ # NodeTypeRegistry, PluginRegistry
├── i18n/locales/ # 번역 파일 (ko.json, en.json)
└── exceptions/ # DSL/Finance 예외 클래스
기여하기
이슈/토론/PR 환영합니다. 버그 리포트 시 재현 단계와 최소 예시를 함께 제공해 주시면 빠르게 대응할 수 있습니다.
변경 로그
자세한 변경 사항은 CHANGELOG.md를 참고하세요.
Workflow account boundary
Each workflow allows one account and one product through at most one broker
connection. Additional connections produce DUPLICATE_BROKER_NODE, including
unbound or cross-product nodes. Reuse one broker for all consumers. Account-free
workflows and unrelated credentials remain supported.
Metadata
Release files for programgarden-core 3.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| programgarden_core-3.0.0.tar.gz | 387.9 kB | Without provenance | Details for programgarden_core-3.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| programgarden_core-3.0.0-py3-none-any.whl | Python 3 | none | any | Details for programgarden_core-3.0.0-py3-none-any.whl |
Total release size: 869.0 kB
Release files / programgarden_core-3.0.0.tar.gz
| Download URL | programgarden_core-3.0.0.tar.gz |
|---|---|
| Size | 387.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7be0dd305c838c619cea68365ff6a3ff64a5f408a2065a8f1f9b942fea38f18e
|
|
BLAKE2b-256 checksum How to use checksums |
b235ef5ccfbafe0601fdeeb80c57389ba1f0b12869ef89815cd7a50c9b446eea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.1 CPython/3.12.13 Darwin/27.0.0
|
Release files / programgarden_core-3.0.0-py3-none-any.whl
| Download URL | programgarden_core-3.0.0-py3-none-any.whl |
|---|---|
| Size | 481.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
46ae574f2cf6c19f909ef0aa94cacaff13d8f5d8e7343a39c43d7d3da382ff9d
|
|
BLAKE2b-256 checksum How to use checksums |
b7bb5c974c1af2f4f6139530c04e5764bc74ce71556a3935af1b190fc0d1f91d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.1 CPython/3.12.13 Darwin/27.0.0
|
Security for programgarden-core 3.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.