Core TypeScript library for autonomous cryptocurrency accounting with transaction management, compliance automation, fraud detection, and AgentDB-powered vector search for intelligent financial analysis
npm install @neural-trader/agentic-accounting-core



---
@neural-trader/agentic-accounting-core is the foundational library powering autonomous accounting operations with multi-agent coordination. Built for high-performance transaction management, compliance automation, and intelligent tax optimization.
Leverage Rust-powered calculations (150x faster), AgentDB vector search, and PostgreSQL persistence to handle 10,000+ transactions per minute with sub-millisecond precision.
---
- π Transaction Management - Ingest, validate, and normalize transactions from CSV, APIs, and blockchain sources
- π Compliance Automation - Multi-jurisdiction rule validation with real-time alerts (US, UK, EU, APAC)
- π Forensic Analysis - Pattern detection, anomaly identification, and fraud prevention
- π° Tax-Loss Harvesting - Automated opportunity scanning with 95%+ accuracy and wash-sale detection (<1% violation rate)
- π Position Tracking - Real-time portfolio management with FIFO/LIFO/HIFO/AVERAGE/SPECIFIC-ID cost basis
- π High Performance - Rust NAPI for core calculations (150x faster than pure TypeScript)
- π§ ReasoningBank Learning - Adaptive pattern recognition with 84.8% solve rate
- ποΈ PostgreSQL Integration - Durable storage with migration tools and optimized queries
- π― AgentDB Vector Search - Semantic transaction search and similarity matching
- π Tax Reporting - Generate IRS Form 8949, Schedule D, and multi-jurisdiction reports
---
- Production-Ready: Battle-tested in high-volume trading environments
- Type-Safe: Full TypeScript coverage with Zod validation
- Extensible: Modular architecture for custom compliance rules and integrations
- Observable: Winston logging with structured metadata and performance tracking
- Scalable: Handles millions of transactions with minimal memory footprint
- Accurate: Decimal.js for precision arithmetic (no floating-point errors)
---
``bash`
npm install @neural-trader/agentic-accounting-core
`typescript
import {
TransactionIngestionService,
TaxLossHarvestingService,
PositionManager,
ComplianceRuleEngine
} from '@neural-trader/agentic-accounting-core';
// 1. Ingest transactions
const ingestion = new TransactionIngestionService();
const result = await ingestion.ingestBatch(transactions, {
source: 'coinbase',
batchSize: 1000,
validateOnIngestion: true,
autoNormalize: true
});
console.log(Ingested ${result.successful} transactions in ${result.duration}ms);
// 2. Track positions
const positionManager = new PositionManager();
await positionManager.processBatch(result.transactions);
const positions = await positionManager.getAllPositions();
// 3. Find tax-loss harvesting opportunities
const harvesting = new TaxLossHarvestingService();
const opportunities = await harvesting.scanOpportunities(
positions,
currentPrices,
recentTransactions,
0.35 // 35% tax rate
);
console.log(Found ${opportunities.length} harvesting opportunities);${opp.asset}: Save $${opp.potentialTaxSavings} (${opp.recommendation})
opportunities.forEach(opp => {
console.log();
});
// 4. Validate compliance
const compliance = new ComplianceRuleEngine();
await compliance.loadRules('US', 'federal');
const violations = await compliance.checkTransactions(result.transactions);
if (violations.length > 0) {
console.warn(Found ${violations.length} compliance issues);`
}
---
The core library uses PostgreSQL for transaction storage and AgentDB for vector search.
`typescript
import { DatabaseConnection } from '@neural-trader/agentic-accounting-core';
// Initialize database
const db = new DatabaseConnection({
host: 'localhost',
port: 5432,
database: 'accounting',
user: 'postgres',
password: process.env.DB_PASSWORD
});
await db.connect();
// Run migrations
import { runMigrations } from '@neural-trader/agentic-accounting-core/database';
await runMigrations(db, 'up');
`
`typescript
import {
TransactionIngestionService,
NormalizationService,
ValidationService
} from '@neural-trader/agentic-accounting-core';
const ingestion = new TransactionIngestionService();
// From CSV
const csvResult = await ingestion.ingestFromCSV('./transactions.csv');
// From API (Coinbase)
import { CoinbaseIntegration } from '@neural-trader/agentic-accounting-core/integrations';
const coinbase = new CoinbaseIntegration({ apiKey: process.env.COINBASE_API_KEY });
const coinbaseTransactions = await coinbase.fetchTransactions({
startDate: new Date('2024-01-01'),
endDate: new Date('2024-12-31')
});
const result = await ingestion.ingestBatch(coinbaseTransactions, {
source: 'coinbase',
batchSize: 1000,
validateOnIngestion: true
});
console.log(Processed ${result.successful}/${result.total} transactions);`
`typescript
import { PositionManager } from '@neural-trader/agentic-accounting-core';
const manager = new PositionManager({
defaultMethod: 'HIFO', // FIFO, LIFO, HIFO, AVERAGE, SPECIFIC
enableReasoningBank: true
});
// Process transactions to build positions
await manager.processBatch(transactions);
// Query positions
const btcPosition = await manager.getPosition('BTC');
console.log(BTC: ${btcPosition.quantity} @ avg cost $${btcPosition.averageCost});
// Get all positions
const allPositions = await manager.getAllPositions();
console.log(Tracking ${allPositions.length} positions);
// Calculate unrealized P&L
const currentPrices = new Map([
['BTC', 45000],
['ETH', 3000]
]);
const pnl = await manager.calculateUnrealizedPnL(currentPrices);
console.log(Unrealized P&L: $${pnl});`
`typescript
import { TaxLossHarvestingService } from '@neural-trader/agentic-accounting-core';
const harvesting = new TaxLossHarvestingService();
// Scan for opportunities
const opportunities = await harvesting.scanOpportunities(
positions,
currentPrices,
recentTransactions,
0.35 // Tax rate
);
// Filter harvestable opportunities
const harvestable = opportunities.filter(o => o.recommendation === 'HARVEST');
console.log(Harvestable opportunities: ${harvestable.length});
// Check wash sale violations
for (const opp of harvestable) {
const washSaleCheck = await harvesting.checkWashSale(
opp.asset,
recentTransactions
);
if (washSaleCheck.hasViolation) {
console.warn(${opp.asset}: Wash sale violation - wait ${washSaleCheck.daysUntilSafe} days);
}
}
// Find replacement assets
const replacements = await harvesting.findReplacementAssets('BTC', 0.7);
console.log(BTC replacements: ${replacements.join(', ')});
// Generate execution plan
const plan = await harvesting.generateExecutionPlan(opportunities);
console.log(Execution plan: ${plan.recommendedHarvests} harvests for $${plan.totalPotentialSavings} savings);`
`typescript
import { ComplianceRuleEngine } from '@neural-trader/agentic-accounting-core';
const compliance = new ComplianceRuleEngine({
enableReasoningBank: true,
autoLearn: true
});
// Load rules for jurisdiction
await compliance.loadRules('US', 'federal');
await compliance.loadRules('US', 'state', 'CA');
// Validate transactions
const violations = await compliance.checkTransactions(transactions);
console.log(Compliance violations: ${violations.length});
violations.forEach(v => {
console.log(Rule ${v.ruleId}: ${v.description}); Transaction: ${v.transactionId}
console.log(); Severity: ${v.severity}
console.log(); Recommendation: ${v.recommendation}
console.log();
});
// Real-time monitoring
compliance.on('violation', async (violation) => {
console.warn('NEW VIOLATION:', violation);
// Send alert via email/Slack/etc
});
await compliance.startMonitoring(transactionStream);
`
`typescript
import { ReportGenerator } from '@neural-trader/agentic-accounting-core';
const reporter = new ReportGenerator();
// Generate IRS Form 8949
const form8949 = await reporter.generateForm8949({
taxpayerId: '123-45-6789',
taxYear: 2024,
transactions: disposals,
method: 'HIFO'
});
console.log(Form 8949: ${form8949.totalDisposals} disposals);Short-term gain/loss: $${form8949.shortTermGainLoss}
console.log();Long-term gain/loss: $${form8949.longTermGainLoss}
console.log();
// Export as PDF
await reporter.exportToPDF(form8949, './form-8949-2024.pdf');
// Generate Schedule D
const scheduleD = await reporter.generateScheduleD(form8949);
// Multi-jurisdiction report
const ukReport = await reporter.generateReport({
jurisdiction: 'UK',
reportType: 'capital_gains',
taxYear: '2024/2025',
transactions: disposals
});
`
`typescript
import { ForensicAnalyzer } from '@neural-trader/agentic-accounting-core';
const forensics = new ForensicAnalyzer({
enablePatternDetection: true,
anomalyThreshold: 0.85
});
// Detect patterns
const patterns = await forensics.detectPatterns(transactions, {
minSupport: 0.1,
minConfidence: 0.6
});
console.log(Found ${patterns.length} transaction patterns);
// Identify anomalies
const anomalies = await forensics.identifyAnomalies(transactions);
anomalies.forEach(a => {
console.log(Anomaly detected: ${a.type}); Transaction: ${a.transactionId}
console.log(); Score: ${a.score}
console.log(); Reason: ${a.reason}
console.log();
});
// Fraud detection
const fraudScore = await forensics.calculateFraudScore(transaction);
if (fraudScore > 0.8) {
console.warn(HIGH FRAUD RISK: ${transaction.id} (score: ${fraudScore}));`
}
---
#### TransactionIngestionService
`typescript
class TransactionIngestionService {
constructor()
// Ingest batch of transactions
async ingestBatch(
transactions: any[],
config: IngestionConfig
): Promise
// Ingest from CSV file
async ingestFromCSV(filePath: string): Promise
// Identify taxable events
async identifyTaxableEvents(transactions: Transaction[]): Promise
}
interface IngestionConfig {
source: 'csv' | 'coinbase' | 'binance' | 'etherscan' | 'manual'
batchSize?: number // Default: 1000
validateOnIngestion?: boolean // Default: true
autoNormalize?: boolean // Default: true
}
interface IngestionResult {
source: string
total: number
successful: number
failed: number
errors: Array<{ transaction: any; errors: string[] }>
duration: number
transactions: Transaction[]
}
`
#### PositionManager
`typescript
class PositionManager {
constructor(config?: PositionManagerConfig)
// Process batch of transactions
async processBatch(transactions: Transaction[]): Promise
// Get position for specific asset
async getPosition(asset: string): Promise
// Get all positions
async getAllPositions(): Promise
// Calculate unrealized P&L
async calculateUnrealizedPnL(currentPrices: Map
// Update cost basis method
async updateMethod(asset: string, method: TaxMethod): Promise
}
interface Position {
asset: string
quantity: Decimal
totalCost: Decimal
averageCost: Decimal
lots: TaxLot[]
method: TaxMethod
lastUpdated: Date
}
`
#### TaxLossHarvestingService
`typescript
class TaxLossHarvestingService {
constructor()
// Scan portfolio for opportunities
async scanOpportunities(
positions: Position[],
currentPrices: Map
recentTransactions: Transaction[],
taxRate?: number
): Promise
// Check for wash sale violations
async checkWashSale(
asset: string,
recentTransactions: Transaction[]
): Promise
// Find correlated replacement assets
async findReplacementAssets(
asset: string,
correlationThreshold?: number
): Promise
// Rank opportunities by savings
rankOpportunities(opportunities: HarvestOpportunity[]): HarvestOpportunity[]
// Generate execution plan
async generateExecutionPlan(opportunities: HarvestOpportunity[]): Promise
}
interface HarvestOpportunity {
id: string
asset: string
position: Position
currentPrice: number
unrealizedLoss: Decimal
potentialTaxSavings: Decimal
washSaleRisk: boolean
recommendation: 'HARVEST' | 'WAIT' | 'REVIEW'
expirationDate?: Date
metadata?: any
}
`
#### ComplianceRuleEngine
`typescript
class ComplianceRuleEngine extends EventEmitter {
constructor(config?: ComplianceConfig)
// Load rules for jurisdiction
async loadRules(
country: string,
level: 'federal' | 'state' | 'local',
region?: string
): Promise
// Check transactions against rules
async checkTransactions(transactions: Transaction[]): Promise
// Start real-time monitoring
async startMonitoring(stream: EventEmitter): Promise
// Stop monitoring
async stopMonitoring(): Promise
// Events: 'violation', 'warning', 'alert'
}
interface ComplianceViolation {
id: string
ruleId: string
transactionId: string
description: string
severity: 'low' | 'medium' | 'high' | 'critical'
recommendation: string
timestamp: Date
metadata?: any
}
`
#### ReportGenerator
`typescript
class ReportGenerator {
constructor()
// Generate IRS Form 8949
async generateForm8949(options: Form8949Options): Promise
// Generate Schedule D
async generateScheduleD(form8949: Form8949): Promise
// Generate custom report
async generateReport(options: ReportOptions): Promise
// Export to PDF
async exportToPDF(report: any, filepath: string): Promise
// Export to CSV
async exportToCSV(report: any, filepath: string): Promise
}
`
#### ForensicAnalyzer
`typescript
class ForensicAnalyzer {
constructor(config?: ForensicConfig)
// Detect transaction patterns
async detectPatterns(
transactions: Transaction[],
options?: PatternOptions
): Promise
// Identify anomalies
async identifyAnomalies(transactions: Transaction[]): Promise
// Calculate fraud score
async calculateFraudScore(transaction: Transaction): Promise
// Analyze transaction flow
async analyzeFlow(
transactions: Transaction[],
startNode: string,
endNode: string
): Promise
}
`
#### ReasoningBankService
`typescript
class ReasoningBankService {
constructor(config?: ReasoningBankConfig)
// Store decision trajectory
async storeTrajectory(trajectory: DecisionTrajectory): Promise
// Query similar scenarios
async querySimilarScenarios(
scenario: string,
topK?: number
): Promise
// Update verdict after outcome
async updateVerdict(
trajectoryId: string,
outcome: 'success' | 'failure',
feedback?: string
): Promise
// Get performance metrics
async getMetrics(): Promise
}
`
---
``
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Agentic Accounting Core β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β Transaction β β Position β β Tax-Loss β β
β β Ingestion βββΆβ Manager βββΆβ Harvesting β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β β β β
β βΌ βΌ βΌ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Validation & Normalization β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β Compliance β β Forensic β β Reporting β β
β β Engine β β Analyzer β β Generator β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Performance Layer β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β Rust NAPI β β AgentDB β β ReasoningBankβ β
β β Tax Calc β β Vector Searchβ β Learning β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Persistence Layer β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββ ββββββββββββββββ β
β β PostgreSQL β β AgentDB β β
β β Transactions β β Vector Store β β
β β Positions β β Patterns β β
β ββββββββββββββββ ββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
`
External Sources Ingestion Processing Output
βββββββββββββββββ βββββββββ ββββββββββ ββββββ
βββββββββββββββ
β CSV Files ββββββ
βββββββββββββββ β
β ββββββββββββ
βββββββββββββββ ββββββΆβ Ingest β
β Coinbase APIββββββ€ ββββββββββββ
βββββββββββββββ β β
β βΌ
βββββββββββββββ β ββββββββββββ ββββββββββββ ββββββββββββ
β Binance API ββββββ€ β Validate βββββββΆβ PositionsβββββββΆβ Reports β
βββββββββββββββ β ββββββββββββ ββββββββββββ ββββββββββββ
β β β β
βββββββββββββββ β βΌ βΌ β
β Blockchain ββββββ ββββββββββββ ββββββββββββ β
β (Etherscan) β β Normalizeβ β TLH β β
βββββββββββββββ ββββββββββββ ββββββββββββ β
β β β
βΌ βΌ βΌ
ββββββββββββ ββββββββββββ ββββββββββββ
βPostgreSQLβ β Forensic β β PDF β
ββββββββββββ ββββββββββββ β CSV β
β β JSON β
βΌ ββββββββββββ
ββββββββββββ
βComplianceβ
ββββββββββββ
`
---
> Database Setup: PostgreSQL 12+ required. Run migrations before first use.
> Performance: First calculation is slower (~100ms) due to Rust NAPI initialization. Subsequent calls are <1ms.
> Wash Sales: 30-day window enforced. Check washSaleRisk before executing harvests.
> Tip: Use batchSize: 1000 for optimal ingestion performance. Larger batches may cause memory issues.
> Tip: Enable enableReasoningBank: true to leverage learned patterns from previous decisions.
> Tip: Call invalidateCache() after updating positions to ensure fresh calculations.
> Note: Always validate transactions before processing to catch data quality issues early.
> Note: Use HIFO method for tax-loss harvesting to maximize savings.
> Note: Run compliance checks daily in production environments.
---
This package is part of the Neural Trader Agentic Accounting ecosystem:
- @neural-trader/agentic-accounting-types - Shared TypeScript types and interfaces
- @neural-trader/agentic-accounting-rust-core - Rust NAPI bindings for high-performance calculations
- @neural-trader/agentic-accounting-agents - Multi-agent swarm implementations for autonomous operations
`typescript
// Core library for business logic
import { TaxLossHarvestingService } from '@neural-trader/agentic-accounting-core';
// Agents for autonomous execution
import { HarvestAgent } from '@neural-trader/agentic-accounting-agents';
// Types for shared interfaces
import { Transaction, Position } from '@neural-trader/agentic-accounting-types';
// Combine core + agents for full automation
const harvesting = new TaxLossHarvestingService();
const agent = new HarvestAgent('harvest-001');
await agent.start();
const opportunities = await harvesting.scanOpportunities(positions, prices, txs);
const result = await agent.execute({
taskId: 'harvest-001',
description: 'Execute tax-loss harvesting',
priority: 'high',
data: { opportunities }
});
`
---
`bashBuild TypeScript
npm run build
$3
`
Transaction Ingestion: 10,000+ transactions/min
Tax Calculations (Rust): <1ms per disposal (150x faster)
Position Updates: 5,000+ positions/sec
Vector Search: <10ms for 100k+ embeddings (AgentDB)
Database Queries: <50ms for complex joins (PostgreSQL)
``---
Dual-licensed under MIT OR Apache-2.0. Choose the license that best fits your project.
---
Created by ruv.io as part of the Neural Trader platform.
- Website: neural-trader.ruv.io
- Repository: github.com/ruvnet/neural-trader
- Documentation: docs.neural-trader.ruv.io
- AgentDB - 150x faster vector database
- Rust NAPI - Native Node.js bindings for Rust
- PostgreSQL - Robust relational database
- Zod - TypeScript-first schema validation
- Decimal.js - Arbitrary-precision arithmetic
---
Contributions are welcome! Please read our Contributing Guide for details.
---
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: support@ruv.io
---
Built with β€οΈ by the Neural Trader team