| name | accountant-expert |
| version | 1.0.0 |
| description | Expert-level accounting, tax, financial reporting, and accounting systems |
| category | professional |
| tags | ["accounting","tax","financial-reporting","gaap","ifrs"] |
| allowed-tools | ["Read","Write","Edit"] |
Accountant Expert
Expert guidance for accounting systems, financial reporting, tax compliance, and modern accounting technology.
Core Concepts
Accounting Principles
- GAAP (Generally Accepted Accounting Principles)
- IFRS (International Financial Reporting Standards)
- Double-entry bookkeeping
- Accrual vs cash accounting
- Financial statement preparation
- Audit and assurance
Financial Statements
- Balance sheet (Statement of Financial Position)
- Income statement (P&L)
- Cash flow statement
- Statement of changes in equity
- Notes to financial statements
Tax & Compliance
- Corporate tax planning
- VAT/Sales tax management
- Payroll tax compliance
- Tax filing and reporting
- Transfer pricing
- International taxation
Double-Entry Bookkeeping
from decimal import Decimal
from datetime import datetime
from enum import Enum
from typing import List
class AccountType(Enum):
ASSET = "asset"
LIABILITY = "liability"
EQUITY = "equity"
REVENUE = "revenue"
EXPENSE = "expense"
class Account:
def __init__(self, code: str, name: str, account_type: AccountType):
self.code = code
self.name = name
self.type = account_type
self.balance = Decimal('0')
self.debit_total = Decimal('0')
self.credit_total = Decimal('0')
def is_debit_normal(self) -> bool:
"""Check if account has normal debit balance"""
return self.type in [AccountType.ASSET, AccountType.EXPENSE]
class JournalEntry:
def __init__(self, date: datetime, description: ):
. = .generate_entry_id()
.date = date
.description = description
.lines = []
.posted =
():
debit credit:
ValueError()
.lines.append({
: account,
: debit Decimal(),
: credit Decimal()
})
() -> :
total_debits = (line[] line .lines)
total_credits = (line[] line .lines)
total_debits == total_credits
() -> :
.validate():
ValueError()
line .lines:
account = line[]
line[]:
account.debit_total += line[]
line[]:
account.credit_total += line[]
account.is_debit_normal():
account.balance = account.debit_total - account.credit_total
:
account.balance = account.credit_total - account.debit_total
.posted =
Financial Statement Generation
class FinancialStatements:
def __init__(self, company_name: str, period_end: datetime):
self.company_name = company_name
self.period_end = period_end
self.accounts = []
def generate_balance_sheet(self) -> dict:
"""Generate balance sheet"""
assets = self.sum_accounts_by_type(AccountType.ASSET)
liabilities = self.sum_accounts_by_type(AccountType.LIABILITY)
equity = self.sum_accounts_by_type(AccountType.EQUITY)
revenue = self.sum_accounts_by_type(AccountType.REVENUE)
expenses = self.sum_accounts_by_type(AccountType.EXPENSE)
net_income = revenue - expenses
total_equity = equity + net_income
return {
"company": self.company_name,
"period_end": self.period_end,
"assets": {
"current_assets": self.get_current_assets(),
"non_current_assets": self.get_non_current_assets(),
"total": assets
},
"liabilities": {
"current_liabilities": self.get_current_liabilities(),
"non_current_liabilities": self.get_non_current_liabilities(),
"total": liabilities
},
: {
: equity,
: net_income,
: total_equity
},
: assets == (liabilities + total_equity)
}
() -> :
revenue = .sum_accounts_by_type(AccountType.REVENUE)
expenses = .sum_accounts_by_type(AccountType.EXPENSE)
gross_profit = revenue - .get_cogs()
operating_expenses = .get_operating_expenses()
operating_income = gross_profit - operating_expenses
interest_expense = .get_interest_expense()
tax_expense = .calculate_tax(operating_income - interest_expense)
net_income = operating_income - interest_expense - tax_expense
{
: .company_name,
: ,
: revenue,
: .get_cogs(),
: gross_profit,
: operating_expenses,
: operating_income,
: interest_expense,
: tax_expense,
: net_income,
: .calculate_eps(net_income)
}
() -> :
{
: .calculate_operating_cash_flow(),
: .calculate_investing_cash_flow(),
: .calculate_financing_cash_flow(),
: .calculate_net_cash_change(),
: .get_beginning_cash(),
: .get_ending_cash()
}
Tax Calculations
class TaxCalculator:
def calculate_corporate_tax(self, taxable_income: Decimal,
jurisdiction: str = "US") -> dict:
"""Calculate corporate income tax"""
if jurisdiction == "US":
tax_rate = Decimal('0.21')
elif jurisdiction == "UK":
tax_rate = Decimal('0.19')
else:
tax_rate = Decimal('0.25')
tax_amount = taxable_income * tax_rate
return {
"taxable_income": taxable_income,
"tax_rate": tax_rate,
"tax_amount": tax_amount.quantize(Decimal('0.01')),
"effective_rate": tax_rate,
"jurisdiction": jurisdiction
}
def calculate_vat(self, net_amount: Decimal, vat_rate: Decimal) -> dict:
"""Calculate VAT/Sales tax"""
vat_amount = net_amount * vat_rate
gross_amount = net_amount + vat_amount
return {
"net_amount": net_amount,
"vat_rate": vat_rate,
"vat_amount": vat_amount.quantize(Decimal('0.01')),
"gross_amount": gross_amount.quantize(Decimal('0.01'))
}
def calculate_depreciation(self, cost: Decimal, salvage_value: Decimal,
useful_life_years: ,
method: = ) -> []:
method == :
annual_depreciation = (cost - salvage_value) / useful_life_years
schedule = []
book_value = cost
year (, useful_life_years + ):
depreciation = annual_depreciation
book_value -= depreciation
schedule.append({
: year,
: depreciation.quantize(Decimal()),
: (annual_depreciation * year).quantize(Decimal()),
: book_value.quantize(Decimal())
})
schedule
Financial Ratios
class FinancialRatios:
@staticmethod
def current_ratio(current_assets: Decimal, current_liabilities: Decimal) -> Decimal:
"""Liquidity ratio: Current Assets / Current Liabilities"""
return (current_assets / current_liabilities).quantize(Decimal('0.01'))
@staticmethod
def quick_ratio(current_assets: Decimal, inventory: Decimal,
current_liabilities: Decimal) -> Decimal:
"""Acid test: (Current Assets - Inventory) / Current Liabilities"""
return ((current_assets - inventory) / current_liabilities).quantize(Decimal('0.01'))
@staticmethod
def debt_to_equity(total_debt: Decimal, total_equity: Decimal) -> Decimal:
"""Leverage ratio: Total Debt / Total Equity"""
return (total_debt / total_equity).quantize(Decimal('0.01'))
@staticmethod
def return_on_equity(net_income: Decimal, shareholders_equity: Decimal) -> Decimal:
"""ROE: Net Income / Shareholders' Equity"""
return (net_income / shareholders_equity * 100).quantize(Decimal('0.01'))
@staticmethod
def return_on_assets(net_income: Decimal, total_assets: Decimal) -> Decimal:
"""ROA: Net Income / Total Assets"""
return (net_income / total_assets * 100).quantize(Decimal('0.01'))
() -> Decimal:
(net_income / revenue * ).quantize(Decimal())
Best Practices
Accounting Systems
- Implement proper internal controls
- Segregation of duties
- Regular account reconciliations
- Maintain supporting documentation
- Use accounting software with audit trails
- Regular backups of financial data
- Year-end closing procedures
Financial Reporting
- Follow GAAP/IFRS standards
- Consistent accounting policies
- Clear disclosure of estimates
- Timely financial statement preparation
- Independent audit for larger entities
- Management discussion and analysis (MD&A)
Tax Compliance
- Maintain organized tax records
- Track deductible expenses properly
- Timely tax filing and payments
- Quarterly estimated tax payments
- Transfer pricing documentation
- Tax planning throughout the year
Anti-Patterns
❌ Using cash accounting for large businesses
❌ No account reconciliations
❌ Missing audit trails
❌ Inconsistent revenue recognition
❌ Inadequate internal controls
❌ Poor documentation of transactions
❌ Late tax filing and penalties
Resources