Рассмотрев данную модель, можно прийти к выводу, что, несмотря на то, что кривая Лаффера действительно отражает зависимость поступлений в бюджет от величины налоговых ставок, применение её в «необработанном», теоретическом виде приведёт к отрицательному результату. Использовать её надо очень осторожно, делая поправку на конкретную экономическую ситуацию в стране и задумываясь о возможных последствиях.
Заключение
Проведя исследования зависимости поступлений в бюджет от величины налоговой ставки, можно сделать вывод, что поступления в бюджет за определённый период будут наибольшими не при максимальной, а для оптимальной для бюджета ставке налога, то есть с ростом налоговой ставки поступления в бюджет будут сперва увеличиваться, а затем уменьшатся.
Чем выше рентабельность предприятия, тем ярче выражена оптимальная ставка налогообложения, но с ростом рентабельности оптимальная ставка уменьшается, стремясь к фиксированной величине, на нашем графике, примерно, к 21 %.
Анализ результатов имитации будет неожиданным для стран с прогрессивным налогообложением сверхприбылей корпораций: нем выше рентабельность, тем выгоднее бюджету уменьшить ставку налога. Фирмы с низкой рентабельностью целесообразно облагать более высокими налогами. Разумеется, молодым фирмам необходим льготный период.
Закономерность, открытая американским экономистом Лаффером, действительно существует. Правительство тоже хотело бы снизить налоги, чтобы предприятиям оставалось больше денег на расширение производства.
Но беда в том, что при снижении налогов может потребоваться много месяцев (экономисты называют это время "лагом"), прежде чем такая операция скажется на уровне производства. Тут важно позаботиться о том, чтобы все связанные со снижением налогов работы проводились быстро и оперативно.
Но ослаблять налоговый пресс надо осторожно. При недоборе налогов государственный бюджет не сможет выполнять свои функции, государство вынуждено будет пойти на дополнительную денежную эмиссию, инфляция снова усилится и народное хозяйство попадет в заколдованный круг:
Дефицит бюджета - инфляция - сокращение производства - дефицит бюджета
Список используемой литературы
1. Гультяев А.К. Имитационное моделирование в среде Windows: Практическое руководство. – СПб.: КОРОНА принт, 2001. – 400 с.
2. Цисарь И.Ф., Нейман В.Г. Компьютерное моделирование экономики. – М.: Диалог-МИФИ, 2002. – 304 с.
3. Налоги: Учеб. пособие/Под ред. Д. Г. Черника. – 4-е изд, перераб и доп. – М.: Финансы и статистика, 1998. – 544 с.
4. Экономическая теория/Под ред. А.И. Добрынина, Л.С. Тарасевича, 3-е изд. – Спб: Питер, 2001. – 544 с.
5. Мировая экономика: Учебник/Под ред. проф. А.С. Булатова. – М.: Юристъ, 2001. – 734 с.
6. Борисов Е.Ф. Экономическая теория: Учебник. – М.: Юристъ, 1997. – 568 с.
7. Майбурд Е.М. Введение в историю экономической мысли. От пророков до профессоров. – 2-е изд., испр. и доп. – М.: Дело, 2000. – 560 с.
8. Емельянов А.А. и др. Имитационное моделирование экономических процессов: Учеб. пособие / А.А. Емельянов, Е.А. Власова, Р.В. Дума; Под ред. А.А. Емельянова. – М.: Финансы и статистика, 2002. – 368 с.
9. Говорухин В., Цибулин В. Компьютер в математическом исследовании. Учебный курс. – СПб.: Питер, 2001. – 624 с.
10. Замков О.О., Толстопятенко А.В., Черемных Ю.Н. Математические методы в экономике: Учебник. – М.: МГУ им М.В. Ломоносова, Издательство «ДИС», 1997. – 368 с.
Приложение 1. Исходный текст программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TeeProcs, TeEngine, Chart, StdCtrls, Buttons, ExtCtrls,Series;
type
TForm1 = class(TForm)
Panel1: TPanel;
lbedMinNalog: TLabeledEdit;
lbedStartCapital: TLabeledEdit;
lbedMaxRent: TLabeledEdit;
lbedMinRent: TLabeledEdit;
lbedStepRent: TLabeledEdit;
BitBtn1: TBitBtn;
lbedMinPeriod: TLabeledEdit;
Chart: TChart;
lbedMaxNalog: TLabeledEdit;
lbedStepNalog: TLabeledEdit;
lbedMaxPeriod: TLabeledEdit;
lbedStepPeriod: TLabeledEdit;
Timer1: TTimer;
procedure BitBtn1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure lbedMaxNalogKeyPress(Sender: TObject; var Key: Char);
private
MaxP,MinP,Period,StepP:Integer;
function Postupleniya(Nalog,Rentab,Capital:Double;years:integer):Double;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
function TForm1.Postupleniya(Nalog, Rentab, Capital: Double;
years: integer): Double;
var
Pribil,PribilVNalog,OstPribili,Kapital:Double;
begin
Result:=0.0;
while years>0 do
begin
dec(years);
Pribil:=Capital*Rentab/100;
PribilVNalog:=Pribil*Nalog/100;
OstPribili:=Pribil-PribilVNalog;
Capital:=Capital+OstPribili;
Result:=Result+PribilVNalog;
end;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
MinNalog,MaxNalog,StepNalog,Rent,DohodVBudget,
StavkaNaloga,NachKapital,MinRentab,
MaxRentab,StepRent:Double;
i:integer;
begin
for i:=0 to ComponentCount-1 do
if Components[i] is TLabeledEdit then
if TLabeledEdit(Components[i]).Text='' then
begin
Timer1.Enabled:=false;
Exit;
end;
MinNalog:=StrToFloat(lbedMinNalog.Text);
MaxNalog:=StrToFloat(lbedMaxNalog.Text);
StepNalog:=StrToFloat(lbedStepNalog.Text);
NachKapital:=StrToFloat(lbedStartCapital.Text);
MaxRentab:=StrToFloat(lbedMaxRent.Text);
MinRentab:=StrToFloat(lbedMinRent.Text);
StepRent:=StrToFloat(lbedStepRent.Text);
MinP:=StrToInt(lbedMinPeriod.Text);
MaxP:=StrToInt(lbedMaxPeriod.Text);
StepP:=StrToInt(lbedStepPeriod.Text);
Timer1.Enabled:=true;
with Chart do
begin
SeriesList.Clear;
Legend.LegendStyle:=lsSeries;
Title.Text.Strings[0]:=IntToStr(Period)+' лет';
Rent:=MinRentab;
while Rent<=MaxRentab do
begin
AddSeries(TLineSeries.Create(Self));
Series[SeriesCount-1].Title:=FloatToStr(Rent)+'%';
StavkaNaloga:=MinNalog;
while StavkaNaloga<=MaxNalog do
begin
DohodVBudget:=Postupleniya(StavkaNaloga,Rent,NachKapital,Period);
Series[SeriesCount-1].AddXY(StavkaNaloga,DohodVBudget,'');
StavkaNaloga:=StavkaNaloga+StepNalog;
end;
Rent:=Rent+StepRent;
end;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Period<=MaxP then
begin
Period:=Period+StepP;
BitBtn1Click(Self);
end
else
Period:=MinP;
end;
procedure TForm1.lbedMaxNalogKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then BitBtn1Click(Self);
if not(Key in ['0'..'9',#8,','])then Key:=#0;
end;
end.