Rufineer v0.43.0
Account

Project finance, written as code · v0.43.0

Write the model.
Get the workbook.

Rufineer is a language for project finance models. You write what each number means, in plain lines with units, in your browser; a live preview beside the editor compiles and solves the model as you type, and every value can be audited. With Pro, Export to Excel gives a FAST-standard workbook a lender can check cell by cell.

  • Free: the editor, the checks and the preview
  • FAST-standard Excel with Pro
  • Nothing to install: it runs in your browser
ops.rfn
module ops "Operations" {
  /// 1 in the first year, then 0.3% less each year
  performance = decline(inputs.degradation)

  energy:  MWh = inputs.capacity * inputs.capacity_factor
               * inputs.availability * performance | during operations
  revenue sales = energy * inputs.tariff  "Revenue"
}
highveld.xlsm› OpsMaster check 0
H18fx=$D$10*$D$11*$D$12*H$16*H$8*H$6
BCDHIJ
5Period end30-Sep-2831-Dec-2831-Mar-29
7Imports
8Hours in periodh2,2082,2082,160
10CapacityMW40
11Capacity factor%34.0%
14Tariff (indexed)USD/MWh86.7086.7086.70
15Calculations
16Performanceindex1.0001.0001.000
18EnergyMWh29,12829,12828,495
19RevenueUSD '0002,525.42,525.42,470.5

Audit any number

Click a number. See exactly how it is made.

Every value in the preview opens the audit panel: no tracing precedents across sheets, no guessing which cell a formula meant. It is the review a lender's modeller does, done for you, beside your code.

  • The line: its label, unit and name: ops.generation, GWh, on the Ops sheet
  • Its formula, twice: in names, as you wrote it, and as the Excel formula the workbook will hold
  • Where it is declared: the source line in its .rfn file, one click away in the editor
  • What it reads, what reads it: each with its value this period; click one to audit it in turn
  • The cells, outlined: the cells it reads boxed in colour on the sheet, as F2 does in Excel
See it in the first tutorial
mopane.xlsm› Ops
AL39fx=$D$33*AL$38*AL$26*AL$29
BCDAKALAM
5Period end30-Sep-3531-Mar-3630-Sep-36
24Imports
26Year fractionyears0.500.500.50
29Operations flagflag111
33Yield (active case)GWh/y104.0
36Calculations
38Performanceindex0.97040.97040.9655
39GenerationGWh50.4650.4650.21
41RevenueUSD '0006,065.56,065.56,276.6

Why a language

Spreadsheets fail quietly. Rufineer fails out loud.

Before writing Rufineer we read 698 project finance workbooks: training models, course exercises and lender models, from solar and wind to toll roads and tax equity. Three failures came up again and again. Each one is a compile error or an automatic check in Rufineer.

Copied blocks

A P90 row that reads P99

Lender cases built by copying a block of rows. One copy still pointed at the wrong case, and nothing looked wrong because the numbers were plausible.

In Rufineer

Every line is written once and named. A sensitivity case runs the same model with changed inputs, so there is no second copy to drift.

Unsolved loops

Saved with the circle still open

Circular references broken with copy-paste macros, then saved before the macro ran. Differences of thousands sat in models marked complete.

In Rufineer

A circular reference won't compile unless solve breaks it, and every solve gets its own check. An unsolved workbook fails its master check.

Mixed units

A DSCR of 0.009

Thousands divided by units, dollars divided by naira. The ratio was nonsense and no cell said so.

In Rufineer

Every number has a unit. Adding MWh to USD is a compile error, and each conversion (MWh to kWh, a year to a quarter) is written into the formula.

What Rufineer checks, every time it compiles

  • Every number has a unit, and the units agree: no MWh added to USD, no yearly rate used as a quarterly one
  • Every circular reference is broken by a solve and checked as solved; the workbook never uses iterative calculation
  • Every number is on the Inputs sheet with its source: a figure typed into a formula is moved there
  • One formula per row, the same in every period, laid out the FAST way, with a master check on every sheet
  • With the conventions: sources equal uses, the balance sheet balances, cash never goes negative, and each loan is repaid by its maturity
  • Your own checks and alerts, one line each

What it can't check for you

  • Whether the assumptions are right: the tariff, the yield, the costs, the dates
  • Whether the model matches the term sheet, the PPA and the tax law
  • Whether a line means what its label says (the audit panel makes this quick to check)
  • Whether the structure suits the deal: that is modelling judgement, and a review

A model that compiles with every check passing is internally consistent. It is not thereby right: the inputs and the logic still need the review a lender's modeller gives them. Rufineer makes that review faster, because every number can be traced to the line that made it.

How it works

From a folder of text files to a solved workbook

A Rufineer model is a folder: inputs, calculations and outputs, one file per module. It is kept with your account, and you can download it as a .zip any time. The guide goes further.

  1. Write

    Describe the timeline, the inputs with their units and sources, and what the project earns, costs, builds and borrows, each line saying what it is. Rufineer writes the statements.

    Rufineer
    revenue sales = energy * inputs.tariff
    cost    om    = inputs.om | during operations
    capex   epc   = spread(inputs.epc, over: construction)  life 25y
    senior = loan(share: 70 %, rate: inputs.rate, over: tenor, repay: annuity)
  2. Watch it work

    The preview beside the editor compiles and solves the model as you type, in your browser: the editor underlines unit, name and loop errors, the preview shows every sheet laid out the FAST way, and any value can be clicked to see how it is made. explain, in the app's console, says the same in words.

    Terminal
    $ rfn explain ops.energy
    ops.energy  "Energy"
      where   Ops!H24 (first period; the same formula runs across the row)
      unit    MWh
      formula =$D$10*$D$11*$D$12*H$23*H$15*8760*H$16
      read by ops.sales
  3. Open in Excel

    Export to Excel (with Pro) writes the workbook, already solved. Every formula is live, the master check tells you the model is sound, and the Solve and Run sensitivities macros are there for when inputs change in Excel.

    Output
    Master check (0 = all OK)        0
    Balance sheet balances           0
    Loan repaid by maturity          0
    IDC solved (run the Solve macro) 0

Learn by building

Complete models, step by step

Read the guide first

Pricing

Free to write and check. Pro to export.

Everything you need to build and review a model is free. Pro, a monthly subscription, builds the lender-grade workbook. Online payments are coming soon: during early access, write to blessedsibanda263@gmail.com to subscribe.

Free

Everything but the export

  • The editor in your browser: problems as you type, hover, go to definition, completion, formatting
  • The live preview: results, sheets, sensitivities, checks, and the audit of any value
  • The console: check, explain, generate, fmt, conventions, data
  • Your models kept with your account, and downloadable any time as a .zip
Open the app
Pro

Export to Excel, monthly

  • Export to Excel: the solved .xlsm with its Solve and sensitivity macros, or a plain .xlsx
  • From the app: the button at the top, or build in the console
  • Built on Rufineer's server, ready to send to a lender
  • Billed monthly; stop any month and keep everything else
See Pro's price

Get started

Sign up, then start a model in your browser

Nothing to install: Rufineer runs in the page, on any computer with a modern browser. Writing, checking and previewing models is free; Pro adds Export to Excel (pricing). Your models are kept with your account, and you can download their files any time: they stay yours.

Open the app Pricing Questions? Write to blessedsibanda263@gmail.com