FinGraph — the complete researcher's manual
FinGraph turns one table of firm financial data into networks, clusters, machine-learning predictions, and a fully tested research model — free, and entirely in your browser. This guide explains every control, shows how to read every output, gives worked examples, and provides paste-ready sentences for writing up your results.
Diagrams below are schematic illustrations of each panel. Nothing you upload leaves your computer — every calculation runs locally in your browser, so your data stays private.
What FinGraph does
FinGraph is built for panel data: each row is a firm observed in a year (a “firm-year”), and each column is a financial variable — a balance-sheet line item, an income-statement figure, or a ratio. From that single table it offers five families of analysis, all sharing the same data and settings.
The five families are: (1) association networks that map how variables co-move; (2) ratio networks over auto-derived financial ratios; (3) clustering with per-cluster finance analysis; (4) machine-learning prediction of a performance target; and (5) a research-model builder for hypothesis testing with regression, moderation and mediation.
Who it is for
FinGraph suits accounting, finance and management researchers, graduate students, and instructors who work with company financial panels (CSMAR, Compustat, Orbis, hand-collected data, or teaching datasets). No coding or statistics software is required, but the outputs are rigorous enough to report in a paper: significance tests, standardised coefficients, VIF, out-of-sample validation, bootstrap confidence intervals, and reproducible method statements.
Quick start (3 steps)
- Load your data. On the tool page, drag a CSV or Excel file onto the drop zone, or click ✨ Try a sample to explore with demo data first.
- Check the columns. In Configure, confirm FinGraph identified the right Firm ID, Firm name and Period/Year columns. Every other numeric column becomes an analysis variable.
- Run an analysis. Build a network, or scroll to Predict firm performance or Research model builder and press the run button. Every result can be interpreted, expanded and exported.
Choosing an analysis
Match your question to the right tool:
| Your question | Use |
|---|---|
| Which financial variables move together? What is the structure of the balance sheet? | Association network (§1) + Clusters (§3) |
| How do liquidity / leverage / profitability ratios relate? | Ratio network (§2) |
| Which firms are structurally similar (peer groups)? | Firm network (§4) |
| Can I forecast a performance measure? What drives it? | Predict performance (§5) |
| Does variable X affect performance, controlling for Y? (hypothesis test) | Research model (§6) |
| Which of many candidate predictors are significant? | Auto-find predictors (§7) |
| Does the effect of X depend on another variable W? | Moderation (§8) |
| Does X affect Y through a mechanism M? | Mediation (§9) |
Preparing your data
FinGraph expects a “long” panel — one row per firm-year:
File requirements
- Format: CSV or Excel (.csv, .xlsx, .xls). Large Excel files stream in the browser; for very large exports (hundreds of MB) a CSV subset (one year, or selected firms/variables) loads fastest.
- Identifier column: a firm code (e.g. stock code, GVKEY, ISIN). FinGraph uses it to group firm-years and to split by firm.
- Period column: a year or date. Needed for within-firm and growth transforms and for the timeline.
- Total Assets: include it if you want common-size transforms and automatic ratio derivation. FinGraph recognises the CSMAR code
A001000000or any column labelled “total assets”. - Works with the major providers out of the box. FinGraph auto-recognises the column conventions of Compustat/WRDS (mnemonics like
at,lt,ceq,sale,ni; identifiersgvkey/datadate), CSMAR (A00…codes;Stkcd/Accper), Worldscope (WC…codes), and CRSP (permno). Orbis, Datastream, Capital IQ and EDGAR exports match by their readable item names. So identifiers, periods, labels, ratios and distress scores are derived automatically — no manual mapping. See the “Works with the major datasets” panel on the load screen for per-provider export tips, and correct anything in the Configure step.
The Configure step
After loading, FinGraph auto-detects the ID / name / period columns. Verify them — if a column is mis-detected, pick the right one from the dropdowns. In Variables in the network you can keep All numeric columns or the Top 30 by coverage (coverage = how many rows have a value).
8.042E8), parentheses negatives (1,234), thousands separators, % and currency symbols.Reshape / query your data with SQL
The load screen has an optional 🛢️ Reshape / query your data with SQL panel (it appears after a file loads). Use it to select, filter, rename, aggregate or pivot your table into exactly the firm-year rows you want — everything runs in your browser; nothing is uploaded.
- The loaded table is referenced as
?. Wrap awkward column names in[brackets], e.g.[A001000000]. - A helper function
num(x)coerces messy text to a number (handy insideSUM/AVG). - Three preset buttons cover the common cases: keep recent years, select & rename columns, and aggregate by firm-year.
SELECT * FROM ? WHERE [Accper] LIKE '20%' — keep years 2000+.SELECT [Stkcd],[Accper],[A001000000] AS TotalAssets,[A002000000] AS TotalLiab FROM ? — pick and rename.SELECT [Stkcd],[Accper], SUM(num([A001101000])) AS Cash FROM ? GROUP BY [Stkcd],[Accper] — collapse to one row per firm-year.Standardize variables (at the start)
The Configure step has a Standardize variables control that rescales every numeric variable once, up front, and feeds the standardized values into every analysis (network, heatmap, dashboard, prediction, regression, causal designs). Choose the method your field prefers:
| Method | Formula | Use when |
|---|---|---|
| Z-score | (x − mean) ⁄ SD → mean 0, SD 1 | The default for putting variables on a common scale; required for many ML models and for firm-similarity distances. |
| Min–max | (x − min) ⁄ (max − min) → [0, 1] | You want a bounded 0–1 range (e.g. for neural nets). |
| Robust | (x − median) ⁄ IQR | Data have outliers — the median/IQR are not distorted by extremes. |
| Log | sign(x)·ln(1+|x|) | Highly skewed monetary variables; compresses long tails (handles zeros and negatives). |
| Rank → percentile | rank ⁄ (n−1) → [0, 1] | You want a fully non-parametric, outlier-proof scale (ordering only). |
| Z-score by year | standardize within each year | Cross-sectional studies — removes market-wide, year-specific levels (industry/year-adjusted). |
| Z-score within firm | standardize within each firm | You care about a firm’s deviations from its own norm (like firm fixed effects). |
Selecting specific years
Below standardization, the Years in the analysis list has a checkbox per year in your data. Tick the years you want and the whole tool — the data-overview dashboard, network, heatmap, predictions, regression and causal designs — is restricted to those firm-years. Use All to reset or Latest to jump to the most recent year. This is the global filter; the network card also has a year slider that animates through the selected years one at a time. Standardization is computed within the selected years, so “z-score” means relative to the sample you kept.
Transforms explained
Raw balance-sheet levels are dominated by firm size, so big firms have big everything and every variable looks correlated (a “size hairball”). A transform removes that. Choose based on your question:
| Transform | What it does | Use when |
|---|---|---|
| Raw levels | The values as-is. | Rarely — only if variables are already scale-free. |
| Common-size (÷ total assets) | Each item as a share of total assets. | You care about balance-sheet composition. Best default. |
| Within-firm (demean) | Subtracts each firm’s own average, leaving only over-time deviations. | You care about within-firm change and want to remove stable firm differences (like fixed effects). |
| Year-over-year growth | Percentage change from the previous year. | You study dynamics / growth; also makes non-stationary levels comparable. |
Missing values & outliers
- Missing data: analyses use listwise-complete observations — a firm-year is dropped from a model if the outcome or any included variable is missing. The reported
Nis the complete-case count. Networks use pairwise-complete correlations with a minimum-pairs guard so sparse cells don’t create spurious edges. - Outliers: extreme ratios (from tiny denominators) can distort correlations and regressions. Consider winsorising or trimming extreme firm-years in your source file before uploading; FinGraph flags instability indirectly through wide standard errors and high VIF.
- Coverage: if a variable is mostly empty it will be dropped or weaken a model. Use “Top 30 by coverage” to prioritise well-populated variables.
Data overview dashboard
Between Configure and the network, the Data overview card gives you an at-a-glance exploratory picture of your panel — the kind of descriptive dashboard you would otherwise build by hand — so you can sanity-check the sample and see how each variable behaves over time before modelling.
What it shows
- Sample counts (KPI strip): number of firms, years, firm-year observations, groups (e.g. industries), and variables. These are the counts you report in a “sample” paragraph.
- Sample composition (bar chart): firm-years per industry, firm-years per year, or firms per industry — switch with Counts bar chart.
- Featured variable (enlarged): a large line chart of one “main” variable over time, one line per industry. Pick it in Featured variable.
- Small-multiples grid: every selected variable as its own mini timeline, laid out in a grid (set the number of panels and columns). Lines are coloured by industry using a single shared legend, so colours mean the same thing in every panel. Hover a panel for a quick ⬇ PNG, or click it (or the ⤢ button) to open it full-size and interactive — with a legend and hover tooltips — and download a 300-DPI PNG from there. Every expanded chart in FinGraph now has a PNG button.
Controls
| Control | Effect |
|---|---|
| Colour / group by | The categorical column that colours the lines and bars (industry, sector, exchange…). Auto-detected; choose “None” for a single overall line. |
| Line = firms’ Mean / Median per year | How each line is summarised across firms within a year. Median is more robust to outliers (falls back to mean on very large samples). |
| Standardise each panel (z-score) | Rescales each panel to mean 0, SD 1 so you compare the shape of trends across variables with very different units. |
| Panels / Grid columns | How many variables to show and the grid width (default 6 columns). |
1 · Association network
What it answers: which financial variables move together across firms, and how they group. Strongly correlated variables sit closer, are joined by thicker links, and cluster by colour; negative correlations are dashed red.
Steps
- Keep the Variable network tab selected.
- Choose a Transform (common-size is a good default) and a Correlation method (Pearson for linear, Spearman for rank/robust).
- Set Minimum |correlation| and Max variables, then press ⚙ Build network.
- Open Advanced — filtration & model to choose how edges are kept and whether to use partial correlations (see the control table below).
- Tune Community resolution and Colour nodes by; toggle hulls, rings and density for readability.
- Press 🏷️ Name clusters (AI) and 🧠 Interpret network (AI) for labels and a written read-out.
Every control explained
| Control | What it does |
|---|---|
| Transform | Removes the firm-size effect (see §Transforms). |
| Size control (partial) | Partials out a size variable (e.g. total assets) from every correlation. |
| Correlation method | Pearson (linear) or Spearman (rank — robust to outliers and non-linearity). |
| Minimum |correlation| | Threshold for keeping an edge (when Edge selection = threshold). |
| Edge selection | Threshold · FDR (keeps edges surviving a Benjamini–Hochberg false-discovery test) · MST (minimum-spanning-tree backbone) · Disparity (statistical backbone filter). |
| Partial-correlation (GGM) | Edges show conditional dependence — the relationship between two variables after removing the influence of all others. Turns co-movement into a cleaner dependency map. |
| Community resolution | Higher = more, smaller clusters; lower = fewer, larger clusters. |
| Colour nodes by | Cluster, or a centrality: betweenness (bridges), eigenvector (influence), closeness (reach), degree (connections). |
| Min. pairs per edge | Requires at least this many complete firm-year pairs before an edge is drawn (guards against spurious links). |
Reading the output
The stats bar reports nodes, edges, density, number of clusters, and modularity Q (clustering quality — higher is cleaner). The insight panel lists the strongest correlations, cluster membership, and pivotal variables (high betweenness — they bridge clusters, marked ◆). A variable that bridges two clusters is often an integrator (e.g. total current assets linking working-capital items).
Worked example
On a common-size CSMAR balance sheet, FinGraph typically recovers a working-capital cluster (receivables, inventory, prepayments, cash), a fixed-asset cluster (net fixed assets, construction-in-progress, investment property), and an intangibles cluster (intangibles, goodwill, deferred tax). Cash often shows a negative edge to working-capital items — a liquidity trade-off — drawn as a dashed red link. Modularity Q around 0.4–0.6 indicates well-separated clusters.How to report it
1b · Correlation heatmap & lower-triangle matrix
What it answers: the same correlations as the network, shown as a colour matrix — the familiar correlation table you put in a paper. It appears in the Correlation heatmap card below the network and redraws whenever you build a variable or ratio network. Blue = positive, red = negative, white ≈ 0.
| Control | Effect |
|---|---|
| Show | Lower triangle (the classic publication figure), full matrix, or upper triangle. |
| Diagonal | Hide the 1.0 diagonal or show it. |
| Order variables | By cluster (groups co-moving variables into blocks along the diagonal), as selected, or alphabetical. |
| Matrix | Zero-order correlations (r), or the partial / GGM edge matrix when the partial-correlation network is on. |
| Show values / stars | Print each coefficient in the cell, with significance stars (* .05, ** .01, *** .001). |
Exports: a 300-DPI PNG, a lower-triangle CSV formatted as an APA correlation table (numbered variables, blank upper half, 1s on the diagonal, stars included), and a full-matrix CSV.
How to report it
2 · Ratio network
What it answers: how the standard financial ratios relate to one another — the way analysts actually think. FinGraph auto-derives up to 20 ratios from your columns and networks those.
| Family | Ratios derived (when inputs are present) |
|---|---|
| Liquidity | Current, Quick, Cash, Working-capital ÷ assets |
| Leverage / solvency | Debt-to-assets, Debt-to-equity, Equity ratio, Long-term-debt ÷ assets, Current ÷ total liabilities, Equity multiplier |
| Asset structure | Capital intensity, Intangible intensity, Current-asset ratio, Non-current-asset ratio |
| Efficiency | Inventory ÷ current assets, Receivables ÷ current assets, Asset turnover* |
| Profitability* | ROA, ROE, Net profit margin |
* Turnover and profitability ratios appear only when income-statement items (revenue, net income) are in your file — the ratio set adapts to your data.
- Click the Ratio network tab.
- Press ⚙ Build network. Ratios that co-move cluster into families (liquidity, leverage, profitability…).
- Use the same clusters, exports and AI interpretation as the variable network.
Worked example
On demo data the ratio network separates cleanly into a liquidity cluster (current, quick, cash, working-capital/assets), a leverage cluster (debt-to-assets, debt-to-equity, equity multiplier), an asset-structure cluster (capital & intangible intensity), and a profitability cluster (ROA, ROE, margin) — a textbook recovery of the ratio taxonomy directly from the data.3 · Clusters & per-cluster finance analysis
What it answers: what each cluster means in finance terms. After any variable or ratio network, the Cluster finance analysis panel turns each cluster into a finance object.
- Build a network, then scroll to Cluster finance analysis and pick a cluster from the dropdown.
- Read the member table: each item’s share of total assets, mean and SD, and its PC1 loading (how strongly it defines the cluster).
- Note the cluster’s cohesion (average internal |r|), its total weight (% of assets), its hub (most connected member), and the composite-index equation — the first principal component, a single index you can compute per firm-year to summarise the cluster.
- Press 🧠 Interpret this cluster (AI) for the economic meaning, the ratios it maps to, and a testable hypothesis.
Reading the output
- Cohesion ≈ 0.9 means the members move almost in lockstep — a tight construct.
- Cluster weight tells you how much of the balance sheet the cluster occupies (e.g. a working-capital cluster at 40% of assets).
- PC1 “explains X% of variance”: a high number (say 80–95%) means one underlying factor drives the whole cluster, so the composite index is a faithful summary.
Worked example
A working-capital cluster might show Total Current Assets 40% of assets, Inventories 12%, Receivables 11%; cohesion 0.90; PC1 explaining 92% with loadings ≈ 0.45 each. The composite indexFactor = 0.46·z(Inventories) + 0.46·z(Receivables) + … is a ready-made “working-capital intensity” variable you can use as a predictor elsewhere.4 · Firm (peer) network
What it answers: which firms are structurally similar. Each firm is reduced to its average standardised financial profile; firms with similar profiles are linked and cluster into peer groups.
- Click the Firm network tab and press ⚙ Build network.
- Read the peer-group clusters; the cluster panel shows what makes each group distinctive (variables higher and lower than the overall average).
Comparing peer groups & analysing one cluster
After building the firm network (and optionally naming the clusters with AI), the cluster panel gives you two extra tools:
- 📊 Compare peer groups (ANOVA) — runs a one-way ANOVA across the clusters for every variable and reports, for each, the F-statistic, p-value, η² (the share of variance explained by cluster membership — an effect size), and the per-cluster means. It tells you exactly how the peer groups differ statistically and which variables separate them most.
- → Use this peer group in the research model — sets the model's firm sample to the selected cluster's firms, so every analysis lower down the page (research model, moderation/mediation, prediction, and the causal designs) runs on just that peer group. Combine it with the same tool on another cluster to compare results across groups.
5 · Predict firm performance (machine learning)
What it answers: can a performance measure be predicted from the other variables, how accurately, and what drives it? Results report out-of-sample accuracy on a held-out test set — the honest test of a predictive model.
Steps
- Choose a Target — what to predict. Options include derived growth measures (asset/revenue/equity YoY), any ratio (ROA, ROE…), or any raw item.
- Pick the Task: Regression (predict the value) or Classification (high vs low performer, split at the median).
- Choose the Predictors (ratios, raw items, or both) and the Model (see the model table below).
- Set the Horizon: Same period (explain) or Next period t+1 (forecast — year-t features predict the target at t+1).
- Keep Split by firm ticked (holds out whole firms so the test can’t “cheat” by seeing the same firm in training and test), set the test %, then press ⚙ Train & evaluate.
Which model?
| Model | Best for |
|---|---|
| Linear (OLS) | A transparent baseline; standardised coefficients tell you direction and size. |
| Ridge | Many correlated predictors — shrinks coefficients for stability. |
| Neural network (MLP) | Non-linear relationships and interactions the linear model misses; read permutation importance for drivers. |
Reading the output
- Regression: Test R² (share of out-of-sample variance explained), Adjusted R², Test RMSE (typical error), and Train R² (in-sample). The actual-vs-predicted plot should hug the diagonal.
- Classification: Accuracy, ROC AUC (0.5 = chance, 1.0 = perfect), Precision, Recall, and the ROC curve.
- Importance: permutation importance (for the NN) or standardised coefficients (for linear/ridge) rank what matters, with direction.
How to report it
6 · Research model (multiple regression)
What it answers: does variable X relate to an outcome, controlling for other variables? This is the core hypothesis-testing tool: specify a model, test it, and get publication-ready statistics.
Steps
- Pick the Outcome (dependent variable) — e.g. ROA, or asset growth.
- Optionally restrict the sample: open Firms — all and tick the firms to include (filter / All / None), or — after building the Firm network — pick a whole peer-group cluster from the dropdown to select all its firms at once. The header shows “N of M”. Use this for subsamples (an industry, a size band, a peer group).
- Tick your Predictors and any Control variables. Controls are entered but reported separately, so your hypothesis variables stay in focus.
- Choose the Horizon (same period, or next-period t+1 for a predictive test).
- Press ⚙ Test model.
- Read the diagram, statistics table, fit cards and hypothesis tests; press 🧠 Interpret (AI) or ⬇ Download full report.
Reading the statistics table
| Column | How to read it |
|---|---|
| B | Unstandardised slope: the change in the outcome for a one-unit change in the predictor (in the outcome’s own units). |
| SE | Standard error of B — the uncertainty. Smaller relative to B = more precise. |
| β | Standardised slope (SD units): compare β across predictors to see which matters most. |β| ≈ .10 small, .30 medium, .50 large. |
| t, p | t = B/SE; p is its significance. Stars: *** p<.001, ** p<.01, * p<.05, † p<.10. |
| 95% CI | Plausible range for B. If it excludes 0, the effect is significant at 5%. |
| VIF | Multicollinearity. <5 fine, 5–10 caution, >10 (red) problematic — consider dropping one of the overlapping predictors. |
Reading the fit & hypotheses
R² / Adjusted R² is how much of the outcome the model explains; the F-test asks whether the model as a whole beats no predictors (a tiny p means yes). Each hypothesis line states whether a predictor is supported (significant, with its direction) or not supported.
Worked example
Outcome = ROA; predictors = Debt-to-assets and Asset turnover; control = firm size. Suppose Debt-to-assets B = −0.041, β = −0.22, t = −3.8, p < .001, VIF 1.3 → “higher leverage is associated with lower ROA, supported.” Asset turnover β = .35, p < .001 → supported. Model R² = .29, F(3, 496) = 68.2, p < .001. You would report leverage and turnover as significant correlates of profitability, explaining 29% of its variance.How to report it
6b · Panel methods, robust inference & scores from the literature
Because financial data are firm-year panels, top accounting and finance journals rarely use plain OLS. The research-model card now offers the field-standard toolkit, added after a review of methods used in The Accounting Review, Journal of Accounting Research, Journal of Finance and the Review of Financial Studies.
Estimator — fixed effects
The Estimator selector controls unobserved heterogeneity via the within transformation:
| Estimator | What it removes / when to use |
|---|---|
| Pooled OLS | No controls for panel structure — a baseline only. |
| Firm fixed effects | Absorbs time-invariant firm traits (industry, business model); identifies effects from within-firm change. Reports the within-R². |
| Year fixed effects | Absorbs common shocks (cycles, regulation) shared by all firms in a year. |
| Two-way (firm + year) FE | Both at once — the modal specification in empirical accounting. |
| Fama–MacBeth | Runs a cross-sectional regression each year and averages the coefficients; reports Fama–MacBeth t-statistics. Common in asset pricing. |
Standard errors
OLS standard errors are biased in panels because residuals correlate within firm (Petersen 2009). The Standard errors selector offers Classical, Robust (HC1) for heteroskedasticity, and Clustered by firm — the expected default in accounting and corporate finance. The estimator line under the fit cards records your choice and the number of clusters.
Winsorise
The Winsorise selector caps each variable's tails at the 1st/99th (or 2.5/97.5, 5/95) percentiles before estimation — the near-universal fix for the heavy tails of financial ratios.
Descriptives (Table 1 & Table 2)
The 📋 Descriptives button produces the two tables every empirical paper opens with: Table 1 (N, mean, SD, min, P25, median, P75, max for the outcome and predictors) and Table 2 (a starred correlation matrix). Both are included in the downloadable report.
Distress, quality & manipulation scores
When your data include the required income-statement / cash-flow items, FinGraph auto-derives the classic score models as variables you can use as an outcome, predictor or control:
| Score | Measures | Needs (beyond balance sheet) |
|---|---|---|
| Altman Z / Z″ | Bankruptcy risk | Retained earnings, EBIT (Z also needs sales & market value) |
| Ohlson O | Bankruptcy probability | Net income (+ prior year) |
| Piotroski F (0–9) | Fundamental strength | Net income, operating cash flow, sales (+ prior year) |
| Beneish M | Earnings-manipulation risk | Sales, COGS, receivables, depreciation, SG&A (+ prior year) |
If the inputs are missing, the score simply does not appear — the set adapts to your data. Scores that need a prior year use the panel's lag automatically.
Difference-in-differences (event study)
The Difference-in-differences panel estimates the causal-style effect of an event (a policy, reform or shock) on a treated group versus a control group. Pick a treatment-group indicator (a 0/1 column marking treated firms) and an event year; FinGraph forms Treated, Post and Treated × Post and estimates Y = β₀ + β₁·Treated + β₂·Post + β₃·(Treated×Post) + controls with firm-clustered SEs. The DiD estimate is β₃. You also get a 2×2 means table (treated/control × pre/post) whose difference-of-differences equals β₃, and a treated-vs-control trend chart with the event marked — use it to check the crucial parallel-trends assumption (the two lines should track each other before the event).
Causal designs — IV, PSM, RD, event study
The Causal designs panel adds four more identification strategies. Each needs a design input you supply; all report an estimate with inference and (where useful) a diagnostic chart.
| Design | You provide | Estimate & diagnostic |
|---|---|---|
| Instrumental variables (2SLS) | An endogenous regressor X and an instrument Z (plus controls) | The 2SLS effect of X, and a first-stage F (F < 10 flags a weak instrument). Assumes the instrument affects Y only through X (untestable exclusion restriction). |
| Propensity-score matching | A 0/1 treatment column; covariates = ticked controls | The ATT from nearest-neighbour matching on the estimated propensity, plus a propensity-overlap chart and common-support range. Assumes selection on observables. |
| Regression discontinuity | A running variable, a cutoff, and a bandwidth | The jump at the cutoff from local-linear fits, with a binned scatter + fitted-lines chart. Assumes no precise manipulation of the running variable. |
| Event study (staggered DiD) | A per-firm adoption-year column (blank = never-treated) | Dynamic treatment effects by year-relative-to-adoption (t−1 = reference), with a coefficient plot. Choose Callaway–Sant'Anna (default — group-time ATT(g,t) aggregated to an event study, robust to heterogeneous timing, with a never-/not-yet-treated comparison and firm-bootstrap CIs) or plain two-way FE. Pre-period coefficients near zero support parallel trends; the overall ATT summarises the post-treatment effect. |
Worked example
Regress ROA on leverage with firm and year fixed effects, firm-clustered SEs and 1% winsorisation: set Estimator = Two-way FE, Standard errors = Clustered by firm, Winsorise = 1%, then Test model. The estimator line reads “Two-way (firm+year) FE · firm-clustered SE (G = 320 firms) · winsorised at 1%”, and the reported β now reflects within-firm, within-year variation with honest standard errors.How to report it
7 · Auto-find predictors
What it answers: out of many candidate variables, which significantly relate to the outcome? 🔎 Auto-find predictors enters all available predictors and reports which are significant.
- Set the Outcome (and any controls / firm selection). You do not need to tick predictors — Auto-find uses them all.
- Press 🔎 Auto-find predictors. FinGraph then:
- fits the full model (every predictor together) and makes it the active model — significant predictors appear solid in the diagram, non-significant grey dashed;
- runs a univariate screen — each predictor tested one at a time with the controls — and reports its p-value alone versus in the full model;
- searches predictor combinations (best-subsets when feasible, else forward stepwise) and recommends a parsimonious model, ranked by adjusted R² and BIC.
- To adopt a recommendation, tick those predictors and press ⚙ Test model.
p “alone” vs p “full” — why both?
A predictor can be significant alone but not in the full model (its effect was shared with correlated predictors), or vice-versa. Comparing the two columns reveals which relationships are robust to controlling for everything else. Predictors significant in both are the strongest candidates.
8 · Moderation (interaction)
What it answers: does the effect of X on Y depend on a third variable W? A significant X × W interaction means yes.
- Set the Outcome (Y) at the top of the card.
- Open Moderation / Mediation, choose Moderation, pick X (predictor) and W (moderator), and press ▶ Run test.
- Read the interaction row: a significant X × W term (p < .05) means W moderates the X → Y effect.
- Read the simple slopes and the plot: the X → Y line is drawn at low (−1 SD), mean, and high (+1 SD) W. Diverging lines = moderation.
Worked example
Does firm size (W) change how leverage (X) affects growth (Y)? If X × W is β = .14, p = .006, and the simple slopes are +0.02 at low size but +0.20 at high size, then leverage helps growth much more in large firms — a significant, size-dependent effect.How to report it
9 · Mediation
What it answers: does X affect Y through a mechanism M? Mediation decomposes the total effect into a direct path and an indirect path X→M→Y.
- Set the Outcome (Y). Open Moderation / Mediation and switch the test to Mediation — the second box becomes the mediator M.
- Pick X and M and press ▶ Run test.
- Read the paths: a (X→M), b (M→Y controlling X), c (total X→Y) and c′ (direct). The indirect effect is a×b.
- Check the tests: the Sobel z/p and — more importantly — the bootstrap 95% CI (800 resamples). If the CI excludes 0, the indirect effect is significant.
- Read the verdict: full mediation (indirect significant, direct not), partial (both significant), or none.
Worked example
Does intangible intensity (X) affect the current-asset ratio (Y) through non-current structure (M)? Suppose a = −.44***, b = −1.02***, c = −.36***, c′ = −.80***, indirect a×b = .45, Sobel z = 11.6, bootstrap CI [.36, .54]. The CI excludes 0 and c′ remains significant → partial mediation: part of X’s effect runs through M, part is direct.How to report it
10 · Exports & the full report
- Expand: every chart has an ⤢ Expand control for a full-screen view (Esc or click outside to close).
- Network exports: PNG (300 DPI), SVG, edge list (Gephi/VOSviewer), correlation matrix, node-cluster CSV, GraphML, Pajek (.net), and a paste-ready Methods + settings paragraph.
- Full report: ⬇ Download full report compiles everything you have run — the research model (diagram + tables), moderation/mediation, predictive results (with charts), and the network — into one self-contained HTML file. Open it in any browser and print to PDF for an appendix.
Interpreting significance & effect sizes
Two questions matter for every result: is it significant? (unlikely to be chance) and is it large? (does it matter).
- p-value: the probability of seeing an effect this large if the true effect were zero. p < .05 is the common threshold, but with large samples even trivial effects become “significant” — always look at size too.
- Standardised β / correlation r: ≈ .10 small, .30 medium, .50 large (Cohen’s rough guide).
- R²: the share of variance explained. In firm-level social-science data, R² of .10–.30 is common and respectable; very high R² often signals a mechanical or circular relationship.
- Confidence intervals convey both: a narrow CI far from 0 is a precise, meaningful effect; a wide CI spanning 0 is inconclusive.
Statistics glossary
| Term | Meaning (and formula where useful) |
|---|---|
| R² / Adjusted R² | Variance in the outcome explained by the model. Adjusted R² penalises extra predictors, so use it to compare models. In prediction, the held-out test R² is what counts. |
| B / β | B = raw slope (outcome units per predictor unit). β = standardised slope (SD units), comparable across predictors. |
| SE, t, p | Standard error, t = B/SE, and its two-tailed p-value. Stars: *** <.001, ** <.01, * <.05, † <.10. |
| 95% CI | ≈ B ± 1.96·SE. Excludes 0 ⇒ significant at 5%. |
| F-test | Whole-model test: F = (R²/k) / ((1−R²)/(n−k−1)). Small p ⇒ the model beats no predictors. |
| VIF | Variance inflation factor = 1/(1−R²ⱼ), where R²ⱼ regresses predictor j on the others. >10 ⇒ severe multicollinearity. |
| AUC | Area under the ROC curve (classification): 0.5 chance, 1.0 perfect ranking of high vs low performers. |
| RMSE / MAE | Typical prediction error (root-mean-square / mean-absolute), in the target’s units. Lower is better. |
| BIC | Bayesian information criterion = n·ln(RSS/n) + k·ln(n). Rewards fit, penalises complexity; lower is better. Used to choose a parsimonious model. |
| Sobel test | Tests a mediation indirect effect: z = ab / √(b²·SEₐ² + a²·SE_b²). |
| Bootstrap CI | Resamples the data many times to build an empirical confidence interval — the preferred mediation test. |
| FDR (Benjamini–Hochberg) | Controls the expected proportion of false edges/effects when many tests are run. |
| Partial correlation / GGM | Correlation between two variables after removing all others — conditional dependence. |
| Fixed effects | Absorb group-level means (firm and/or year) via the within transformation, removing unobserved group heterogeneity. FE models report the within-R². |
| Clustered SE | Standard errors allowing residuals to correlate within a group (firm). The default in panel finance/accounting (Petersen 2009). |
| Fama–MacBeth | Estimate a cross-sectional regression each period and average; the t-stat is the time-series SD of the estimates. |
| Winsorise | Cap a variable's extreme tails (e.g. at the 1st/99th percentiles) to limit outlier influence. |
| Altman Z / Ohlson O | Bankruptcy-risk scores from financial-statement ratios. Piotroski F (0–9) scores fundamental strength; Beneish M flags earnings-manipulation risk. |
| Modularity Q | Network clustering quality; higher = clearer, more separated communities. |
| Centrality | Degree (connections), betweenness (bridging), eigenvector (influence), closeness (reach). |
| PC1 / composite index | First principal component — the single factor best summarising a cluster; its loadings give the index formula. |
Reporting templates
Copy, then fill in your numbers (or use the tool’s Methods + settings and Download full report):
Network
Regression
Moderation
Mediation
Prediction
An example end-to-end workflow
- Load a CSMAR-style balance-sheet export (or the built-in sample).
- Explore structure: build a common-size variable network, press Name clusters (AI), and read the per-cluster finance analysis.
- Ratios: switch to the ratio network to see liquidity / leverage / profitability families.
- Form a question: e.g. “Does leverage predict next-year asset growth, controlling for size?”
- Test it: in the research model builder, set outcome = Asset growth (YoY), predictor = Debt-to-assets, control = Total Assets, horizon = next period; press Test model.
- Explore drivers: run Auto-find predictors to see all significant correlates; check p-alone vs p-full and the parsimonious model.
- Mechanism & boundary: test mediation (does liquidity carry the effect?) and moderation (does size change it?).
- Predict: train a neural network to forecast next-year growth and compare its out-of-sample accuracy to the regression.
- Report: press Download full report, print to PDF, and paste the method statement into your paper.
Troubleshooting & FAQ
“No standard ratios could be derived.”
Your file lacks the balance-sheet items FinGraph needs (current assets/liabilities, equity, etc.), or their labels weren’t recognised. Include a Total Assets column and standard items, or use the variable network instead.“Too few complete rows.”
Your predictors have missing values, so listwise deletion left too small a sample. Untick sparse predictors, add more firms, or pick better-covered variables (Top 30 by coverage).Everything is correlated / one giant cluster.
You are probably on Raw levels — the size effect dominates. Switch the Transform to common-size, within-firm, or growth.My model’s R² is suspiciously high (~99%).
You are likely predicting a variable from its own components (e.g. a ratio from its numerator and denominator). Choose a genuinely separate target such as next-year growth, and use the t+1 horizon.A predictor is significant alone but not in the full model.
Its effect was shared with a correlated predictor. Check the p-alone vs p-full columns in Auto-find and the VIFs; keep the theoretically justified variable.The page didn’t update after a new version.
Refresh the browser (add?v=today to the URL to bypass caching). Your data stays loaded within a session.Is my data uploaded anywhere?
No. All computation runs in your browser; files never leave your computer. The optional AI “Interpret” buttons send only summary labels/statistics (never your raw data) to generate the write-up.Can I handle a very large file (hundreds of MB)?
CSV loads fastest; large Excel files stream but may be slow. Export a subset (one year, or selected firms/variables) for interactive work.Good practice
- Transform first. Always remove the firm-size effect before interpreting correlations or coefficients.
- Association ≠ causation. Regression, moderation and mediation on observational panels describe associations, not proven mechanisms. Use lags (t+1), theory, and — where possible — natural experiments to support causal claims.
- Beware data dredging. Searching many predictors and models inflates false positives; confirm exploratory findings on theory or new data.
- Mind multicollinearity. Watch VIF; two near-identical predictors make individual coefficients unstable.
- Report your settings. Use Methods + settings and the full report so your analysis is reproducible.
- Not investment advice. FinGraph is a research and teaching tool.